【发布时间】:2020-03-21 20:01:19
【问题描述】:
函数__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 中定义。
问题:
- 是否可以在 C 代码中调用
__libc_start_main?
困难:
- 我找不到在 C 代码中确定最后一个参数
stack_end的值的方法。crt1.o的实现是在汇编中,可以确定stack_end。
PS:我只是好奇我们是否能够在 C 代码中调用 __libc_start_main。
【问题讨论】: