home *** CD-ROM | disk | FTP | other *** search
/ GEMini Atari / GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso / zip / gnu / utlsrc33.lzh / UTLSRC33 / MINIX-OU.H < prev    next >
C/C++ Source or Header  |  1993-07-30  |  2KB  |  75 lines

  1. /*
  2.  * Mildly edited outmix.h for use with Gnu ld
  3.  *    ++jrb
  4.  * Thanks to meulenbr@cst.prl.philips.nl for all his help
  5.  *
  6.  * further refined: Thanks to Frans and Simon Poole for the info.
  7.  *    ++jrb 1/11/89
  8.  */
  9.  
  10. /*
  11.  * output format for MINIX-PC and MINIX-ST.
  12.  * for the i8088 longs are stored with low-order byte first.
  13.  * for the 68000 longs are stored with high-order byte first.
  14.  * this is a mess!
  15.  * This MINIX format is a stripped down and mutilated version of
  16.  * the Vrije Universiteit flavor of the ACK loadfile format.
  17.  */
  18.  
  19. struct aexec {
  20.     long     a_magic;    /* contains a.out magic number */
  21.     long    a_versn;    /* header length and version */
  22.     long    a_text;        /* # bytes in program text segment */
  23.     long    a_data;        /* # bytes in program data segment */
  24.     long    a_bss;        /* # bytes in program bss  segment */
  25.     long    a_entry;    /* entry point */
  26.     long    a_msize;    /* # bytes allocated for program */
  27.     long    a_syms;        /* # bytes in symbol table */
  28. };
  29.  
  30. #define    A_MAGICD    0x04100301L    /* combined I & D space */
  31. #define    A_MAGICI    0x04200301L    /* separate I & D space */
  32.  
  33. #define CMAGIC        A_MAGICD
  34.  
  35. #define    A_VERSION    0x00000020L
  36.  
  37. /*
  38.  * Macros which take exec structures as arguments and tell whether
  39.  * the file has a reasonable magic number or offsets to text|symbols|strings.
  40.  */
  41. #define    A_BADMAG(x)     (((x).a_magic)!=CMAGIC)
  42. #define    A_TXTOFF(x)    (sizeof (struct aexec))
  43. #define A_DATOFF(x)    (A_TXTOFF(x) + (x).a_text)
  44. #define A_SYMOFF(x)    (A_TXTOFF(x) + (x).a_text+(x).a_data)
  45. #define    A_STROFF(x)    (A_SYMOFF(x) + (x).a_syms)
  46.  
  47. /*
  48.  * this is really called stuct nlist in a.out.h, but we
  49.  * cannot use that name as it conflicts with struct nlist of
  50.  * gnu-out.h
  51.  *
  52.  */
  53. struct  asym
  54. {       char   a_name[8];      /* symbol name */
  55.     long   a_value;        /* symbol value */
  56.     char   a_sclass;       /* storage class */
  57.     char   a_numaux;       /* number of auxiliary entries */
  58.     short  a_type;         /* language base and derived type */
  59. };
  60.  
  61. /* low bits of a_sclass */
  62. #define A_UNDF        00        /* undefined */
  63. #define A_ABS        01        /* absolute  */
  64. #define    A_TEXT        02        /* text         */
  65. #define    A_DATA        03        /* data      */
  66. #define    A_BSS        04        /* bss       */
  67. #define A_COMMON    05        /* common    */
  68.  
  69. /* high bits of a_sclass */
  70. #define A_CLASS        0370        /* mask      */
  71. #define A_NULL
  72. #define A_EXT        0020        /* external  */
  73. #define A_STAT        0030        /* static    */
  74.  
  75.