⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 coff.h

📁 Tiny C&C++,看看吧,也许用的着
💻 H
📖 第 1 页 / 共 2 页
字号:
/**************************************************************************//*  COFF.H                                                                *//*     COFF data structures and related definitions used by the linker    *//**************************************************************************//*------------------------------------------------------------------------*//*  COFF FILE HEADER                                                      *//*------------------------------------------------------------------------*/struct filehdr {        unsigned short  f_magic;        /* magic number */        unsigned short  f_nscns;        /* number of sections */        long            f_timdat;       /* time & date stamp */        long            f_symptr;       /* file pointer to symtab */        long            f_nsyms;        /* number of symtab entries */        unsigned short  f_opthdr;       /* sizeof(optional hdr) */        unsigned short  f_flags;        /* flags */        unsigned short  f_TargetID;     /* for C6x = 0x0099 */        };/*------------------------------------------------------------------------*//*  File header flags                                                     *//*------------------------------------------------------------------------*/#define  F_RELFLG   0x01       /* relocation info stripped from file       */#define  F_EXEC     0x02       /* file is executable (no unresolved refs)  */#define  F_LNNO     0x04       /* line nunbers stripped from file          */#define  F_LSYMS    0x08       /* local symbols stripped from file         */#define  F_GSP10    0x10       /* 34010 version                            */#define  F_GSP20    0x20       /* 34020 version                            */#define  F_SWABD    0x40       /* bytes swabbed (in names)                 */#define  F_AR16WR   0x80       /* byte ordering of an AR16WR (PDP-11)      */#define  F_LITTLE   0x100      /* byte ordering of an AR32WR (vax)         */#define  F_BIG      0x200      /* byte ordering of an AR32W (3B, maxi)     */#define  F_PATCH    0x400      /* contains "patch" list in optional header */#define  F_NODF     0x400   #define F_VERSION    (F_GSP10  | F_GSP20)   #define F_BYTE_ORDER (F_LITTLE | F_BIG)#define FILHDR  struct filehdr//#define FILHSZ  sizeof(FILHDR) #define FILHSZ  22                // above rounds to align on 4 bytes which causes problems #define COFF_C67_MAGIC 0x00c2/*------------------------------------------------------------------------*//*  Macros to recognize magic numbers                                     *//*------------------------------------------------------------------------*/#define ISMAGIC(x)      (((unsigned short)(x))==(unsigned short)magic)#define ISARCHIVE(x)    ((((unsigned short)(x))==(unsigned short)ARTYPE))#define BADMAGIC(x)     (((unsigned short)(x) & 0x8080) && !ISMAGIC(x))/*------------------------------------------------------------------------*//*  OPTIONAL FILE HEADER                                                  *//*------------------------------------------------------------------------*/typedef struct aouthdr {        short   magic;          /* see magic.h                          */        short   vstamp;         /* version stamp                        */        long    tsize;          /* text size in bytes, padded to FW bdry*/        long    dsize;          /* initialized data "  "                */        long    bsize;          /* uninitialized data "   "             */        long    entrypt;        /* entry pt.                            */        long    text_start;     /* base of text used for this file      */        long    data_start;     /* base of data used for this file      */} AOUTHDR;#define AOUTSZ  sizeof(AOUTHDR)/*----------------------------------------------------------------------*//*      When a UNIX aout header is to be built in the optional header,  *//*      the following magic numbers can appear in that header:          */ /*                                                                      *//*              AOUT1MAGIC : default : readonly sharable text segment   *//*              AOUT2MAGIC:          : writable text segment            *//*              PAGEMAGIC  :         : configured for paging            *//*----------------------------------------------------------------------*/#define AOUT1MAGIC 0410#define AOUT2MAGIC 0407#define PAGEMAGIC  0413/*------------------------------------------------------------------------*//*  COMMON ARCHIVE FILE STRUCTURES                                        *//*                                                                        *//*       ARCHIVE File Organization:                                       *//*       _______________________________________________                  *//*       |__________ARCHIVE_MAGIC_STRING_______________|                  *//*       |__________ARCHIVE_FILE_MEMBER_1______________|                  *//*       |                                             |                  *//*       |       Archive File Header "ar_hdr"          |                  *//*       |.............................................|                  *//*       |       Member Contents                       |                  *//*       |               1. External symbol directory  |                  *//*       |               2. Text file                  |                  *//*       |_____________________________________________|                  *//*       |________ARCHIVE_FILE_MEMBER_2________________|                  *//*       |               "ar_hdr"                      |                  *//*       |.............................................|                  *//*       |       Member Contents (.o or text file)     |                  *//*       |_____________________________________________|                  *//*       |       .               .               .     |                  *//*       |       .               .               .     |                  *//*       |       .               .               .     |                  *//*       |_____________________________________________|                  *//*       |________ARCHIVE_FILE_MEMBER_n________________|                  *//*       |               "ar_hdr"                      |                  *//*       |.............................................|                  *//*       |               Member Contents               |                  *//*       |_____________________________________________|                  *//*                                                                        *//*------------------------------------------------------------------------*/#define COFF_ARMAG   "!<arch>\n"#define SARMAG  8#define ARFMAG  "`\n"struct ar_hdr           /* archive file member header - printable ascii */{        char    ar_name[16];    /* file member name - `/' terminated */        char    ar_date[12];    /* file member date - decimal */        char    ar_uid[6];      /* file member user id - decimal */        char    ar_gid[6];      /* file member group id - decimal */        char    ar_mode[8];     /* file member mode - octal */        char    ar_size[10];    /* file member size - decimal */        char    ar_fmag[2];     /* ARFMAG - string to end header */};/*------------------------------------------------------------------------*//*  SECTION HEADER                                                        *//*------------------------------------------------------------------------*/struct scnhdr {        char            s_name[8];      /* section name */        long            s_paddr;        /* physical address */        long            s_vaddr;        /* virtual address */        long            s_size;         /* section size */        long            s_scnptr;       /* file ptr to raw data for section */        long            s_relptr;       /* file ptr to relocation */        long            s_lnnoptr;      /* file ptr to line numbers */        unsigned int	s_nreloc;       /* number of relocation entries */        unsigned int	s_nlnno;        /* number of line number entries */        unsigned int	s_flags;        /* flags */		unsigned short	s_reserved;     /* reserved byte */		unsigned short  s_page;         /* memory page id */        };#define SCNHDR  struct scnhdr#define SCNHSZ  sizeof(SCNHDR)/*------------------------------------------------------------------------*//* Define constants for names of "special" sections                       *//*------------------------------------------------------------------------*///#define _TEXT    ".text"#define _DATA    ".data"#define _BSS     ".bss"#define _CINIT   ".cinit"#define _TV      ".tv"/*------------------------------------------------------------------------*//* The low 4 bits of s_flags is used as a section "type"                  *//*------------------------------------------------------------------------*/#define STYP_REG    0x00  /* "regular" : allocated, relocated, loaded */#define STYP_DSECT  0x01  /* "dummy"   : not allocated, relocated, not loaded */#define STYP_NOLOAD 0x02  /* "noload"  : allocated, relocated, not loaded */#define STYP_GROUP  0x04  /* "grouped" : formed of input sections */#define STYP_PAD    0x08  /* "padding" : not allocated, not relocated, loaded */#define STYP_COPY   0x10  /* "copy"    : used for C init tables -                                                 not allocated, relocated,                                                loaded;  reloc & lineno                                                entries processed normally */#define STYP_TEXT   0x20   /* section contains text only */#define STYP_DATA   0x40   /* section contains data only */#define STYP_BSS    0x80   /* section contains bss only */#define STYP_ALIGN  0x100  /* align flag passed by old version assemblers */#define ALIGN_MASK  0x0F00 /* part of s_flags that is used for align vals */#define ALIGNSIZE(x) (1 << ((x & ALIGN_MASK) >> 8))/*------------------------------------------------------------------------*//*  RELOCATION ENTRIES                                                    *//*------------------------------------------------------------------------*/struct reloc{   long            r_vaddr;        /* (virtual) address of reference */   short           r_symndx;       /* index into symbol table */   unsigned short  r_disp;         /* additional bits for address calculation */   unsigned short  r_type;         /* relocation type */};#define RELOC   struct reloc#define RELSZ   10                 /* sizeof(RELOC) *//*--------------------------------------------------------------------------*//*   define all relocation types                                            *//*--------------------------------------------------------------------------*/#define R_ABS           0         /* absolute address - no relocation       */#define R_DIR16         01        /* UNUSED                                 */#define R_REL16         02        /* UNUSED                                 */#define R_DIR24         04        /* UNUSED                                 */#define R_REL24         05        /* 24 bits, direct                        */#define R_DIR32         06        /* UNUSED                                 */#define R_RELBYTE      017        /* 8 bits, direct                         */#define R_RELWORD      020        /* 16 bits, direct                        */#define R_RELLONG      021        /* 32 bits, direct                        */#define R_PCRBYTE      022        /* 8 bits, PC-relative                    */#define R_PCRWORD      023        /* 16 bits, PC-relative                   */#define R_PCRLONG      024        /* 32 bits, PC-relative                   */#define R_OCRLONG      030        /* GSP: 32 bits, one's complement direct  */#define R_GSPPCR16     031        /* GSP: 16 bits, PC relative (in words)   */#define R_GSPOPR32     032        /* GSP: 32 bits, direct big-endian        */#define R_PARTLS16     040        /* Brahma: 16 bit offset of 24 bit address*/#define R_PARTMS8      041        /* Brahma: 8 bit page of 24 bit address   */#define R_PARTLS7      050        /* DSP: 7 bit offset of 16 bit address    */#define R_PARTMS9      051        /* DSP: 9 bit page of 16 bit address      */#define R_REL13        052        /* DSP: 13 bits, direct                   *//*------------------------------------------------------------------------*//*  LINE NUMBER ENTRIES                                                   *//*------------------------------------------------------------------------*/struct lineno{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -