NAME
elf_version() — coordinate ELF library and application versions
SYNOPSIS
Command:
cc
[flag]...
file...
-lelf
[library]...
#include
<libelf.h>
unsigned elf_version(unsigned ver);
DESCRIPTION
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 a
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.
EXAMPLES
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 */
}
WARNINGS
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.