私が知っているように、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
、セグメントに名前がないように、フィールドはセグメントを識別するのに十分ですか?