Annotation of researchv9/jerq/include/syms.h, revision 1.1

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