比如类型为 STT_FILE 的 Symbol。 当st_shndx = SHN_COMMON:该 Symbol 标记的是一个还没分配的公共块,st_value 表示对齐约束,即(连接编辑器为这个 Symbol 分配的地址 % st_value = 0),而 st_size(Symbol 的大小)则表示该 Symbol 至少需要多少字节。 当st_shndx = SHN_UNDEF:表示当前对象文件引用了该 ...
Symbol table readelf -s l1.elf 字符串+符号表,符号表中包含了程序中各种符号(函数、变量和标签等),以便链接器和调试器等工具能够定位和处理这些符号。也就是某个函数或者全局变量对应于内存的哪个地址。 Num符号的惟一标识号 Value符号的地址或值 对于函数或变量,表示符号在内存中的地址或偏移量 对于某些特殊变量...
.symtab,存放symbol描述信息的table,这个table会引用.strtab,里面的st_name表示这个symbol name string在strtab里的offset 获取elf文件类型 elf文件类型有DYN (Shared object file)、EXEC(executable file)等 使用readelf -h查看elf file header,例如如下一个efl是DYN(Shared object file) ELF Header: Magic: 7f 45 ...
example% elffile -s detail libCstd.a libCstd.a: current ar archive, 32-bit symbol table libCstd.a(bitset.o): ELF 64-bit LSB relocatable AMD64 Version 1 [CMOV] libCstd.a(complex.o): ELF 64-bit LSB relocatable AMD64 Version 1 [SSE2 SSE CMOV FPU] libCstd.a(limits.o): ELF 64...
Start of section headers: 3072 (bytes into file) Flags: 0x0 Size of this header: 64 (bytes) Size of program headers: 56 (bytes) Number of program headers: 8 Size of section headers: 64 (bytes) Number of section headers: 31 Section header string table index: 28 ...
/* This info is needed when parsing the symbol table */ #define STB_LOCAL 0 #define STB_GLOBAL 1 #define STB_WEAK 2 #define STT_NOTYPE 0 #define STT_OBJECT 1 #define STT_FUNC 2 #define STT_SECTION 3 #define STT_FILE 4 #define STT_COMMON 5 ...
Symbol table '.symtab' contains 16 entries: Num: Value Size Type Bind Vis Ndx Name 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND 1: 0000000000000000 0 FILE LOCAL DEFAULT ABS hello_world.c 2: 0000000000000000 0 SECTION LOCAL DEFAULT 1 ...
ELF 文件头(File Header):位于文件最开始,包含了整个文件的结构信息,例如是ELF 幻数,是哪种 ELF 文件,程序头表、节头表的地址等。 程序头表(Program Header Table):描述了所有段的信息 节头表(Section Header Table):描述了所有节的信息 本文不会解释结构体每个元素,而是利用 readelf 工具解读。如果需要详细到...
ELF文件的结构 在ELF文件格式规范中,ELF文件被统称为Object file,这与我们通常理解的“.o”文件不同。为与规范保持一致,因此当提到目标文件时,即指各种类型的ELF文件。对于“.o”文件,我们则直接称为可重定位文件,由于这类文件包含了代码和数据,可以被用于链接成可执行文件或者共享目标文件,这里将通过分析这...
源代码和Makefile如下: ¶ELF 文件类型 ELF将文件分为4类,下表对比了不同类型之间的差异。 编译器、汇编器和链接器将ELF文件看作是Section header table描述的一系列逻辑区段(section)的集合;加载器将ELF文件看作是Program header table描述的一系列段(segment)的集合。一个段通常由多个区段组合。可重定位文件...