elf_getscn,
elf_ndxscn,
elf_newscn,
elf_nextscn —
get/allocate section information for an ELF
object
ELF Access Library (libelf, -lelf)
#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);
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. As a consequence,
elf_nextscn() will never return a pointer to the
empty section at index zero (
SHN_UNDEF
).
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.
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.
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
.
elf(3),
elf_flagdata(3),
elf_flagscn(3),
elf_getdata(3),
elf_getshdr(3),
gelf(3)