---
name: "gelf_newphdr"
section: "3"
platform: "linux"
package: "libelf"
version: "0.197-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "freebsd"]
url: "https://new.carta.tech/gelf_newphdr"
---

# gelf\_newphdr(3)

allocate and initialize a new program header table

## NAME

gelf\_newphdr - allocate and initialize a new program header table

## SYNOPSIS

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

## DESCRIPTION

**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.

## PARAMETERS

- *elf*

  Pointer to an ELF descriptor of kind **ELF\_K\_ELF**.

- *phnum*

  Number of entries in the new program header table.  If zero, any existing program header table is removed.

## RETURN VALUE

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.

## SEE ALSO

[**gelf\_getphdr**(3)](/gelf_getphdr/3.md), [**gelf\_update\_phdr**(3)](/gelf_update_phdr/3.md), [**libelf**(3)](/libelf/3.md), [**elf**(5)](/elf/5.md)

## ATTRIBUTES

| | | |
| --- | --- | --- |
| **Interface** | **Attribute** | **Value** |
| **gelf\_newphdr**() | Thread safety | MT-Safe |

## REPORTING BUGS

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