ELFGETSCN(3E) ELFGETSCN(3E)
NAME
elfgetscn, elfndxscn, elfnewscn, elfnextscn - get section information
SYNOPSIS
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 (skipping
the section whose index is SHNUNDEF). If no further sections are
present or an error occurs, elfnextscn returns a null pointer.
Page 1
ELFGETSCN(3E) ELFGETSCN(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.
EXAMPLE
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