我使用-m32 -nostdlib
编译了这个程序,生成了一个ELF可执行文件:
void _start() {}
当我运行 readelf -l
命令时,惊讶地发现 LOAD 段的偏移量为 0x000000,这意味着可执行文件头将与文本段同时加载到内存中。于是我使用 GDB 进行了核实,发现确实如此。
(gdb) b _start
Breakpoint 1 at 0x8048083
(gdb) r
Starting program: /home/tbodt/ish/build/a.out
Breakpoint 1, 0x08048083 in _start ()
(gdb) x/4c 0x08048000
0x8048000: 127 '\177' 69 'E' 76 'L' 70 'F'
这有何用处?