elf_getscn(3E) elf_getscn(3E)
NAME
elfgetscn, elfndxscn, elfnewscn, elfnextscn - get section informa-
tion
DESCRIPTION
cc [flag ...] file ... -lelf [library ...]
#include <libelf.h>
ElfScn *elfgetscn(Elf *elf, sizet index);
sizet elfndxscn(ElfScn *scn);
ElfScn *elfnewscn(Elf *elf);
ElfScn *elfnextscn(Elf *elf, ElfScn *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 elfgetehdr(3E).
elfgetscn() returns a section descriptor, given an index into the
file's section header table. Note the first "real" section has index
1. Although a program can get a section descriptor for the section
whose index is 0 (SHNUNDEF, 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,
elfgetscn() returns a null pointer.
elfnewscn() creates a new section and appends it to the list for elf.
Because the SHNUNDEF section is required and not "interesting" to
applications, the library creates it automatically. Thus the first
call to elfnewscn() for an ELF descriptor with no existing sections
returns a descriptor for section 1. If an error occurs or elf is null,
elfnewscn() returns a null pointer.
After creating a new section descriptor, the program can use
elfgetshdr() to retrieve the newly created, "clean" section header.
The new section descriptor will have no associated data [see
elfgetdata(3E)]. When creating a new section in this way, the library
updates the eshnum member of the ELF header and sets the ELFFDIRTY
bit for the section [see elfflag(3E)]. If the program is building a
new file, it is responsible for creating the file's ELF header [see
elfgetehdr(3E)] before creating new sections.
elfnextscn() 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 (skip-
ping the section whose index is SHNUNDEF). If no further sections are
present or an error occurs, elfnextscn() returns a null pointer.
Page 1 Reliant UNIX 5.44 Printed 11/98
elf_getscn(3E) elf_getscn(3E)
elfndxscn() takes an existing section descriptor, scn, and returns
its section table index. If scn is null or an error occurs,
elfndxscn() returns SHNUNDEF.
EXAMPLES
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 = elfnextscn(elf, scn)) != 0)
{
/* process section */
}
SEE ALSO
elf(3E), elfbegin(3E), elfflag(3E), elfgetdata(3E),
elfgetehdr(3E), elfgetshdr(3E).
Page 2 Reliant UNIX 5.44 Printed 11/98