当我使用/usr/bin/diff
分析gdb
时,由于某种原因,我发现__gmon_start__
之前正在调用_start
。到目前为止,我发现的每份文件都声称_start
是一个程序的切入点;并且ELF标题中的入口点字段也指向_start
的地址。
为什么diff
无法使用_start
开始执行;那些信息在哪里举行?
答案 0 :(得分:2)
到目前为止,我发现的每一份文件都声称_start是程序的切入点
对于完全静态的可执行文件,这是真的。
对于动态链接的可执行文件,用户空间执行从加载器的_start
符号开始(ld.so
),并且通常会有数千条指令和许多系统调用在执行之前执行。加载程序在_start
。{/ p>中调用a.out
在_start
中访问a.out
的过程中,可以调用主可执行文件中的函数(这就是您正在观察的内容)。