__gmon_start在_start之前执行
__gmon_start is executed before _start
当我用 gdb
分析 /usr/bin/diff
时,我发现由于某种原因 __gmon_start__
在 _start
之前被调用。到目前为止,我找到的每份文档都声称 _start
是程序的入口点;而ELF头中的entry point字段也指向_start
.
的地址
为什么diff
不开始执行_start
;这些信息保存在哪里?
Every document I have found so far has been claiming that _start is the entry point of a program
对于完全静态的可执行文件,这是正确的。
对于动态链接的可执行文件,user-space 执行从加载程序的 _start
符号开始(ld.so
),通常有 10 几千条指令和在 a.out
.
中加载程序调用 _start
之前执行的许多系统调用
在 a.out
中到达 _start
的过程中,可以调用主可执行文件中的函数(这就是您所观察到的)。
当我用 gdb
分析 /usr/bin/diff
时,我发现由于某种原因 __gmon_start__
在 _start
之前被调用。到目前为止,我找到的每份文档都声称 _start
是程序的入口点;而ELF头中的entry point字段也指向_start
.
为什么diff
不开始执行_start
;这些信息保存在哪里?
Every document I have found so far has been claiming that _start is the entry point of a program
对于完全静态的可执行文件,这是正确的。
对于动态链接的可执行文件,user-space 执行从加载程序的 _start
符号开始(ld.so
),通常有 10 几千条指令和在 a.out
.
_start
之前执行的许多系统调用
在 a.out
中到达 _start
的过程中,可以调用主可执行文件中的函数(这就是您所观察到的)。