Функция __libc_start_main
определена в libc.so
с сигнатурой функции ниже
void __libc_start_main( int (*main) (int, char * *, char * *),
int argc, char * * ubp_av,
void (*init) (void),
void (*fini) (void),
void (*rtld_fini) (void),
void (* stack_end));
При обычном использовании эта функция вызывается функцией _start
, определенной в C RunTime объект crt1.o
.
Вопросы:
- Можно ли назвать
__libc_start_main
в C коде?
Сложности:
- Я не смог найти способ определить значение последнего аргумента
stack_end
в C коде. Реализация crt1.o
находится в сборке, которая может определить stack_end
.
PS: Мне просто любопытно, можем ли мы вызвать __libc_start_main
в C коде.