【发布时间】:2014-11-15 19:15:11
【问题描述】:
我正在阅读有关 ELF 文件格式的内容,我注意到一个用 C++ 编写的小型 hello world 测试程序在 _start 符号中包含一些额外的初始化:
0000000000400770 <_start>:
...
40077f: 49 c7 c0 60 09 40 00 mov $0x400960,%r8
400786: 48 c7 c1 f0 08 40 00 mov $0x4008f0,%rcx
40078d: 48 c7 c7 5d 08 40 00 mov $0x40085d,%rdi
...
40077f 是__libc_csu_fini。
4008f0 是__libc_csu_init。
40085d 是main。
不应该只是_start 到main 吗?为什么不?如果我只是删除了对40077f 和40008f0 的两个调用并替换为nop 会发生什么?基本上,需要libc有什么意义?
【问题讨论】: