ELF_VERSION(3E)ELF_VERSION(3E)


NAME
     elf_version - Coordinate ELF library and application versions

SYNOPSIS
     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.

     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.

NOTES
     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.

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 */
          }

SEE ALSO
     elf(3E), elf_begin(3E), elf_xlate(3E)