Annotation of researchv10dc/630/3binc/syms.h, revision 1.1

1.1     ! root        1: #ident "@(#)/usr/include/syms.h.sl 1.2 4.1 09/02/86 9808 AT&T-SF"
        !             2: 
        !             3: /*             Storage Classes are defined in storclass.h  */
        !             4: #include "storclass.h"
        !             5: 
        !             6: /*             Number of characters in a symbol name */
        !             7: #define  SYMNMLEN      8
        !             8: /*             Number of characters in a file name */
        !             9: #define  FILNMLEN      14
        !            10: /*             Number of array dimensions in auxiliary entry */
        !            11: #define  DIMNUM                4
        !            12: 
        !            13: 
        !            14: struct syment
        !            15: {
        !            16:        union
        !            17:        {
        !            18:                char            _n_name[SYMNMLEN];      /* old COFF version */
        !            19:                struct
        !            20:                {
        !            21:                        long    _n_zeroes;      /* new == 0 */
        !            22:                        long    _n_offset;      /* offset into string table */
        !            23:                } _n_n;
        !            24:                char            *_n_nptr[2];    /* allows for overlaying */
        !            25:        } _n;
        !            26: #ifndef pdp11
        !            27:        unsigned
        !            28: #endif
        !            29:        long                    n_value;        /* value of symbol */
        !            30:        short                   n_scnum;        /* section number */
        !            31:        unsigned short          n_type;         /* type and derived type */
        !            32:        char                    n_sclass;       /* storage class */
        !            33:        char                    n_numaux;       /* number of aux. entries */
        !            34: };
        !            35: 
        !            36: #define n_name         _n._n_name
        !            37: #define n_nptr         _n._n_nptr[1]
        !            38: #define n_zeroes       _n._n_n._n_zeroes
        !            39: #define n_offset       _n._n_n._n_offset
        !            40: 
        !            41: /*
        !            42:    Relocatable symbols have a section number of the
        !            43:    section in which they are defined.  Otherwise, section
        !            44:    numbers have the following meanings:
        !            45: */
        !            46:         /* undefined symbol */
        !            47: #define  N_UNDEF       0
        !            48:         /* value of symbol is absolute */
        !            49: #define  N_ABS         -1
        !            50:         /* special debugging symbol -- value of symbol is meaningless */
        !            51: #define  N_DEBUG       -2
        !            52:        /* indicates symbol needs transfer vector (preload) */
        !            53: #define  N_TV          (unsigned short)-3
        !            54: 
        !            55:        /* indicates symbol needs transfer vector (postload) */
        !            56: 
        !            57: #define  P_TV          (unsigned short)-4
        !            58: 
        !            59: /*
        !            60:    The fundamental type of a symbol packed into the low 
        !            61:    4 bits of the word.
        !            62: */
        !            63: 
        !            64: #define  _EF   ".ef"
        !            65: 
        !            66: #define  T_NULL     0
        !            67: #define  T_ARG      1          /* function argument (only used by compiler) */
        !            68: #define  T_CHAR     2          /* character */
        !            69: #define  T_SHORT    3          /* short integer */
        !            70: #define  T_INT      4          /* integer */
        !            71: #define  T_LONG     5          /* long integer */
        !            72: #define  T_FLOAT    6          /* floating point */
        !            73: #define  T_DOUBLE   7          /* double word */
        !            74: #define  T_STRUCT   8          /* structure  */
        !            75: #define  T_UNION    9          /* union  */
        !            76: #define  T_ENUM     10         /* enumeration  */
        !            77: #define  T_MOE      11         /* member of enumeration */
        !            78: #define  T_UCHAR    12         /* unsigned character */
        !            79: #define  T_USHORT   13         /* unsigned short */
        !            80: #define  T_UINT     14         /* unsigned integer */
        !            81: #define  T_ULONG    15         /* unsigned long */
        !            82: 
        !            83: /*
        !            84:  * derived types are:
        !            85:  */
        !            86: 
        !            87: #define  DT_NON      0          /* no derived type */
        !            88: #define  DT_PTR      1          /* pointer */
        !            89: #define  DT_FCN      2          /* function */
        !            90: #define  DT_ARY      3          /* array */
        !            91: 
        !            92: /*
        !            93:  *   type packing constants
        !            94:  */
        !            95: 
        !            96: #define  N_BTMASK     017
        !            97: #define  N_TMASK      060
        !            98: #define  N_TMASK1     0300
        !            99: #define  N_TMASK2     0360
        !           100: #define  N_BTSHFT     4
        !           101: #define  N_TSHIFT     2
        !           102: 
        !           103: /*
        !           104:  *   MACROS
        !           105:  */
        !           106: 
        !           107:        /*   Basic Type of  x   */
        !           108: 
        !           109: #define  BTYPE(x)  ((x) & N_BTMASK)
        !           110: 
        !           111:        /*   Is  x  a  pointer ?   */
        !           112: 
        !           113: #define  ISPTR(x)  (((x) & N_TMASK) == (DT_PTR << N_BTSHFT))
        !           114: 
        !           115:        /*   Is  x  a  function ?  */
        !           116: 
        !           117: #define  ISFCN(x)  (((x) & N_TMASK) == (DT_FCN << N_BTSHFT))
        !           118: 
        !           119:        /*   Is  x  an  array ?   */
        !           120: 
        !           121: #define  ISARY(x)  (((x) & N_TMASK) == (DT_ARY << N_BTSHFT))
        !           122: 
        !           123:        /* Is x a structure, union, or enumeration TAG? */
        !           124: 
        !           125: #define ISTAG(x)  ((x)==C_STRTAG || (x)==C_UNTAG || (x)==C_ENTAG)
        !           126: 
        !           127: #define  INCREF(x) ((((x)&~N_BTMASK)<<N_TSHIFT)|(DT_PTR<<N_BTSHFT)|(x&N_BTMASK))
        !           128: 
        !           129: #define  DECREF(x) ((((x)>>N_TSHIFT)&~N_BTMASK)|((x)&N_BTMASK))
        !           130: 
        !           131: /*
        !           132:  *     AUXILIARY ENTRY FORMAT
        !           133:  */
        !           134: 
        !           135: union auxent
        !           136: {
        !           137:        struct
        !           138:        {
        !           139:                long            x_tagndx;       /* str, un, or enum tag indx */
        !           140:                union
        !           141:                {
        !           142:                        struct
        !           143:                        {
        !           144:                                unsigned short  x_lnno; /* declaration line number */
        !           145:                                unsigned short  x_size; /* str, union, array size */
        !           146:                        } x_lnsz;
        !           147:                        long    x_fsize;        /* size of function */
        !           148:                } x_misc;
        !           149:                union
        !           150:                {
        !           151:                        struct                  /* if ISFCN, tag, or .bb */
        !           152:                        {
        !           153:                                long    x_lnnoptr;      /* ptr to fcn line # */
        !           154:                                long    x_endndx;       /* entry ndx past block end */
        !           155:                        }       x_fcn;
        !           156:                        struct                  /* if ISARY, up to 4 dimen. */
        !           157:                        {
        !           158:                                unsigned short  x_dimen[DIMNUM];
        !           159:                        }       x_ary;
        !           160:                }               x_fcnary;
        !           161:                unsigned short  x_tvndx;                /* tv index */
        !           162:        }       x_sym;
        !           163:        struct
        !           164:        {
        !           165:                char    x_fname[FILNMLEN];
        !           166:        }       x_file;
        !           167:         struct
        !           168:         {
        !           169:                 long    x_scnlen;          /* section length */
        !           170:                 unsigned short  x_nreloc;  /* number of relocation entries */
        !           171:                 unsigned short  x_nlinno;  /* number of line numbers */
        !           172:         }       x_scn;
        !           173: 
        !           174:        struct
        !           175:        {
        !           176:                long            x_tvfill;       /* tv fill value */
        !           177:                unsigned short  x_tvlen;        /* length of .tv */
        !           178:                unsigned short  x_tvran[2];     /* tv range */
        !           179:        }       x_tv;   /* info about .tv section (in auxent of symbol .tv)) */
        !           180: };
        !           181: 
        !           182: #define        SYMENT  struct syment
        !           183: #define        SYMESZ  18      /* sizeof(SYMENT) */
        !           184: 
        !           185: #define        AUXENT  union auxent
        !           186: #define        AUXESZ  18      /* sizeof(AUXENT) */
        !           187: 
        !           188: /*     Defines for "special" symbols   */
        !           189: 
        !           190: #if vax
        !           191: #define _ETEXT "_etext"
        !           192: #define        _EDATA  "_edata"
        !           193: #define        _END    "_end"
        !           194: #else
        !           195: #define _ETEXT "etext"
        !           196: #define _EDATA "edata"
        !           197: #define _END   "end"
        !           198: #endif
        !           199: 
        !           200: #define _START "_start"

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.