linux - 如何使用 `Elf64_Phdr`程序头获取段的​​名称?

标签 linux elf

据我所知,一个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 字段是否足以识别段,因此段没有名称?

最佳答案

However, segments have names (don't they?)

不,他们没有。

Or is the p_type field enough to identify a segment, so that segments don't have names?

正确。

关于linux - 如何使用 `Elf64_Phdr`程序头获取段的​​名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13405774/

相关文章:

regex - 如何使用awk忽略空行和注释行

c - 32位x86代码是否需要专门为共享库文件进行PIC编译?

C++构造函数问题(linux)

linux - Linux 内核(3.4.34)在 nat 设备上打开端口?

c++ - 在 .c 文件中使用 Linux 中的 msgget 创建消息队列接收函数未实现错误

c - 在 C 中写入 Linux sysfs 节点

php - 打开 Yii 应用程序导致下载 index.php

embedded - 为基于 ARM 的嵌入式系统创建 coredump

linux - 强制 GNU 链接器生成 32 位 ELF 可执行文件

c - ELF 二进制分析静态与动态。汇编代码如何|指令内存映射变化?