linux环境下c语言编译、运行的底层工作原理(3)

linux环境下c语言编译、运行的底层工作原理(3)

ID:14924686

大小:3.21 MB

页数:8页

时间:2018-07-31

linux环境下c语言编译、运行的底层工作原理(3)_第1页
linux环境下c语言编译、运行的底层工作原理(3)_第2页
linux环境下c语言编译、运行的底层工作原理(3)_第3页
linux环境下c语言编译、运行的底层工作原理(3)_第4页
linux环境下c语言编译、运行的底层工作原理(3)_第5页
资源描述:

《linux环境下c语言编译、运行的底层工作原理(3)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Linux环境下C语言编译、运行的底层工作原理(3)借助readelf工具和hexdump工具查看目标文件的详细内容图1linux环境下源代码、汇编代码、目标文件和可执行文件之间的关系图1反应的是linux环境下源代码(.c)、汇编代码(.s)、目标文件(.o)和可执行文件(.out)之间的关系。本文中,我们将要借助readelf工具和hexdump工具来查看目标文件的详细内容,因此要通过gcc-c命令生成print_address.o目标文件。由以上信息不难发现:1.ELFHeader的起始文件地

2、址是0,大小是64Bytes。由于文件开头第一字节的地址定义为0,因此ELFHeader的文件地址范围是0x00~0x3f。2.SectionHeaderTable在文件中的起始位置是752,SectionHeaderTable中有13个表项,每个表项占64bytes,13个表项共占832bytes(832=0x340)。因此SectionHeaderTable对应的文件地址范围是0x2f0~0x62f。将上面截取的13个表项相关信息进行整理,注意Offset项对应起始文件地址,Size也就是sec

3、tion的size。整理后可以得到表1:表1各个section及其对应的文件地址范围Section或Header文件地址范围SizeELFHeader0x00~0x3f0x40.text0x40~0x12b0xec.data0x12c0.bss0x12c~0x1330x08.rodata0x12c~0x1e50xba.en_frame0x1e8~0x25f0x78.comment0x260~0x28d0x2e.note.GNU-stack0x28e0.shstrtab0x28e~0x2ee0x61S

4、ectionHeaderTable0x2f0~0x62f0x340.symtab0x630~0x7c70x198.strtab0x7c8~0x8370x70.rela.text0x838~0xabf0x288.rela.en_frame0xac0~0xb070x48表1中有几个相邻的section之间首位地址不衔接。例如.rodata的尾地址是0x1e5,但临近的下一个section即.en_frame这个section的首地址并不是预期的0x1e6而是0x1e8。这里要看表项中的最后一个Align

5、,有点类似内存对其的概念。.en_frame的Align值是8,这个section对应的地址必须是8的整数倍。因此.en_frame的起始文件地址是0x1e8而不是0x1e6。接下来我们用hexdump工具查看目标文件(.o)的具体内容。ELFHeader,可以与readelf工具反馈的ELFHeader信息对照着看。[lirenjie@localhost~]$hexdump-Cprint_address.o000000007f454c46020101000000000000000000

6、.ELF.

7、...........

8、0000001001003e00010000000000000000000000

9、..>.............

10、000000200000000000000000f002000000000000

11、................

12、000000300000000040000000000040000d000a00

13、....@.....@.....

14、00000040554889e54883ec10488d75fcbf000000

15、UH..H...H.u.....

16、00000050

17、00b800000000e800000000be00000000

18、................

19、00000060bf00000000b800000000e800000000c9

20、................

21、00000070c3554889e54883ec10488d75fcbf0000

22、.UH..H...H.u....

23、000000800000b800000000e800000000c9c35548

24、..............UH

25、0000009089e54883ec10be000000

26、00bf00000000

27、..H.............

28、000000a0b800000000e800000000be00000000bf

29、................

30、000000b000000000b800000000e800000000be00

31、................

32、.text000000c0000000bf00000000b800000000e80000

33、................

34、000000d00000be00000000bf000

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。