符号表表头
Linux 中使用指令查看完整读取elf文件
readelf -a example.elf
Num: Value Size Type Bind Vis Ndx Name
代表含义
Num 符号编号
Value 符号值,取决于上下文
Size 符号值
Type 符号类型,例如函数、对象、文件(源文件名称)、节(内存节)或未指定类型的绝对符号或未定义。
Bind 绑定属性,定义了符号的可见性和链接行为。例如,全局绑定意味着符号在所有文件中都可见,局部绑定仅在定义它的文件内可见,弱绑定类似于全局绑定,但符号可以被覆盖。
Vis 符号可见性,可以是默认、受保护、隐藏或内部。
Ndx 符号定义所在的节头表索引。ABS表示绝对值:不调整任何节地址的重定位
Name 符号名称。
符号类型包括:
STT_NOTYPE:未指定类型的符号。
STT_OBJECT:数据对象,例如变量或数组等。
STT_FUNC:函数或其他可执行代码。
STT_SECTION:与节相关的符号,通常是节的名称。
STT_FILE:源文件名称。
绑定属性
定义了符号的可见性和链接行为,包括:
STB_LOCAL:局部符号,仅在定义它的目标文件内可见。
STB_GLOBAL:全局符号,在所有目标文件中可见。
STB_WEAK:弱符号,在全局符号和局部符号之间。
符号可见性
定义了符号在目标文件外部的可见性,包括:
STV_DEFAULT:默认可见性,与全局和弱符号相关联。
STV_INTERNAL:仅供内部使用,不应在目标文件外部可见。
STV_HIDDEN:不可在目标文件外部引用,但可以通过动态链接器访问。
STV_PROTECTED:不可在共享库外部预先绑定,但可以通过动态链接器访问。