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

# elf\_cntl(3)

perform control operations on an ELF descriptor

## NAME

elf\_cntl - perform control operations on an ELF descriptor

## SYNOPSIS

```
#include <libelf.h>
int elf_cntl(Elf *elf, Elf_Cmd cmd);
```

## DESCRIPTION

Perform control operations on the ELF descriptor *elf* according to the operation specified by *cmd*.

The following commands are supported:

- **ELF\_C\_FDDONE**

  This command tells **libelf** that the application is done using the file descriptor associated with the *elf* object. The file descriptor may then be closed immediately without affecting the in-memory ELF data.  Unless all data has been read from the file descriptor (see **ELF\_C\_FDREAD** below) future operation on the Elf descriptor may fail.

- **ELF\_C\_FDREAD**

  This command causes **libelf** to read the entire contents of the underlying file into memory immediately. **libelf** generally reads and parses elements of ELF files only when they are required. This command instead triggers **libelf** to read all elements immediately. Using this command ensures that **ELF\_C\_FDDONE** may be used without causing future operations on the Elf descriptor to fail.

## RETURN VALUE

On success, returns 0.

On failure, it returns -1 and sets an error that can be retrieved with [**elf\_errmsg**(3)](/elf_errmsg/3.md).

## SEE ALSO

[**libelf**(3)](/libelf/3.md), [**elf\_errmsg**(3)](/elf_errmsg/3.md), [**elf**(5)](/elf/5.md)

## ATTRIBUTES

| |
| --- |
| **Interface Attribute Value** |
| **elf\_cntl**() |

## REPORTING BUGS

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