本文主要是介绍[ELF文件] 可重定位的目标文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目标文件
下面用 readelf 工具读出目标文件 max.o 的 ELF Header 和 Section Header Table,然后我们逐段分析。
[test@localhost Assembler]$ readelf -a largest.o
ELF 头:Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 Class: ELF64Data: 2's complement, little endianVersion: 1 (current)OS/ABI: UNIX - System VABI Version: 0Type: REL (可重定位文件)Machine: Advanced Micro Devices X86-64Version: 0x1入口点地址: 0x0程序头起点: 0 (bytes into file)Start of section headers: 496 (bytes into file)标志: 0x0本头的大小: 64 (字节)程序头大小: 0 (字节)Number of program headers: 0节头大小: 64 (字节)节头数量: 8字符串表索引节头: 5...
ELF Header 中描述了操作系统是 UNIX,体系结构是 Advanced Micro Devices X86-64。Section Header Table 中有 8 个 Section Header,从文件地址 496(0x1f0) 开始,每个 Section Header 占 64 字节,共 512 字节,到文件地址 0x3f0 结束。这个目标文件没有 Program Header。文件地址是这样定义的:文件开头第一个字节的地址是 0 ,然后每个字节占一个地址。
...
节头:[Nr] Name Type Address OffsetSize EntSize Flags Link Info Align[ 0] NULL 0000000000000000 000000000000000000000000 0000000000000000 0 0 0[ 1] .text PROGBITS 0000000000000000 00000040000000000000002d 0000000000000000 AX 0 0 1[ 2] .rela.text RELA 0000000000000000 000001c00000000000000030 0000000000000018 I 6 1 8[ 3] .data PROGBITS 0000000000000000 0000006d0000000000000038 0000000000000000 WA 0 0 1[ 4] .bss NOBITS 0000000000000000 000000a50000000000000000 0000000000000000 WA 0 0 1[ 5] .shstrtab STRTAB 0000000000000000 000000a50000000000000031 0000000000000000 0 0 1[ 6] .symtab SYMTAB 0000000000000000 000000d800000000000000c0 0000000000000018 7 7 8[ 7] .strtab STRTAB 0000000000000000 000001980000000000000028 0000000000000000 0 0 1
Key to Flags:W (write), A (alloc), X (execute), M (merge), S (strings), l (large)I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)O (extra OS
这篇关于[ELF文件] 可重定位的目标文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!