elf_cntl -- control a file descriptor


cc [flag . . . ] file . . . -lelf [library] . . .

#include <libelf.h>

int elf_cntl(Elf *elf, Elf_Cmd cmd);


elf_cntl(S) instructs the library to modify its behavior with respect to an ELF descriptor, elf.

As elf_begin(S) describes, an ELF descriptor can have multiple activations. Also, multiple ELF descriptors may share a single file descriptor. Generally, elf_cntl( ) commands apply to all activations of elf. Moreover, if the ELF descriptor is associated with an archive file, descriptors for members within the archive are also affected as described below. Unless stated otherwise, operations on archive members do not affect the descriptor for the containing archive.

The argument cmd tells what actions to take and may have the following values.

This value tells the library not to use the file descriptor associated 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 elf_getdata(S) for a section, will fail if the data is not in memory already.

This command is similar to ELF_C_FDDONE, 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 elf_cntl( ) completes the ELF_C_FDREAD command, future operations, such as elf_getdata( ), will use the memory version of the file without needing to use the file descriptor.

Return values

If elf_cntl( ) succeeds, it returns zero. Otherwise elf was null or an error occurred, and the function returns -1.


Error conditions are identified through the routine elf_error(S).


If the program wishes to use the ``raw'' operations (see elf_rawdata(S) under elf_getdata( ) and elf_rawfile(S)), it must disable the file descriptor with ELF_C_FDDONE or ELF_C_FDREAD, and must execute the raw operations explicitly beforehand. Otherwise, the raw file operations will fail. Calling elf_rawfile( ) makes the entire image available, thus supporting subsequent calls to elf_rawdata(S).

See also

elf(S), elf_begin(S), elf_getdata(S), elf_rawdata(S), elf_rawfile(S)

Standards conformance

elf_cntl(S) is not part of any currently supported standard; it was developed by UNIX System Laboratories, Inc. and is maintained by The SCO Group.
© 2003 Caldera International, Inc. All rights reserved.
SCO OpenServer Release 5.0.7 -- 11 February 2003