You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

32位/64位ELF符号大小是多少?如何解析?readelf与文档数值冲突该采信哪个

32位/64位架构ELF符号大小说明
  • 32位ELF的符号结构体Elf32_Sym标准实际存储大小为16字节,各字段长度加总刚好为16,无对齐填充。
  • 64位ELF的符号结构体Elf64_Sym标准实际存储大小为24字节(即你读取到的十六进制0x18),字段总长度加总为4+1+1+2+8+8=24,无对齐填充。

文档数值不符原因

你参考的Oracle文档给出的30字节是未考虑结构体对齐规则、且字段排序不符合实际存储布局的理论字段长度加总,并非ELF文件中实际存储的符号条目大小,属于文档的计算逻辑偏差。

ELF符号解析步骤

  • 第一步读取ELF文件头,确认当前文件是32位还是64位格式,获取节头表的偏移地址、节总数、节头大小三个参数。
  • 第二步遍历节头表,筛选出类型为SHT_SYMTAB(普通符号表)或SHT_DYNSYM(动态符号表)的节。
  • 第三步读取目标节头的sh_entsize字段,该值就是当前ELF文件中每个符号条目的实际存储大小。
  • 第四步根据节头的sh_offset字段定位到符号表在文件中的起始位置,每次读取sh_entsize长度的数据,按对应架构的符号结构体定义解析字段即可。

解析器开发采信规则

必须优先采信节头中读取到的sh_entsize值,禁止硬编码固定的符号大小。
节头的sh_entsize是ELF文件本身声明的条目实际大小,适配所有合法的ELF格式(包括平台扩展、自定义结构的ELF文件),硬编码固定值会导致特殊ELF文件解析失败。

内容的提问来源于stack exchange,提问作者stav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 14:15:00