scc

simple c99 compiler
git clone git://git.simple-cc.org/scc
Log | Files | Refs | Submodules | README | LICENSE

scnhdr.h (1427B)


      1 /* This file is inspired in the book "Understanding and using COFF" */
      2 
      3 #define SCNNMLEN 8
      4 
      5 #define s_name       _s._s_name
      6 #define s_zeroes     _s._s_s._s_zeroes
      7 #define s_offset     _s._s_s._s_offset
      8 
      9 struct scnhdr {
     10 	union {
     11 		char _s_name[SCNNMLEN];    /* section name */
     12 		struct {
     13 			long _s_zeroes;        /* if _s_name[0-3] == 0 */
     14 			long _s_offset;        /* offset into string table */
     15 		} _s_s;
     16 	} _s;
     17 	long s_paddr;             /* physical address */
     18 	long s_vaddr;             /* virtual address */
     19 	long s_size;              /* section size */
     20 	long s_scnptr;            /* file ptr to raw data */
     21 	long s_relptr;            /* file ptr to relo info */
     22 	long s_lnnoptr;           /* file ptr to line number */
     23 	unsigned short s_nrelloc; /* number of relocation entries */
     24 	unsigned short s_nlnno;   /* number of lines entries */
     25 	long s_flags;             /* type and content flags */
     26 };
     27 
     28 #define SCNHDR struct scnhdr
     29 #define SCNHSZ 40
     30 
     31 
     32 #define STYP_REG        0x00
     33 #define STYP_DSECT      0x01
     34 #define STYP_NOLOAD     0x02
     35 #define STYP_GROUP      0x04
     36 #define STYP_PAD        0x08
     37 #define STYP_COPY       0x10
     38 #define STYP_TEXT       0x20
     39 #define STYP_DATA       0x40
     40 #define STYP_BSS        0x80
     41 #define STYP_RDATA      0x100
     42 #define STYP_INFO       0x200
     43 #define STYP_OVER       0x400
     44 #define STYP_LIB        0x800
     45 #define STYP_MERGE      0x2000
     46 #define TYP_REVERSE_PAD 0x4000
     47 #define STYP_LIT        0x8020