HP-UX Reference (11i v3 07/02) - 3 Library Functions A-M (vol 6)
e
elf_getscn(3E) elf_getscn(3E)
NAME
elf_getscn(), elf_ndxscn(), elf_newscn(), elf_nextscn() - get section information for ELF files
SYNOPSIS
Command: 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 elf_getehdr(3E).
elf_getscn() 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 (
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.
elf_newscn() 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 elf_getshdr()
to retrieve the newly
created, "clean" section header. The new section descriptor will have no associated data (see
elf_getdata(3E)). 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_flag(3E)). If the program is build-
ing a new file, it is responsible for creating the file’s ELF header (see elf_getehdr(3E)) before creating new
sections.
elf_nextscn() 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
SHN_UNDEF). If no further sections are present or an error occurs,
elf_nextscn() returns a null pointer.
elf_ndxscn() 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
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 */
}
354 Hewlett-Packard Company − 1 − HP-UX 11i Version 3: February 2007