据我所知,一个 ELF 对象由许多段组成,每个段都有一个描述该段的相应程序头。在libelf
中,程序头定义为Elf64_Phdr
(或Elf32_Phdr
)结构,Elf64_Phdr
结构定义如下:
typedef struct {
Elf32_Word p_type; /* Segment type */
Elf32_Off p_offset; /* Segment file offset */
Elf32_Addr p_vaddr; /* Segment virtual address */
Elf32_Addr p_paddr; /* Segment physical address */
Elf32_Word p_filesz; /* Segment size in file */
Elf32_Word p_memsz; /* Segment size in memory */
Elf32_Word p_flags; /* Segment flags */
Elf32_Word p_align; /* Segment alignment */
} Elf32_Phdr;
但是,段有名称(不是吗?),Elf64_Phdr
结构没有指向其相应名称的字段。那么,如何从对应的程序头中获取ELF文件的一段名称呢?或者该p_type
字段是否足以识别一个段,因此段没有名称?