Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ scnhdr(4) — 4D1 2.0

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

ld(1)

fseek(3S)

a.out(4)



     SCNHDR(4)                                               SCNHDR(4)



     NAME
          scnhdr - section header for a MIPS object file

     SYNOPSIS
          #include < scnhdr.h>

     DESCRIPTION
          Every MIPS object file has a table of section headers to
          specify the layout of the data within the file.  Each
          section within an object file has its own header.  The C
          structure appears below:

          struct scnhdr
          {
               char      s_name[8];     /* section name */
               long      s_paddr;       /* physical address, aliased s_nlib */
               long      s_vaddr;       /* virtual address */
               long      s_size;        /* section size */
               long      s_scnptr; /* file ptr to raw data for section */
               long      s_relptr;      /* file ptr to relocation */
               long      s_lnnoptr;     /* file ptr to gp table */
               unsigned short s_nreloc; /* number of relocation entries */
               unsigned short s_nlnno;       /* number of gp table entries */
               long      s_flags;       /* flags */
          };

          File pointers are byte offsets into the file; they can be
          used as the offset in a call to FSEEK [see ldfcn(4)].  If a
          section is initialized, the file contains the actual bytes.
          An uninitialized section is somewhat different.  It has a
          size, symbols defined in it, and symbols that refer to it.
          But it can have no relocation entries or data.
          Consequently, an uninitialized section has no raw data in
          the object file, and the values for s_scnptr, s_relptr, and
          s_nreloc are zero.

          The entries that refer to line numbers (s_lnnoptr, and
          s_nlnno) are not used for line numbers on MIPS machines.
          See the header file sym.h for the entries to get to the line
          number table.  The entries that were for line numbers in the
          section header are used for gp tables on MIPS machines.

          The gp table gives the section size corresponding to each
          applicable value of the compiler option -G num (always
          including 0), sorted by smallest size first. It is pointed
          to by the s_lnnoptr field in the section header and its
          number of entries (including the header) is in the s_nlnno
          field in the section header.  This table only needs to exist
          for the .sdata and .sbss sections.  If there is no ``small''
          section then the gp table for it is attached to the
          coresponding ``large'' section so the information still gets
          to the link editor, ld(1).  The C union for the gp table



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





     SCNHDR(4)                                               SCNHDR(4)



          appears below.

          union gp_table
          {
               struct {
                    long current_g_value;         /* actual value */
                    long unused;
               } header;
               struct {
                    long g_value;       /* hypothetical value */
                    long bytes;         /* section size corresponding */
                                   /* to hypothetical value */
               } entry;
          };

          Each gp table has one header structure that contains the
          actual value of the -G num option used to produce the object
          file.  An entry must exist for every applicable value of the
          -G num option.  The applicable values are all the sizes of
          the data items in that section.


     SEE ALSO
          ld(1), fseek(3S), a.out(4).


     BUGS
          The s_nreloc field has been known to overflow on fully
          linked objects when the relocation entries are saved.

     ORIGIN
          MIPS Computer Systems























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



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