---
name: "gelf_update_phdr"
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_update_phdr"
---

# gelf\_update\_phdr(3)

copy a class-independent program header table entry into an ELF descriptor

## NAME

gelf\_update\_phdr - copy a class-independent program header table entry into an ELF descriptor

## SYNOPSIS

```
#include <gelf.h>
int gelf_update_phdr (Elf *elf, int ndx, GElf_Phdr *src);
```

## DESCRIPTION

**gelf\_update\_phdr**() copies the class-independent program header table entry from the structure pointed to by *src* into the program header table of *elf* at index *ndx .* The program header table entry is translated as necessary to match the class (**ELFCLASS32** or **ELFCLASS64**) of the underlying object file.

If *elf* has class **ELFCLASS32** then **p\_offset**, **p\_vaddr**, **p\_paddr**, **p\_filesz**, **p\_memsz**, and **p\_align** must fit within unsigned 32-bit values.

## PARAMETERS

- *elf*

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

- *ndx*

  Index of the program header table entry to be updated.  The number of program header table entries associated with *elf* can be obtained with **elf\_getphdrnum**().

- *src*

  Pointer to a **GElf\_Phdr** structure that holds the caller's desired program header table entry contents. *src* must not be NULL.

## RETURN VALUE

On success, this function returns a non-zero value and updates the program header table entry at index *ndx*. The program header table will be flagged with **ELF\_F\_DIRTY**. On failure, it returns 0 and sets elf\_errno.  If *elf* is NULL then 0 is returned without setting elf\_errno.

## SEE ALSO

[**elf\_flagphdr**(3)](/elf_flagphdr/3.md), [**elf\_getphdrnum**(3)](/elf_getphdrnum/3.md), [**gelf\_getphdr**(3)](/gelf_getphdr/3.md), [**gelf\_newphdr**(3)](/gelf_newphdr/3.md), [**libelf**(3)](/libelf/3.md), [**elf**(5)](/elf/5.md)

## ATTRIBUTES

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

## REPORTING BUGS

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