Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ ldaopen(3x) — 4D1 2.0

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

fopen(3S)

ldclose(3X)

ldfcn(4)



     LDOPEN(3X)                                             LDOPEN(3X)



     NAME
          ldopen, ldaopen - open a common object file for reading

     SYNOPSIS
          #include <stdio.h>
          #include <filehdr.h>
          #include <syms.h>
          #include <ldfcn.h>

          LDFILE *ldopen (filename, ldptr)
          char *filename;
          LDFILE *ldptr;

          LDFILE *ldaopen (filename, oldptr)
          char *filename;
          LDFILE *oldptr;

          ld readst (ldptr, flags)
          LDFILE *ldptr;
          intflags;

     DESCRIPTION
          Ldopen and ldclose(3X)  provide uniform access to simple
          object files and to object files that are members of archive
          files.  An archive of common object files can be processed
          as if it were a series of simple common object files.

          If ldptr has the value NULL, ldopen opens filename,
          allocates and initializes the LDFILE structure, and returns
          a pointer to the structure to the calling program.

          If ldptr is valid and TYPE(ldptr) is the archive magic
          number, ldopen reinitializes the LDFILE structure for the
          next archive member of filename.

          Ldopen and ldclose work in concert.  Ldclose returns FAILURE
          only when TYPE(ldptr) is the archive magic number and there
          is another file in the archive to be processed.  Only then
          should ldopen be called with the current value of ldptr.  In
          all other cases, and particularly when a new filename is
          opened, ldopen should be called with a NULL ldptr argument.

          The following is a prototype for the use of ldopen and
          ldclose:











     Page 1                                        (last mod. 8/20/87)





     LDOPEN(3X)                                             LDOPEN(3X)



               /* for each filename to be processed */

               ldptr = NULL;
               do  {
                    if ( (ldptr = ldopen(filename, ldptr)) != NULL )
                    {
                         /* check magic number */
                         /* process the file */
                    }
               } while (ldclose(ldptr) == FAILURE );

          If the value of oldptr is not NULL, ldaopen opens filename
          anew and allocates and initializes a new LDFILE structure,
          copying the fields from oldptr.  Ldaopen returns a pointer
          to the new LDFILE structure.  This new pointer is
          independent of the old pointer, oldptr.  The two pointers
          can be used concurrently to read separate parts of the
          object file.  For example, one pointer can be used to step
          sequentially through the relocation information while the
          other is used to read indexed symbol table entries.

          Ldopen and ldaopen open filename for reading.  If filename
          cannot be opened or if memory for the LDFILE structure
          cannot be allocated, both functions return NULL.  A
          successful open does not ensure that the given file is a
          common object file or an archived object file.

          Ldopen causthe symbol table header and file descriptor table
          to be read.  Further access, using ldptr, causes other
          appropriate sections of the symbol table to be read (for
          example, if you call ldtbread, the symbols or externals are
          read).  To force sections fot eh symbol table in memory,
          call ldreadst with ST_P* constants ORed together from
          st_support.h.

          The program must be loaded with the object file access
          routine library libmld.a.

     SEE ALSO
          fopen(3S), ldclose(3X), ldfcn(4).

     ORIGIN
          MIPS Computer Systems












     Page 2                                        (last mod. 8/20/87)



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026