ELF_GETSCN(3)

ELF_GETSCN(3) | Library Functions Manual | ELF_GETSCN(3)

# NAME

`elf_getscn`, `elf_ndxscn`, `elf_newscn`, `elf_nextscn` —
get/allocate section information for an ELF object

# LIBRARY

ELF Access Library (libelf, -lelf)

# SYNOPSIS

`#include <libelf.h>`

Elf_Scn *
`elf_getscn`(Elf *elf, size_t index);

size_t
`elf_ndxscn`(Elf_Scn *scn);

Elf_Scn *
`elf_newscn`(Elf *elf);

Elf_Scn *
`elf_nextscn`(Elf *elf, Elf_Scn *scn);

# DESCRIPTION

These functions are used to iterate through the sections associated with an ELF descriptor.

Function `elf_getscn`() will return a section descriptor for the section at index index in the object denoted by ELF descriptor elf. An error will be signalled if the specified section does not exist.

Function `elf_ndxscn`() returns the section table index associated with section descriptor scn.

Function `elf_newscn`() creates a new section and appends it to the list of sections associated with descriptor elf. The library will automatically increment the e_shnum field of the ELF header associated with descriptor elf, and will set the `ELF_F_DIRTY` flag on the returned section descriptor. For ELF descriptors opened for writing, the ELF library will automatically create an empty section at index zero (`SHN_UNDEF`) on the first call to `elf_newscn`().

Function `elf_nextscn`() takes a section descriptor scn and returns a pointer to the section descriptor at the next higher index. Argument scn is allowed to be NULL, in which case this function will return a pointer to the section descriptor at index 1. If no further sections are present, function `elf_nextscn`() will return a NULL pointer.

# RETURN VALUES

Functions `elf_getscn`(), `elf_newscn`() and `elf_nextscn`() return a valid pointer to a section descriptor if successful, or NULL if an error occurs.

Function `elf_ndxscn`() returns a valid section table index if successful, or `SHN_UNDEF` if an error occurs.

# ERRORS

These functions may fail with the following errors:

[`ELF_E_ARGUMENT`]
  Arguments elf or scn were NULL.
[`ELF_E_ARGUMENT`]
  Argument index exceeded the current number of sections in the ELF object.
[`ELF_E_ARGUMENT`]
  Argument elf was not a descriptor for an ELF file.
[`ELF_E_ARGUMENT`]
  Section descriptor scn was not associated with ELF descriptor elf.
[`ELF_E_CLASS`]
  Descriptor elf was of an unknown ELF class.
[`ELF_E_SECTION`]
  Argument elf specified extended section numbering in the ELF header with the section header at index `SHN_UNDEF` not being of type `SHT_NULL`.

# SEE ALSO

elf(3), elf_flagdata(3), elf_flagscn(3), elf_getdata(3), elf_getshdr(3), gelf(3)

October 22, 2007 | NetBSD 9.5