ELF_GETSCN(3ELF) ELF Library Functions ELF_GETSCN(3ELF)


NAME


elf_getscn, elf_ndxscn, elf_newscn, elf_nextscn - get section information

SYNOPSIS


cc [ flag ... ] file ... -lelf [ library ... ]
#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 provide indexed and sequential access to the sections
associated with the ELF descriptor elf. If the program is building a new
file, it is responsible for creating the file's ELF header before
creating sections; see elf32_getehdr(3ELF).


The elf_getscn() function returns a section descriptor, given an index
into the file's section header table. Note that the first ``real''
section has an index of 1. Although a program can get a section
descriptor for the section whose index is 0 (SHN_UNDEF, the undefined
section), the section has no data and the section header is ``empty''
(though present). If the specified section does not exist, an error
occurs, or elf is NULL, elf_getscn() returns a null pointer.


The elf_newscn() function creates a new section and appends it to the
list for elf. Because the SHN_UNDEF section is required and not
``interesting'' to applications, the library creates it automatically.
Thus the first call to elf_newscn() for an ELF descriptor with no
existing sections returns a descriptor for section 1. If an error occurs
or elf is NULL, elf_newscn() returns a null pointer.


After creating a new section descriptor, the program can use
elf32_getshdr() to retrieve the newly created, ``clean'' section header.
The new section descriptor will have no associated data (see
elf_getdata(3ELF)). When creating a new section in this way, the library
updates the e_shnum member of the ELF header and sets the ELF_F_DIRTY bit
for the section (see elf_flagdata(3ELF)). If the program is building a
new file, it is responsible for creating the file's ELF header (see
elf32_getehdr(3ELF)) before creating new sections.


The elf_nextscn() function takes an existing section descriptor, scn, and
returns a section descriptor for the next higher section. One may use a
null scn to obtain a section descriptor for the section whose index is 1
(skipping the section whose index is SHN_UNDEF). If no further sections
are present or an error occurs, elf_nextscn() returns a null pointer.


The elf_ndxscn() function takes an existing section descriptor, scn, and
returns its section table index. If scn is null or an error occurs,
elf_ndxscn() returns SHN_UNDEF.

EXAMPLES


Example 1: A sample of calling elf_getscn() function.




An example of sequential access appears below. Each pass through the loop
processes the next section in the file; the loop terminates when all
sections have been processed.


scn = 0;
while ((scn = elf_nextscn(elf, scn)) != 0)
{
/* process section */
}


ATTRIBUTES


See attributes(5) for descriptions of the following attributes:


+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Stable |
+--------------------+-----------------+
|MT-Level | MT-Safe |
+--------------------+-----------------+

SEE ALSO


elf(3ELF), elf32_getehdr(3ELF), elf32_getshdr(3ELF), elf_begin(3ELF),
elf_flagdata(3ELF), elf_getdata(3ELF), libelf(3LIB), attributes(5)


July 11, 2001 ELF_GETSCN(3ELF)