DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

syms(FP)


syms -- common object file symbol table format

Format

#include  <syms.h>

Description

Common object files contain information to support symbolic software testing (see sdb(CP)). Line number entries, linenum(FP), and extensive symbolic information permit testing at the C source level. Every object file's symbol table is organized as shown below.

File name_1.
Function_1.
[Weak name_1 for function_1]
...
Local symbols for function_1.
Function_2.
[Weak name_1 for function_2]
...
Local symbols for function_2.
...
Static externs for file_1.

File name_2.
Function_1.
[Weak name_1 for function_1]
...
Local symbols for function_1.
Function_2.
[Weak name_1 for function_2]
...
Local symbols for function_2.
...
Static externs for file_2.
...

Defined global symbols.
Undefined global symbols.

The entry for a symbol is a fixed-length structure. The members of the structure hold the name (null padded), its value, and other information. The C structure follows:

   #define  SYMNMLEN      8
   #define  FILNMLEN      14
   #define  DIMNUM        4
   

struct syment { union /* all ways to get symbol name */ { char _n_name[SYMNMLEN]; /* symbol name */ struct { long _n_zeroes; /* == 0L when in string table */ long _n_offset; /* location of name in table */ } _n_n; char *_n_nptr[2]; /* allows overlaying */ } _n; long n_value; /* value of symbol */ short n_scnum; /* section number */ unsigned short n_type; /* type and derived type */ char n_sclass; /* storage class */ char n_numaux; /* number of aux entries */ };

#define n_name _n._n_name #define n_zeroes _n._n_n._n_zeroes #define n_offset _n._n_n._n_offset #define n_nptr _n._n_nptr[1]

Meaningful values and their explanations are given in both syms.h and Common Object File Format (COFF). To interpret the entries see these sources. Some symbols require more information than a single entry; they are followed by auxiliary entries that are the same size as a symbol entry. The format follows.

   union auxent
   {
       struct
       {
           long        x_tagndx;
           union
           {
               struct
               {
                   unsigned short  x_lnno;
                   unsigned short  x_size;
               } x_lnsz;
               long    x_fsize;
           } x_misc;
           union
           {
               struct
               {
                   long    x_lnnoptr;
                   long    x_endndx;
               }   x_fcn;
               struct
               {
                   unsigned short  x_dimen[DIMNUM];
               }   x_ary;
           }   x_fcnary;
           unsigned short  x_tvndx;
       }   x_sym;
   

union { char x_fname[FILNMLEN]; struct { long x_zero; long x_offset; } x_longname; } x_file;

struct { long x_scnlen; unsigned short x_nreloc; unsigned short x_nlinno; } x_scn;

struct { long x_tvfill; unsigned short x_tvlen; unsigned short x_tvran[2]; } x_tv; };

Indexes of symbol table entries begin at zero.

Warning

On machines on which ints are equivalent to longs, all longs have their type changed to int. Thus the information about which symbols are declared as longs and which as ints does not show up in the symbol table.

See also

a.out(FP), ldfcn(FP), linenum(FP), sdb(CP)

Standards conformance

syms(FP) is not part of any currently supported standard; it was developed by UNIX System Laboratories, Inc. and is used by permission.
© 2003 Caldera International, Inc. All rights reserved.
SCO OpenServer Release 5.0.7 -- 11 February 2003