DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

ldfcn(FP)


ldfcn -- common object file access routines

Format

#include <stdio.h>

#include <filehdr.h> #include <ldfcn.h>

Description

The common object file access routines are a collection of functions for reading common object files and archives containing common object files. Although the calling program must know the detailed structure of the parts of the object file that it processes, the routines insulate the calling program from knowledge of the overall structure of the object file.

The interface between the calling program and the object file access routines is based on the defined type LDFILE, defined as struct ldfile, declared in the ldfcn.h header file. This structure provides uniform access to both simple object files and object files that are members of an archive file.

The ldopen(S) function allocates and initializes the LDFILE structure and returns a pointer to the structure to the calling program. The members of the LDFILE structure can be accessed individually through macros defined in ldfcn.h and contain the following information:


TYPE(ldptr)
The file magic number used to distinguish between archive members and simple object files

IOPTR(ldptr)
The file pointer returned by fopen and used by the standard input/output functions

OFFSET(ldptr)
The file address of the beginning of the object file; the offset is non-zero if the object file is a member of an archive file.

HEADER(ldptr)
The file header structure of the object file

The object file access functions themselves can be divided into the following categories:

These functions are described in detail on their respective manual pages. All the functions except ldopen(S), ldgetname(S), and ldtbindex(S) return either SUCCESS or FAILURE, both constants defined in ldfcn.h. ldopen(S) and ldaopen both return pointers to an LDFILE structure.

Additional access to an object file is provided through a set of macros defined in ldfcn.h. They parallel the standard input/output file reading and manipulating functions, translating a reference of the LDFILE structure into a reference to its file descriptor field.

The following macros are provided:

GETC(ldptr)
FGETC(ldptr)
GETW(ldptr)
UNGETC(c, ldptr)
FGETS(s, n, ldptr)
FREAD((char *) ptr, sizeof (*ptr), nitems, ldptr)
FSEEK(ldptr, offset, ptrname)
FTELL(ldptr)
REWIND(ldptr)
FEOF(ldptr)
FERROR(ldptr)
FILENO(ldptr)
SETBUF(ldptr, buf)
STROFFSET(ldptr)

The STROFFSET macro calculates the address of the string table. See the manual entries for the corresponding standard input/output library functions for details on the use of the rest of the macros.

The program must be loaded with the object file access library routine LIBDIR/elibld.a.

Warning

The macro FSEEK defined in the header file ldfcn.h translates into a call to the standard input/output function fseek(S). FSEEK should not be used to seek from the end of an archive file, since the end of an archive file might not be the same as the end of one of its object file members.

See also

fseek(S), Intro(M) ldahread(S), ldclose(S), ldfhread(S), ldgetname(S), ldlread(S), ldlseek(S), ldohseek(S), ldopen(S), ldrseek(S), ldshread(S), ldtbindex(S), ldtbread(S), ldtbseek(S), stdio(S)

Standards conformance

ldfcn(FP) is not part of any currently supported standard; it was developed by UNIX System Laboratories, Inc. and is maintained by The SCO Group.
© 2003 File Formats for Programming (FP)
SCO OpenServer Release 5.0.7 -- 11 February 2003