Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ ar(4) — A/UX 0.7

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

ar(1)

ld(1)

strip(1)

sputl(3X)

a.out(4)



     ar(4)                                                       ar(4)



     NAME
          ar -  common archive file format

     DESCRIPTION
          The archive command ar is used to combine several files into
          one.  Archives are used mainly as libraries to be searched
          by the link editor ld(1).

          Each archive begins with the archive magic string.

          #define  ARMAG  "!<arch>\n" /* magic string */
          #define  SARMAG  8           /* length of magic string */

          Each archive which contains common object files (see
          a.out(4)) includes an archive symbol table.  This symbol
          table is used by the link editor ld(1) to determine which
          archive members must be loaded during the link edit process.
          The archive symbol table (if it exists) is always the first
          file in the archive (but is never listed) and is
          automatically created and/or updated by ar.

          Following the archive magic string are the archive file
          members.  Each file member is preceded by a file member
          header which is of the following format:

          #define ARFMAG  "`0 /* header trailer string */

          struct  ar_hdr          /* file member header */
          {
                  char   ar_name[16];  /* '/' terminated file
                                          member name */
                  char   ar_date[12];  /* file member date */
                  char   ar_uid[6];    /* file member user
                                          identification */
                  char   ar_gid[6];    /* file member group
                                          identification */
                  char   ar_mode[8];   /* file member mode */
                  char   ar_size[10];  /* file member size */
                  char   ar_fmag[2];   /* header trailer string */
          };


          All information in the file member headers is in printable
          ASCII.  The numeric information contained in the headers is
          stored as decimal numbers (except for ar_mode which is in
          octal).  Thus, if the archive contains printable files, the
          archive itself is printable.

          The ar_name filed is blank-padded and slash (/) terminated.
          The ar_date field is the modification date of the file at
          the time of its insertion into the archive.  Common format
          archives can be moved from system to system as long as the



     Page 1                                        (last mod. 1/14/87)





     ar(4)                                                       ar(4)



          portable archive command ar(1) is used.

          Each archive file member begins on an even byte boundary; a
          newline is inserted between files if necessary.
          Nevertheless, the size given reflects the actual size of the
          file exclusive of padding.

          Notice there is no provision for empty areas in an archive
          file.

          If the archive symbol table exists, the first file in the
          archive has a zero length name (i.e., ar_name[0] = '/').
          The contents of this file are as follows:

          ⊕   The number of symbols.  Length:  4 bytes.

          ⊕   The array of offsets into the archive file.  Length:  4
              bytes * ``the number of symbols''.

          ⊕   The name string table.  Length:  ar_size - (4 bytes *
              (``the number of symbols'' +1)).  The number of symbols
              and the array of offsets are managed with sgetl and
              sputl.  The string table contains exactly as many null
              terminated strings as there are elements in the offsets
              array.  Each offset from the array is associated with
              the corresponding name from the string table (in order).
              The names in the string table are all the defined global
              symbols found in the common object files in the archive.
              Each offset is the location of the archive header for
              the associated symbol.

     SEE ALSO
          ar(1), ld(1), strip(1), sputl(3X), a.out(4).

     WARNINGS
          strip(1) will remove all archive symbol entries from the
          header.  The archive symbol entries must be restored via the
          s option of the ar(1) command before the archive can be used
          with the link editor ld(1).
















     Page 2                                        (last mod. 1/14/87)



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