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

# gelf\_update\_versym(3)

modify class-independent symbol versioning records

## NAME

gelf\_update\_versym, gelf\_update\_verdef, gelf\_update\_verdaux, gelf\_update\_verneed, gelf\_update\_vernaux - modify class-independent symbol versioning records

## SYNOPSIS

```
#include <gelf.h>
int gelf_update_versym (Elf_Data *data, int ndx, GElf_Versym  *src);
int gelf_update_verdef (Elf_Data *data, int offset, GElf_Verdef  *src);
int gelf_update_verdaux(Elf_Data *data, int offset, GElf_Verdaux *src);
int gelf_update_verneed(Elf_Data *data, int offset, GElf_Verneed *src);
int gelf_update_vernaux(Elf_Data *data, int offset, GElf_Vernaux *src);
```

## DESCRIPTION

These functions provide class-independent modification of GNU ELF symbol versioning sections. Each function copies the contents of the caller-supplied *src* into the symbol versioning entry at the specified index or offset within *data*.

- **gelf\_update\_versym**()

  Write a symbol version index into the **SHT\_GNU\_versym** section associated with *data* at index *ndx*.

- **gelf\_update\_verdef**()

  Write a version definition entry into the **SHT\_GNU\_verdef** section associated with *data* at section offset *offset*.

- **gelf\_update\_verdaux**()

  Write a version definition auxiliary entry into the **SHT\_GNU\_verdef** section associated with *data* at section offset *offset*.

- **gelf\_update\_verneed**()

  Write a version needed entry into the **SHT\_GNU\_verneed** section associated with *data* at section offset *offset*.

- **gelf\_update\_vernaux**()

  Write a version needed auxiliary entry into the **SHT\_GNU\_verneed** section associated with *data* at section offset *offset*.

## PARAMETERS

- *data*

  **Elf\_Data** pointer corresponding to the appropriate GNU symbol versioning section.

- *ndx*

  (For **gelf\_update\_versym**() only.) Zero-based index of the entry within *data*.

- *offset*

  (For **gelf\_update\_verdef**(), **gelf\_update\_verdaux**(), **gelf\_update\_verneed**(), and **gelf\_update\_vernaux**().) Section-relative byte offset of the entry within *data*.

- *src*

  Pointer to the caller-supplied symbol: **GElf\_Versym**, **GElf\_Verdef**, **GElf\_Verdaux**, **GElf\_Verneed**, or **GElf\_Vernaux** as appropriate. This argument must not be NULL.

## RETURN VALUE

On success, these functions store the requested entry in *src*, mark the section corresponding to *data* with **ELF\_F\_DIRTY** and return a non-zero value.  On failure, 0 is returned and elf\_errno is set.  If *data* is NULL, 0 is returned without setting elf\_errno.

## SEE ALSO

[**gelf\_getverdaux**(3)](/gelf_getverdaux/3.md), [**gelf\_getverdef**(3)](/gelf_getverdef/3.md), [**gelf\_getvernaux**(3)](/gelf_getvernaux/3.md), [**gelf\_getverneed**(3)](/gelf_getverneed/3.md), [**gelf\_getversym**(3)](/gelf_getversym/3.md), [**libelf**(3)](/libelf/3.md), [**elf**(5)](/elf/5.md)

## ATTRIBUTES

| | | |
| --- | --- | --- |
| **Interface** | **Attribute** | **Value** |
| **gelf\_update\_versym**(), **gelf\_update\_verdef**(), **gelf\_update\_verdaux**(), **gelf\_update\_verneed**(), **gelf\_update\_vernaux**() | Thread safety | MT-Safe |

## REPORTING BUGS

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