/* * Mildly edited outmix.h for use with Gnu ld * ++jrb * Thanks to meulenbr@cst.prl.philips.nl for all his help * * further refined: Thanks to Frans and Simon Poole for the info. * ++jrb 1/11/89 */ /* * output format for MINIX-PC and MINIX-ST. * for the i8088 longs are stored with low-order byte first. * for the 68000 longs are stored with high-order byte first. * this is a mess! * This MINIX format is a stripped down and mutilated version of * the Vrije Universiteit flavor of the ACK loadfile format. */ struct aexec { long a_magic; /* contains a.out magic number */ long a_versn; /* header length and version */ long a_text; /* # bytes in program text segment */ long a_data; /* # bytes in program data segment */ long a_bss; /* # bytes in program bss segment */ long a_entry; /* entry point */ long a_msize; /* # bytes allocated for program */ long a_syms; /* # bytes in symbol table */ }; #define A_MAGICD 0x04100301L /* combined I & D space */ #define A_MAGICI 0x04200301L /* separate I & D space */ #define CMAGIC A_MAGICD #define A_VERSION 0x00000020L /* * Macros which take exec structures as arguments and tell whether * the file has a reasonable magic number or offsets to text|symbols|strings. */ #define A_BADMAG(x) (((x).a_magic)!=CMAGIC) #define A_TXTOFF(x) (sizeof (struct aexec)) #define A_DATOFF(x) (A_TXTOFF(x) + (x).a_text) #define A_SYMOFF(x) (A_TXTOFF(x) + (x).a_text+(x).a_data) #define A_STROFF(x) (A_SYMOFF(x) + (x).a_syms) /* * this is really called stuct nlist in a.out.h, but we * cannot use that name as it conflicts with struct nlist of * gnu-out.h * */ struct asym { char a_name[8]; /* symbol name */ long a_value; /* symbol value */ char a_sclass; /* storage class */ char a_numaux; /* number of auxiliary entries */ short a_type; /* language base and derived type */ }; /* low bits of a_sclass */ #define A_UNDF 00 /* undefined */ #define A_ABS 01 /* absolute */ #define A_TEXT 02 /* text */ #define A_DATA 03 /* data */ #define A_BSS 04 /* bss */ #define A_COMMON 05 /* common */ /* high bits of a_sclass */ #define A_CLASS 0370 /* mask */ #define A_NULL #define A_EXT 0020 /* external */ #define A_STAT 0030 /* static */