|
|
cc [flag . . . ] file . . . -lelf [library] . . .#include <libelf.h>
Elf32_Phdr elf32_getphdr(Elf elf);
Elf32_Phdr elf32_newphdr(Elf elf, size_t count);
Elf64_Phdr elf64_getphdr(Elf elf);
Elf64_Phdr elf64_newphdr(Elf elf, size_t count);
elf32_newphdr allocates a new table with count entries, regardless of whether one existed previously, and sets the ELF_F_DIRTY bit for the table [see elf_flag(ELF)]. Specifying a zero count deletes an existing table. Note this behavior differs from that of elf32_newehdr [see elf_getehdr(ELF)], allowing a program to replace or delete the program header table, changing its size if necessary.
If no program header table exists, the file is not a 32-bit class file, an error occurs, or elf is null, both functions return a null pointer. Additionally, elf32_newphdr returns a null pointer if count is zero.
The table is an array of Elf32_Phdr structures, each of which includes the following members.
elf64_getphdr and elf64_newhdr provide the same functionality for 64-bit class files. The table is an array of Elf64_Phdr structures, each of which includes the following members.
Elf32_Word p_type; Elf32_Off p_offset; Elf32_Addr p_vaddr; Elf32_Addr p_paddr; Elf32_Word p_filesz; Elf32_Word p_memsz; Elf32_Word p_flags; Elf32_Word p_align;
Elf64_Word p_type; Elf64_Word p_flags; Elf64_Off p_offset; Elf64_Addr p_vaddr; Elf64_Addr p_paddr; Elf64_Xword p_filesz; Elf64_Xword p_memsz; Elf64_Xword p_align;
The
ELF
header's e_phnum
member tells how many entries
the program header table has [see
elf_getehdr(ELF)].
A program may inspect this value to determine the size
of an existing table;
elf32_newphdr and
elf64_newphdr
automatically set the member's value to
count.
If the program is building a new file, it is responsible
for creating the file's
ELF
header
before creating the program header table.