elf_cntl(3E) elf_cntl(3E)
NAME
elfcntl - control a file descriptor
SYNOPSIS
cc [flag ...] file ... -lelf [library ...]
#include <libelf.h>
int elfcntl(Elf *elf, ElfCmd cmd);
DESCRIPTION
elfcntl() instructs the library to modify its behavior with respect
to an ELF descriptor, elf. As elfbegin(3E) describes, an ELF descrip-
tor can have multiple activations, and multiple ELF descriptors may
share a single file descriptor. Generally, elfcntl() commands apply
to all activations of elf. Moreover, if the ELF descriptor is associ-
ated with an archive file, descriptors for members within the archive
will also be affected as described below. Unless stated otherwise,
operations on archive members do not affect the descriptor for the
containing archive.
The cmd argument tells what actions to take and may have the following
values.
ELFCFDDONE
This value tells the library not to use the file descriptor asso-
ciated with elf. A program should use this command when it has
requested all the information it cares to use and wishes to avoid
the overhead of reading the rest of the file. The memory for all
completed operations remains valid, but later file operations,
such as the initial elfgetdata() for a section, will fail if the
data is not in memory already.
ELFCFDREAD
This command is similar to ELFCFDDONE, except it forces the
library to read the rest of the file. A program should use this
command when it must close the file descriptor but has not yet
read everything it needs from the file. After elfcntl() com-
pletes the ELFCFDREAD command, future operations, such as
elfgetdata(), will use the memory version of the file without
needing to use the file descriptor.
If elfcntl() succeeds, it returns zero. Otherwise elf was null or an
error occurred, and the function returns -1.
NOTES
If the program wishes to use the "raw" operations [see elfrawdata(),
which elfgetdata(3E) describes, and elfrawfile(3E)] after disabling
the file descriptor with ELFCFDDONE or ELFCFDREAD, it must execute
the raw operations explicitly beforehand. Otherwise, the raw file
operations will fail. Calling elfrawfile() makes the entire image
available, thus supporting subsequent elfrawdata() calls.
Page 1 Reliant UNIX 5.44 Printed 11/98
elf_cntl(3E) elf_cntl(3E)
SEE ALSO
elf(3E), elfbegin(3E), elfgetdata(3E), elfrawfile(3E).
Page 2 Reliant UNIX 5.44 Printed 11/98