|
|
#include <syms.h>
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 4struct 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.