Annotation of coherent/f/usr/include.78/coff.h, revision 1.1

1.1     ! root        1: /* (-lgl
        !             2:  *     COHERENT Version 4.1.0
        !             3:  *     Copyright (c) 1982, 1993 by Mark Williams Company.
        !             4:  *     All rights reserved. May not be copied without permission.
        !             5:  -lgl) */
        !             6: /*
        !             7:  * /usr/include/coff.h
        !             8:  *
        !             9:  * Common Object File Format (COFF) header for COHERENT.
        !            10:  *
        !            11:  * Revised Mon Mar 29 14:28:09 1993 CST
        !            12:  */
        !            13: 
        !            14: #ifndef __COFF_H__
        !            15: #define __COFF_H__
        !            16: 
        !            17: /* File header. */
        !            18: typedef        struct  filehdr {
        !            19:        unsigned short  f_magic;                /* Magic number         */
        !            20:        unsigned short  f_nscns;                /* Number of sections   */
        !            21:        long            f_timdat;               /* Time and date        */
        !            22:        long            f_symptr;               /* Seek to symbol table */
        !            23:        long            f_nsyms;                /* Number of symbols    */
        !            24:        unsigned short  f_opthdr;               /* Optional header size */
        !            25:        unsigned short  f_flags;                /* Flags                */
        !            26: }      FILEHDR;
        !            27: 
        !            28: /* Magic number. */
        !            29: #define        C_386_MAGIC     0x14C                   /* Intel iAPX 80386     */
        !            30: #define ISCOFF(x)      ((x) == C_386_MAGIC)
        !            31: 
        !            32: /* Flags for f_flags field. */
        !            33: #define        F_RELFLG        0x0001                  /* No relocation info   */
        !            34: #define        F_EXEC          0x0002                  /* Executable           */
        !            35: #define        F_LNNO          0x0004                  /* No line numbers      */
        !            36: #define        F_LSYMS         0x0008                  /* No local symbols     */
        !            37: #define F_MINMAL       0x0010                  /* Product of strip     */
        !            38: #define        F_AR32WR        0x0100                  /* i80x86 byte order    */
        !            39: #define F_KER          0x0800                  /* Loadable driver      */
        !            40: 
        !            41: /* Optional header. */
        !            42: typedef struct aouthdr {
        !            43:        short           magic;                  /* AOUT_MAGIC           */
        !            44:        short           vstamp;                 /* Version stamp        */
        !            45:        long            tsize;                  /* .text size in bytes  */
        !            46:        long            dsize;                  /* .data size in bytes  */
        !            47:        long            bsize;                  /* .bss  size in bytes  */
        !            48:        long            entry;                  /* Entry point          */
        !            49:        long            text_start;             /* Base of .text data   */
        !            50:        long            data_start;             /* Base of .data data   */
        !            51: } AOUTHDR;
        !            52: 
        !            53: /* Magic numbers for aouthdr.magic;  COHERENT only supports Z_MAGIC. */
        !            54: #define O_MAGIC        0x107   /* .text and .data are contiguous, .text not shared */
        !            55: #define N_MAGIC 0x108  /* .data starts at seg after .text .text is protected */
        !            56: #define I_MAGIC 0x109  /* sep id */
        !            57: #define Z_MAGIC 0x10B  /* .text and .data aligned for direct page */
        !            58: 
        !            59: /* Section header. */
        !            60: typedef        struct  scnhdr  {
        !            61:        char            s_name[8];              /* Section name         */
        !            62:        long            s_paddr;                /* Physical address     */
        !            63:        long            s_vaddr;                /* Virtual address      */
        !            64:        long            s_size;                 /* Size                 */
        !            65:        long            s_scnptr;               /* Data pointer         */
        !            66:        long            s_relptr;               /* Reloc pointer        */
        !            67:        long            s_lnnoptr;              /* Line number pointer  */
        !            68:        unsigned short  s_nreloc;               /* Reloc entries        */
        !            69:        unsigned short  s_nlnno;                /* Line number entries  */
        !            70:        long            s_flags;                /* Flags                */
        !            71: }      SCNHDR;
        !            72: 
        !            73: /* Names of special sections */
        !            74: #define _TEXT  ".text"
        !            75: #define _DATA  ".data"
        !            76: #define _BSS   ".bss"
        !            77: #define        _COMMENT ".comment"
        !            78: #define _TV    ".tv"
        !            79: #define _INIT  ".init"
        !            80: #define _FINI  ".fini"
        !            81: #define _RODATA ".rodata"
        !            82: 
        !            83: /* Flags for s_flags field. */
        !            84: #define STYP_GROUP     0x004L                  /* Grouped section      */
        !            85: #define STYP_PAD       0x008L                  /* Padding section      */
        !            86: #define STYP_COPY      0x010L                  /* Copy section         */
        !            87: #define        STYP_TEXT       0x020L                  /* Code segment         */
        !            88: #define        STYP_DATA       0x040L                  /* Data segment         */
        !            89: #define        STYP_BSS        0x080L                  /* BSS segment          */
        !            90: #define STYP_INFO      0x200L                  /* Comment section      */
        !            91: #define STYP_OVER      0x400L                  /* Overlay section      */
        !            92: #define STYP_LIB       0x800L                  /* Shared library       */
        !            93: 
        !            94: /*
        !            95:  * Shared Library Section.
        !            96:  * Followed by implementation dependent data
        !            97:  * and a path name aligned on a dword boundary.
        !            98:  */
        !            99: typedef        struct  shrlib  {
        !           100:        long            entsz;                  /* Entry size in longs  */
        !           101:        long            pathndx;                /* Path offset in longs */
        !           102: }      SHRLIB;
        !           103: 
        !           104: 
        !           105: /* Relocation items. */
        !           106: typedef        struct  reloc   {
        !           107:        long            r_vaddr;                /* Address (where)      */
        !           108:        long            r_symndx;               /* Symbol index (what)  */
        !           109:        unsigned short  r_type;                 /* Type (how)           */
        !           110: #pragma align 2
        !           111: }      RELOC;
        !           112: #pragma align
        !           113: 
        !           114: #define RELSZ  (sizeof(RELOC))
        !           115: 
        !           116: /* Relocation types. */
        !           117: #define        R_DIR8          0x07                    /* 8-bit direct         */
        !           118: #define        R_DIR16         0x01                    /* 16-bit direct        */
        !           119: #define        R_DIR32         0x06                    /* 32-bit direct        */
        !           120: #define R_RELBYTE      0x0f                    /* 8 bit direct         */
        !           121: #define R_RELWORD      0x10                    /* 16 bit direct        */
        !           122: #define R_RELLONG      0x11                    /* 32 bit direct        */
        !           123: #define        R_PCRBYTE       0x12                    /* 8-bit PC-relative    */
        !           124: #define        R_PCRWORD       0x13                    /* 16-bit PC-relative   */
        !           125: #define        R_PCRLONG       0x14                    /* 32-bit PC-relative   */
        !           126: #define R_NONREL       0x00                    /* Fake item for ld -r  */
        !           127: 
        !           128: /* Line number. */
        !           129: typedef struct lineno {
        !           130:        union   {
        !           131:                long    l_symndx;               /* Fn name symbol index */
        !           132:                long    l_paddr;                /* Physical address     */
        !           133:        } l_addr;
        !           134:        unsigned short l_lnno;                  /* Line num., 0 for fn  */
        !           135: #pragma align 2
        !           136: }      LINENO;
        !           137: #pragma align
        !           138: 
        !           139: #define        LINESZ  (sizeof(LINENO))
        !           140: 
        !           141: /* Symbol table. */
        !           142: #define        SYMNMLEN        8                       /* Symbol name length   */
        !           143: #define FILNMLEN       14                      /* Chars in file name   */
        !           144: #define DIMNUM         4                       /* Dims in aux entry    */
        !           145: 
        !           146: typedef        struct  syment  {
        !           147:        union   {
        !           148:                char    _n_name[SYMNMLEN];      /* Name                 */
        !           149:                struct  {
        !           150:                        long    _n_zeroes;      /* If name[0-3] zero,   */
        !           151:                        long    _n_offset;      /* string table offset  */
        !           152:                } _n_n;
        !           153:                char    *_n_nptr[2];
        !           154:        } _n;
        !           155:        long            n_value;                /* Value                */
        !           156:        short           n_scnum;                /* Section number       */
        !           157:        unsigned short  n_type;                 /* Type                 */
        !           158:        char            n_sclass;               /* Storage class        */
        !           159:        char            n_numaux;               /* Auxilliary entries   */
        !           160: #pragma align 2
        !           161: }      SYMENT;
        !           162: #pragma align
        !           163: 
        !           164: #define SYMESZ (sizeof(SYMENT))
        !           165: #define        n_name          _n._n_name
        !           166: #define        n_zeroes        _n._n_n._n_zeroes
        !           167: #define        n_offset        _n._n_n._n_offset
        !           168: 
        !           169: /* Special section numbers */
        !           170: #define N_UNDEF         0                              /* Undefined            */
        !           171: #define N_ABS  -1                              /* Absolute             */
        !           172: #define N_DEBUG        -2                              /* Debug                */
        !           173: #define N_TV   -3              /* Needs preload transfer vector        */
        !           174: #define P_TV   -4              /* Needs postload transfer vector       */
        !           175: 
        !           176: /* Storage classes. */
        !           177: #define C_EFCN         -1                      /* End of function      */
        !           178: #define C_NULL         0                       /* None                 */
        !           179: #define C_AUTO         1                       /* Automatic            */
        !           180: #define        C_EXT           2                       /* External             */
        !           181: #define        C_STAT          3                       /* Static               */
        !           182: #define C_REG          4                       /* Register             */
        !           183: #define C_EXTDEF       5                       /* External definition  */
        !           184: #define C_LABEL                6                       /* Label                */
        !           185: #define C_ULABEL       7                       /* Undefined label      */
        !           186: #define C_MOS          8                       /* Member of structure  */
        !           187: #define C_ARG          9                       /* Function argument    */
        !           188: #define C_STRTAG       10                      /* Structure tag        */
        !           189: #define        C_MOU           11                      /* Member of union      */
        !           190: #define C_UNTAG                12                      /* Union tag            */
        !           191: #define C_TPDEF                13                      /* Typedef              */
        !           192: #define C_USTATIC      14                      /* Undefined static     */
        !           193: #define C_ENTAG                15                      /* Enum tag             */
        !           194: #define C_MOE          16                      /* Member of enum       */
        !           195: #define C_REGPARM      17                      /* Register parameter   */
        !           196: #define C_FIELD                18                      /* Bit field            */
        !           197: #define C_BLOCK                100                     /* Block (.bb or .eb)   */
        !           198: #define        C_FCN           101                     /* Function (.bf or .ef) */
        !           199: #define C_EOS          102                     /* End of structure     */
        !           200: #define C_FILE         103                     /* File name            */
        !           201: 
        !           202: #define ISTAG(x)       (C_STRTAG==(x) || C_UNTAG==(x) || C_ENTAG==(x))
        !           203: 
        !           204: /* Fundimental types. */
        !           205: #define T_NULL         0
        !           206: #define T_ARG          1
        !           207: #define T_CHAR         2
        !           208: #define T_SHORT                3
        !           209: #define T_INT          4
        !           210: #define T_LONG         5
        !           211: #define T_FLOAT                6
        !           212: #define T_DOUBLE       7
        !           213: #define T_STRUCT       8
        !           214: #define T_UNION                9
        !           215: #define T_ENUM         10
        !           216: #define T_MOE          11                      /* Member of enumeration */
        !           217: #define T_UCHAR                12
        !           218: #define T_USHORT       13
        !           219: #define T_UINT         14
        !           220: #define T_ULONG                15
        !           221: 
        !           222: /* Derived types in n_type. */
        !           223: #define DT_NON 0                               /* Non-derived type     */
        !           224: #define DT_PTR 1                               /* Pointer              */
        !           225: #define DT_FCN 2                               /* Function             */
        !           226: #define DT_ARY 3                               /* Array                */
        !           227: 
        !           228: /* Type packing constants. */
        !           229: #define N_BTMASK       0x0F                    /* Mask for basic type  */
        !           230: #define N_TMASK        0x30                    /* Derived type mask    */
        !           231: #define N_TSHIFT       2                       /* Shift for more derived bits */
        !           232: #define        N_BTSHFT        4                       /* Shift for derived type */
        !           233:  
        !           234: /* Type processing macros. */
        !           235: #define BTYPE(x)  ((x) & N_BTMASK)             /* Base type            */
        !           236: #define ISPTR(x)  ((DT_PTR<<N_BTSHFT)==((x)&N_TMASK))  /* Pointer?     */
        !           237: #define ISFCN(x)  ((DT_FCN<<N_BTSHFT)==((x)&N_TMASK))  /* Function?    */
        !           238: #define ISARY(x)  ((DT_ARY<<N_BTSHFT)==((x)&N_TMASK))  /* Array?       */
        !           239: #define INCREF(x) ((((x)&~N_BTMASK)<<N_TSHIFT)|(DT_PTR<<N_BTSHFT)|((x)&N_BTMASK))
        !           240: #define DECREF(x) ((((x)>>N_TSHIFT)&~N_BTMASK)|((x)&N_BTMASK))
        !           241: 
        !           242: /* Symbol aux entries. */
        !           243: typedef union auxent   {
        !           244: #pragma align 2
        !           245:        struct  {
        !           246:                long    x_tagndx;       /* struct/union/enum tag index  */
        !           247:                union   {
        !           248:                        struct  {
        !           249:                                unsigned short  x_lnno; /* Decl. line   */
        !           250:                                unsigned short  x_size; /* Size         */
        !           251:                        } x_lnsz;
        !           252:                        long    x_fsize;        /* Function size        */
        !           253:                } x_misc;
        !           254:                union   {
        !           255:                        struct  {               /* Functions            */
        !           256:                                long    x_lnnoptr;      /* line # ptr   */
        !           257:                                long    x_endndx;       /* index of .eb */
        !           258:                        } x_fcn;
        !           259:                        struct  {               /* Arrays               */
        !           260:                                unsigned short x_dimen[DIMNUM]; /* Dims */
        !           261:                        } x_ary;
        !           262:                } x_fcnary;
        !           263:                unsigned short  x_tvndx;        /* TV index             */
        !           264:        } x_sym;
        !           265:        struct {                                /* File names           */
        !           266:                char x_fname[FILNMLEN];         /* File name            */
        !           267:        } x_file;
        !           268:        struct  {                               /* Sections             */
        !           269:                long    x_scnlen;               /* Section length       */
        !           270:                unsigned short  x_nreloc;       /* Reloc entrys         */
        !           271:                unsigned short  x_nlinno;       /* Line number entries  */
        !           272:        } x_scn;
        !           273: }      AUXENT;
        !           274: #pragma align
        !           275: #define        ae_tagndx       x_sym.x_tagndx
        !           276: #define        ae_lnno         x_sym.x_misc.x_lnsz.x_lnno
        !           277: #define        ae_size         x_sym.x_misc.x_lnsz.x_size
        !           278: #define        ae_fsize        x_sym.x_misc.x_fsize
        !           279: #define        ae_lnnoptr      x_sym.x_fcnary.x_fcn.x_lnnoptr
        !           280: #define        ae_endndx       x_sym.x_fcnary.x_fcn.x_endndx
        !           281: #define        ae_dimen        x_sym.x_fcnary.x_ary.x_dimen
        !           282: #define        ae_tvndx        x_sym.x_tvndx
        !           283: #define        ae_fname        x_file.x_fname
        !           284: #define        ae_scnlen       x_scn.x_scnlen
        !           285: #define        ae_nreloc       x_scn.x_nreloc
        !           286: #define        ae_nlinno       x_scn.x_nlinno
        !           287: #define AUXESZ (sizeof(AUXENT))
        !           288: 
        !           289: #endif                                          /* COFF_H */
        !           290: 
        !           291: /* end of coff.h */

unix.superglobalmegacorp.com

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