---
name: "elf32_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/elf32_newphdr"
---

# elf32\_newphdr(3)

create a new program header table for a 32-bit or 64-bit ELF object file

## NAME

elf32\_newphdr, elf64\_newphdr - create a new program header table for a 32-bit or 64-bit ELF object file

## SYNOPSIS

```
#include <libelf.h>
Elf32_Phdr *elf32_newphdr(Elf *elf, size_t count);
Elf64_Phdr *elf64_newphdr(Elf *elf, size_t count);
```

## DESCRIPTION

Create a new program header table for the ELF object file referred to by *elf*. The number of entries in the new program header table is specified by *count*. A *count* of zero removes the existing program header table.

The function allocates a new array of **Elf32\_Phdr** and makes it the program header table for *elf*. The new program header contents are set to zero and any previous program header table is discarded.  An ELF header must exist before creating a program header table.

## PARAMETERS

- *elf*

  Pointer to the ELF object for which a new program header table is to be created.

- *count*

  The number of entries in the new program header table. A count of zero removes the existing program header table.

## RETURN VALUE

On success, return a pointer to the first **Elf32\_Phdr** in the newly created program header table.  If *elf* is NULL then return NULL.  If an error occurs, return NULL and set a libelf error code.

## SEE ALSO

[**elf32\_newehdr**(3)](/elf32_newehdr/3.md), [**elf\_errno**(3)](/elf_errno/3.md), [**libelf**(3)](/libelf/3.md), [**elf**(5)](/elf/5.md)

## ATTRIBUTES

For an explanation of the terms used in this section, see [**attributes**(7)](/attributes/7.md).

| | | |
| --- | --- | --- |
| **Interface** | **Attribute** | **Value** |
| **elf32\_newphdr**(), **elf64\_newphdr**() | Thread safety | MT-Safe |

## REPORTING BUGS

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