ELF_VERSION(3E) ELF_VERSION(3E)
elf_version - coordinate ELF library and application versions
cc [flag ...] file ... -lelf [library ...]
#include <libelf.h>
unsigned elf_version(unsigned ver);
As elf(3E) explains, the program, the library, and an object file have
independent notions of the ``latest'' ELF version. elf_version lets a
program determine the ELF library's internal version. It further lets
the program specify what memory types it uses by giving its own working
version, ver, to the library. Every program that uses the ELF library
must coordinate versions as described below.
The header file <libelf.h> supplies the version to the program with the
macro EV_CURRENT. If the library's internal version (the highest version
known to the library) is lower than that known by the program itself, the
library may lack semantic knowledge assumed by the program. Accordingly,
elf_version will not accept a working version unknown to the library.
Passing ver equal to EV_NONE causes elf_version to return the library's
internal version, without altering the working version. If ver is a
version known to the library, elf_version returns the previous (or
initial) working version number. Otherwise, the working version remains
unchanged and elf_version returns EV_NONE.
The following excerpt from an application program protects itself from
using an older library.
if (elf_version(EV_CURRENT) == EV_NONE)
{
/* library out of date */
/* recover from error */
}
The working version should be the same for all operations on a particular
elf descriptor. Changing the version between operations on a descriptor
will probably not give the expected results.
elf(3E), elf_begin(3E), elf_xlate(3E).
PPPPaaaaggggeeee 1111 [ Back ]
|