DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

elf_version(S)


elf_version -- coordinate ELF library and application versions

Syntax

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

#include <libelf.h>

unsigned elf_version(unsigned ver);

Description

As elf(S) explains, the program, the library, and an object file have independent notions of the ``latest'' ELF version. elf_version(S) 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 makes elf_version( ) 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.

Diagnostics

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

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

Warning

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.

See also

elf(S), elf_begin(S), elf_xlate(S)

Standards conformance

elf_version(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