gnu - 在检查节标题时,readelf 显示的列的含义是什么?

标签 gnu readelf

有人可以解释一下这些列的含义吗?
我使用 readelf 读取一个 ELF 文件,但找不到任何关于节标题列的相关信息(例如 objdump)。

例如什么是“ES”、“Lk”和“信息”?
“Flg”中所有可用的标志是什么?
“Al”意味着对齐?

Section Headers:
  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al
  [ 0]                   NULL            00000000 000000 000000 00      0   0  0
  [ 1] .data             PROGBITS        3ffe8000 000120 0004fa 00  WA  0   0 16
  [ 2] .rodata           PROGBITS        3ffe8500 000620 000ea4 00   A  0   0 16
  [ 3] .bss              NOBITS          3ffe93a8 0014c8 0089d0 00  WA  0   0 16
...
...

提前致谢

最佳答案

这是 System V Application Binary Interface 的链接定义节标题的位置:

typedef struct {
    Elf64_Word  sh_name;
    Elf64_Word  sh_type;
    Elf64_Xword sh_flags;
    Elf64_Addr  sh_addr;
    Elf64_Off   sh_offset;
    Elf64_Xword sh_size;
    Elf64_Word  sh_link;
    Elf64_Word  sh_info;
    Elf64_Xword sh_addralign;
    Elf64_Xword sh_entsize;
} Elf64_Shdr;

es 实际上是 sh_entsize,它指定了 header 包含的条目的大小(例如:SHT_SYMTAB 的符号大小和SHT_DYNSYN 节)

lksh_linkinfosh_info,它们的含义取决于section类型 (例如:sh_link 包含部分 header 索引以及 SHT_SYMTABSHT_DYNSYN 部分的相关字符串表,sh_info 通常也是只是头表索引)

这些是标准定义的标志:

SHF_WRITE             0x1
SHF_ALLOC             0x2
SHF_EXECINSTR         0x4
SHF_MERGE             0x10
SHF_STRINGS           0x20
SHF_INFO_LINK         0x40
SHF_LINK_ORDER        0x80
SHF_OS_NONCONFORMING  0x100
SHF_GROUP             0x200
SHF_TLS               0x400
SHF_COMPRESSED        0x800

正如您所写的那样,alsh_align

如果您想要结构的精确描述,请查看链接。

关于gnu - 在检查节标题时,readelf 显示的列的含义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56935718/

相关文章:

gnu - 我必须为 GNU libc 扩展 tdestroy 链接哪个库

gnu - configure.ac 指定所有构建文件的文件夹

debugging - 从可执行文件中提取结构定义

linux - 纳米与 "readelf -s"

compiler-construction - ELF文件中的“节到段映射”存储在哪里?

gcc - ld : file not found: elf_i386 error on Mac Terminal

makefile - 为什么 .SECONDARY 不适用于模式 (%) 而 .PRECIOUS 可以?

c++ - OpenCL——不同设备上的不同内核 "printf()"结果?

c++ - 为什么我的简单 `main` 程序的 ELF header 说它是 `DYN (Shared object file)` 而不是可执行文件?

c - Sprite 。隐藏已链接 DSO 的导出符号