home.social

#execve — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #execve, aggregated by home.social.

  1. Как программа попадает в память: от execve до main

    Вы когда-нибудь задумывались, что происходит после того, как вы нажимаете Enter в терминале Linux? Вводите ./myprogram и... Что именно происходит дальше? Как ядро находит файл? Как загружает его в память? Кто вызывает main ? И как на всё это посмотреть вживую? Разберемся на примере пустой программы empty_sleep . Она ничего не делает, просто запускается и завершается через 30 секунд. В ней нет лишнего кода и мы сможем сосредоточиться только на процессе загрузки. Всё, что мы увидим, относится к большинству динамически скомпилированных программ в Linux. В этой статье покажу как с помощью strace в реальном времени проследить путь программы от execve до _start и main .

    habr.com/ru/articles/1036444/

    #Linux #strace #ELF #загрузка_программ #системные_вызовы #execve #mmap #анализ_файлов #компоновщик

  2. Как программа попадает в память: от execve до main

    Вы когда-нибудь задумывались, что происходит после того, как вы нажимаете Enter в терминале Linux? Вводите ./myprogram и... Что именно происходит дальше? Как ядро находит файл? Как загружает его в память? Кто вызывает main ? И как на всё это посмотреть вживую? Разберемся на примере пустой программы empty_sleep . Она ничего не делает, просто запускается и завершается через 30 секунд. В ней нет лишнего кода и мы сможем сосредоточиться только на процессе загрузки. Всё, что мы увидим, относится к большинству динамически скомпилированных программ в Linux. В этой статье покажу как с помощью strace в реальном времени проследить путь программы от execve до _start и main .

    habr.com/ru/articles/1036444/

    #Linux #strace #ELF #загрузка_программ #системные_вызовы #execve #mmap #анализ_файлов #компоновщик

  3. Как программа попадает в память: от execve до main

    Вы когда-нибудь задумывались, что происходит после того, как вы нажимаете Enter в терминале Linux? Вводите ./myprogram и... Что именно происходит дальше? Как ядро находит файл? Как загружает его в память? Кто вызывает main ? И как на всё это посмотреть вживую? Разберемся на примере пустой программы empty_sleep . Она ничего не делает, просто запускается и завершается через 30 секунд. В ней нет лишнего кода и мы сможем сосредоточиться только на процессе загрузки. Всё, что мы увидим, относится к большинству динамически скомпилированных программ в Linux. В этой статье покажу как с помощью strace в реальном времени проследить путь программы от execve до _start и main .

    habr.com/ru/articles/1036444/

    #Linux #strace #ELF #загрузка_программ #системные_вызовы #execve #mmap #анализ_файлов #компоновщик

  4. Как программа попадает в память: от execve до main

    Вы когда-нибудь задумывались, что происходит после того, как вы нажимаете Enter в терминале Linux? Вводите ./myprogram и... Что именно происходит дальше? Как ядро находит файл? Как загружает его в память? Кто вызывает main ? И как на всё это посмотреть вживую? Разберемся на примере пустой программы empty_sleep . Она ничего не делает, просто запускается и завершается через 30 секунд. В ней нет лишнего кода и мы сможем сосредоточиться только на процессе загрузки. Всё, что мы увидим, относится к большинству динамически скомпилированных программ в Linux. В этой статье покажу как с помощью strace в реальном времени проследить путь программы от execve до _start и main .

    habr.com/ru/articles/1036444/

    #Linux #strace #ELF #загрузка_программ #системные_вызовы #execve #mmap #анализ_файлов #компоновщик

  5. Upcoming features for #tracexec

    #Exec backtrace and jump to parent

    In next release, the #TUI will support gathering the exec #backtrace of any exec event, which will greatly simply debugging experience.

    The exec backtrace shows the history of a specific event and indicates any ancestor spawns or directly tears itself down and becomes the new process.

    Jump to parent is a lighter alternative to backtrace, where you just press `U` to jump to the parent exec evt.

    #Linux #eBPF #ptrace #execve

  6. Upcoming features for #tracexec

    #Exec backtrace and jump to parent

    In next release, the #TUI will support gathering the exec #backtrace of any exec event, which will greatly simply debugging experience.

    The exec backtrace shows the history of a specific event and indicates any ancestor spawns or directly tears itself down and becomes the new process.

    Jump to parent is a lighter alternative to backtrace, where you just press `U` to jump to the parent exec evt.

    #Linux #eBPF #ptrace #execve

  7. tracexec 0.11.0 released with new timestamp feature and O_CLOEXEC file descriptors are now hidden by default.

    #eBPF #linux #ptrace #exec #execve #trace

    github.com/kxxt/tracexec/relea

  8. tracexec 0.11.0 released with new timestamp feature and O_CLOEXEC file descriptors are now hidden by default.

    #eBPF #linux #ptrace #exec #execve #trace

    github.com/kxxt/tracexec/relea

  9. tracexec 0.11.0 released with new timestamp feature and O_CLOEXEC file descriptors are now hidden by default.

    #eBPF #linux #ptrace #exec #execve #trace

    github.com/kxxt/tracexec/relea

  10. tracexec 0.11.0 released with new timestamp feature and O_CLOEXEC file descriptors are now hidden by default.

    #eBPF #linux #ptrace #exec #execve #trace

    github.com/kxxt/tracexec/relea

  11. tracexec 0.11.0 released with new timestamp feature and O_CLOEXEC file descriptors are now hidden by default.

    #eBPF #linux #ptrace #exec #execve #trace

    github.com/kxxt/tracexec/relea

  12. @cks

    Yes, you might find versions of getopt.c around the place that have an

    if (argc < 1)

    check. Not this one in the current source code for GCC, though:

    github.com/gcc-mirror/gcc/blob

    #Unix #C #execve #POSIX

  13. @cks

    Yes, you might find versions of getopt.c around the place that have an

    if (argc < 1)

    check. Not this one in the current source code for GCC, though:

    github.com/gcc-mirror/gcc/blob

    #Unix #C #execve #POSIX

  14. @cks

    Yes, you might find versions of getopt.c around the place that have an

    if (argc < 1)

    check. Not this one in the current source code for GCC, though:

    github.com/gcc-mirror/gcc/blob

    #Unix #C #execve #POSIX

  15. @cks

    Psst!

    The buggy test program that blocked the EINVAL fix in Linux still has the bug today, two years later.

    git.kernel.org/pub/scm/fs/xfs/

    Amusingly, the subordinate program is a copy of the same program, and it starts by calling getopt_long_only(), one of whose earliest actions is:

    optind = 1; /* Don't scan ARGV[0], the program name. */

    followed closely by:

    if (optind != argc && !strcmp (argv[optind], "--"))

    argc is 0 at this point.

    #Unix #C #execve #POSIX

  16. @cks

    Psst!

    The buggy test program that blocked the EINVAL fix in Linux still has the bug today, two years later.

    git.kernel.org/pub/scm/fs/xfs/

    Amusingly, the subordinate program is a copy of the same program, and it starts by calling getopt_long_only(), one of whose earliest actions is:

    optind = 1; /* Don't scan ARGV[0], the program name. */

    followed closely by:

    if (optind != argc && !strcmp (argv[optind], "--"))

    argc is 0 at this point.

    #Unix #C #execve #POSIX

  17. @cks

    Psst!

    The buggy test program that blocked the EINVAL fix in Linux still has the bug today, two years later.

    git.kernel.org/pub/scm/fs/xfs/

    Amusingly, the subordinate program is a copy of the same program, and it starts by calling getopt_long_only(), one of whose earliest actions is:

    optind = 1; /* Don't scan ARGV[0], the program name. */

    followed closely by:

    if (optind != argc && !strcmp (argv[optind], "--"))

    argc is 0 at this point.

    #Unix #C #execve #POSIX