#define ELF_ST_BIND(x) ((x) >> 4) #define ELF_ST_TYPE(x) (((unsigned int) x) & 0xf) #define ELF32_ST_BIND(x) ELF_ST_BIND(x) #define ELF32_ST_TYPE(x) ELF_ST_TYPE(x) #define ELF64_ST_BIND(x) ELF_ST_BIND(x) #define ELF64_ST_TYPE(x) ELF_ST_TYPE(x) typedef s...
unsigned char st_other; //该成员当前包含 0,其含义没有定义。 Elf32_Half st_shndx; //给出相关的节区头部表索引。某些索引具有特殊含义。 } Elf32_sym; 2.5.1 st_info st_info 中包含符号类型和绑定信息,操纵方式如: #define ELF32_ST_BIND(i) ((i)>>4) #define ELF32_ST_TYPE(i) ((i)...
ELF32_ST_BIND(info)或者 ELF64_ST_BIND(info):从 st_info 值中提取出一个绑定。 ELF32_ST_TYPE(info)或者 ELF64_ST_TYPE(info):从 st_info 值中提取类型。 ELF32_ST_TYPE(bind,type)或者ELF64_ST_INFO(bind,type): 将一个绑定和类型转换成st_info值。 4. -l 指令 program头信息。 程序头表与...
if (ELF32_ST_BIND(s->st_info) != STB_WEAK) { DL_ERR("cannot locate symbol \"%s\" referenced by \"%s\"...", sym_name, si->name); return -1; } ... } else { /* We got a definition. */ sym_addr = (unsigned)(s->st_value + offset); } count_relocation(kRelocSymbol)...
st_name符号名,符号名称在字符串表中的索引 st_value符号相应的值,可能是地址或一个绝对值数 st_size符号大小 st_info符号类型和绑定值 st_other默认0 st_shndx符号所在的段 st_info 高4位表示符号绑定信息,低4位表示符号类型。 Symbol Binding, ELF32_ST_BIND ...
st_info 符号的类型和属性,高4bit标识了符号绑定(symbol binding), 低4bit标识了符号类型(symbol type),组成符号信息(symbol information) 有3个宏分别读取这三个属性值 /* How to extract and insert information held in the st_info field. */ #define ELF32_ST_BIND(val) (((unsigned char) (val))...
if(ELF_ST_BIND(psym->st_info)==STB_LOCAL&§ion!=NULL&&si>=section->sh_info/* Irix 5 and 6 MIPS binaries are known to ignore this requirement. */&&filedata->file_header.e_machine!=EM_MIPS/* Solaris binaries have been found to violate this requirement aswell. Not sure if this is...
在可执行文件和共享对象文件中,st_value保存一个虚拟地址。 为了使这些文件的符号对动态链接器更有用,节偏移(文件解释)让位于与节号无关的虚拟地址(内存解释)。 st_size:符号的大小,具体指为sizeof(instance),如果未知则为0; st_info:指定符号的类型和绑定属性。可以用下面的代码分别解析出bind,type,info三个...
ELF32_ST_BIND 的取值说明如下: 名称取值说明 STB_LOCAL0局部符号在包含该符号定义的目标文件以外不可见。相同名称的局部符号可以存在于多个文件中,互不影响。 STB_GLOBAL1全局符号对所有将组合的目标文件都是可见的。一个文件中对某个全局符号的定义将满足另一个文件对相同全局符号的 未定义引用。
ELF32_ST_BIND(info)或者ELF64_ST_BIND(info):从 st_info 值中提取出一个绑定。 ELF32_ST_TYPE(info)或者ELF64_ST_TYPE(info):从 st_info 值中提取类型。 ELF32_ST_TYPE(bind,type)或者ELF64_ST_INFO(bind,type):将一个绑定和类型转换成 st_info 值。