GELF_NEWPHDR(3) Libelf Programmer's Manual GELF_NEWPHDR(3)

gelf_newphdr - allocate and initialize a new program header table

#include <gelf.h>
void *gelf_newphdr(Elf *elf, size_t phnum);

gelf_newphdr() creates a new program header table with phnum entries for the ELF descriptor elf, zeroing all entries. If a program header table already exists for elf, it is discarded. If phnum is zero, any existing program header table is removed.

This array is maintained within the ELF descriptor and must not be freed directly. After calling gelf_newphdr(), any previously obtained program header pointers for the same descriptor become invalid. An ELF header must exist before creating a program header table.

Pointer to an ELF descriptor of kind ELF_K_ELF.
Number of entries in the new program header table. If zero, any existing program header table is removed.

On success, returns a non-NULL void pointer to the new program header table. The new program header table can be retrieved as a GElf_Phdr * using gelf_getphdr(). elf32_getphdr() or elf64_getphdr() can also be used depending on the class of elf. If phnum is 0, then any existing program header table is removed and NULL is returned. On failure, NULL is returned and elf_errno is set. If elf is NULL, then NULL is returned without setting elf_errno.

Other libelf implementations of gelf_newphdr() may use a different return type.

gelf_getphdr(3), gelf_update_phdr(3), libelf(3), elf(5)

Interface Attribute Value
gelf_newphdr () Thread safety MT-Safe

Report bugs to <elfutils-devel@sourceware.org> or https://sourceware.org/bugzilla/.

2025-09-23 Libelf