ELF\_END(3) Libelf Programmer's Manual ELF\_END(3)

# [NAME](#NAME)

elf\_end - Release resources associated with an ELF descriptor.

# [SYNOPSIS](#SYNOPSIS)

```
#include <libelf.h>
int elf_end(Elf *elf);
```

# [DESCRIPTION](#DESCRIPTION)

The **elf\_end** function releases resources associated with an ELF descriptor previously returned by **elf\_begin**. It decrements the ELF descriptor’s internal reference count by one. When this count reaches zero, the resources associated with the descriptor are freed and the descriptor is invalidated. If *elf* is not an archive member with ELF kind **ELF\_K\_AR**, the internal reference count is increased by one each time *elf* is passed to **elf\_begin** as the *ref* argument.

An ELF descriptor whose reference count reaches zero is invalidated. Further operations on the descriptor will result in undefined behavior.

# [PARAMETERS](#PARAMETERS)

[*elf*](#elf)

The ELF descriptor (may be NULL).

# [RETURN VALUE](#RETURN_VALUE)

Return the ELF descriptor's current internal reference count after decrementing. A return value of zero indicates the ELF descriptor is now invalidated. If *elf* is NULL, then **elf\_end** also returns 0.

# [SEE ALSO](#SEE_ALSO)

[**elf\_begin**(3)](/man/os/elfutils/elf_begin.3), [**libelf**(3)](/man/os/elfutils/libelf.3), [**elf**(5)](/man/os/elfutils/elf.5)

# [ATTRIBUTES](#ATTRIBUTES)

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

**Interface** **Attribute** **Value** elf\_end () Thread safety MT-Safe

# [REPORTING BUGS](#REPORTING_BUGS)

Report bugs to &lt;elfutils-devel@sourceware.org&gt; or https://sourceware.org/bugzilla/.

2025-03-31 Libelf

---

Document: elf_end(3) from elfutils 0.197-r0 (Chainguard OS)
Source: https://sourceware.org/git/elfutils.git
