1 /**************************************************************************** 2 **************************************************************************** 3 *** 4 *** This header was automatically generated from a Linux kernel header 5 *** of the same name, to make information necessary for userspace to 6 *** call into the kernel available to libc. It contains only constants, 7 *** structures, and macros generated from the original header, and thus, 8 *** contains no copyrightable information. 9 *** 10 **************************************************************************** 11 ****************************************************************************/ 12 #ifndef __A_OUT_GNU_H__ 13 #define __A_OUT_GNU_H__ 14 15 #define __GNU_EXEC_MACROS__ 16 17 #ifndef __STRUCT_EXEC_OVERRIDE__ 18 19 #include <asm/a.out.h> 20 21 #endif 22 23 enum machine_type { 24 #ifdef M_OLDSUN2 25 M__OLDSUN2 = M_OLDSUN2, 26 #else 27 M_OLDSUN2 = 0, 28 #endif 29 #ifdef M_68010 30 M__68010 = M_68010, 31 #else 32 M_68010 = 1, 33 #endif 34 #ifdef M_68020 35 M__68020 = M_68020, 36 #else 37 M_68020 = 2, 38 #endif 39 #ifdef M_SPARC 40 M__SPARC = M_SPARC, 41 #else 42 M_SPARC = 3, 43 #endif 44 45 M_386 = 100, 46 M_MIPS1 = 151, 47 M_MIPS2 = 152 48 }; 49 50 #ifndef N_MAGIC 51 #define N_MAGIC(exec) ((exec).a_info & 0xffff) 52 #endif 53 #define N_MACHTYPE(exec) ((enum machine_type)(((exec).a_info >> 16) & 0xff)) 54 #define N_FLAGS(exec) (((exec).a_info >> 24) & 0xff) 55 #define N_SET_INFO(exec, magic, type, flags) ((exec).a_info = ((magic) & 0xffff) | (((int)(type) & 0xff) << 16) | (((flags) & 0xff) << 24)) 56 #define N_SET_MAGIC(exec, magic) ((exec).a_info = (((exec).a_info & 0xffff0000) | ((magic) & 0xffff))) 57 58 #define N_SET_MACHTYPE(exec, machtype) ((exec).a_info = ((exec).a_info&0xff00ffff) | ((((int)(machtype))&0xff) << 16)) 59 60 #define N_SET_FLAGS(exec, flags) ((exec).a_info = ((exec).a_info&0x00ffffff) | (((flags) & 0xff) << 24)) 61 62 #define OMAGIC 0407 63 64 #define NMAGIC 0410 65 66 #define ZMAGIC 0413 67 68 #define QMAGIC 0314 69 70 #define CMAGIC 0421 71 72 #ifndef N_BADMAG 73 #define N_BADMAG(x) (N_MAGIC(x) != OMAGIC && N_MAGIC(x) != NMAGIC && N_MAGIC(x) != ZMAGIC && N_MAGIC(x) != QMAGIC) 74 #endif 75 76 #define _N_HDROFF(x) (1024 - sizeof (struct exec)) 77 78 #ifndef N_TXTOFF 79 #define N_TXTOFF(x) (N_MAGIC(x) == ZMAGIC ? _N_HDROFF((x)) + sizeof (struct exec) : (N_MAGIC(x) == QMAGIC ? 0 : sizeof (struct exec))) 80 #endif 81 82 #ifndef N_DATOFF 83 #define N_DATOFF(x) (N_TXTOFF(x) + (x).a_text) 84 #endif 85 86 #ifndef N_TRELOFF 87 #define N_TRELOFF(x) (N_DATOFF(x) + (x).a_data) 88 #endif 89 90 #ifndef N_DRELOFF 91 #define N_DRELOFF(x) (N_TRELOFF(x) + N_TRSIZE(x)) 92 #endif 93 94 #ifndef N_SYMOFF 95 #define N_SYMOFF(x) (N_DRELOFF(x) + N_DRSIZE(x)) 96 #endif 97 98 #ifndef N_STROFF 99 #define N_STROFF(x) (N_SYMOFF(x) + N_SYMSIZE(x)) 100 #endif 101 102 #ifndef N_TXTADDR 103 #define N_TXTADDR(x) (N_MAGIC(x) == QMAGIC ? PAGE_SIZE : 0) 104 #endif 105 106 #if defined(vax) || defined(hp300) || defined(pyr) 107 #define SEGMENT_SIZE page_size 108 #endif 109 #ifdef sony 110 #define SEGMENT_SIZE 0x2000 111 #endif 112 #ifdef is68k 113 #define SEGMENT_SIZE 0x20000 114 #endif 115 #if defined(m68k) && defined(PORTAR) 116 #define PAGE_SIZE 0x400 117 #define SEGMENT_SIZE PAGE_SIZE 118 #endif 119 120 #ifdef linux 121 #include <asm/page.h> 122 #if defined(__i386__) || defined(__mc68000__) 123 #define SEGMENT_SIZE 1024 124 #else 125 #ifndef SEGMENT_SIZE 126 #define SEGMENT_SIZE PAGE_SIZE 127 #endif 128 #endif 129 #endif 130 131 #define _N_SEGMENT_ROUND(x) ALIGN(x, SEGMENT_SIZE) 132 133 #define _N_TXTENDADDR(x) (N_TXTADDR(x)+(x).a_text) 134 135 #ifndef N_DATADDR 136 #define N_DATADDR(x) (N_MAGIC(x)==OMAGIC? (_N_TXTENDADDR(x)) : (_N_SEGMENT_ROUND (_N_TXTENDADDR(x)))) 137 #endif 138 139 #ifndef N_BSSADDR 140 #define N_BSSADDR(x) (N_DATADDR(x) + (x).a_data) 141 #endif 142 143 #ifndef N_NLIST_DECLARED 144 struct nlist { 145 union { 146 char *n_name; 147 struct nlist *n_next; 148 long n_strx; 149 } n_un; 150 unsigned char n_type; 151 char n_other; 152 short n_desc; 153 unsigned long n_value; 154 }; 155 #endif 156 157 #ifndef N_UNDF 158 #define N_UNDF 0 159 #endif 160 #ifndef N_ABS 161 #define N_ABS 2 162 #endif 163 #ifndef N_TEXT 164 #define N_TEXT 4 165 #endif 166 #ifndef N_DATA 167 #define N_DATA 6 168 #endif 169 #ifndef N_BSS 170 #define N_BSS 8 171 #endif 172 #ifndef N_FN 173 #define N_FN 15 174 #endif 175 176 #ifndef N_EXT 177 #define N_EXT 1 178 #endif 179 #ifndef N_TYPE 180 #define N_TYPE 036 181 #endif 182 #ifndef N_STAB 183 #define N_STAB 0340 184 #endif 185 186 #define N_INDR 0xa 187 188 #define N_SETA 0x14 189 #define N_SETT 0x16 190 #define N_SETD 0x18 191 #define N_SETB 0x1A 192 193 #define N_SETV 0x1C 194 195 #ifndef N_RELOCATION_INFO_DECLARED 196 197 struct relocation_info 198 { 199 200 int r_address; 201 202 unsigned int r_symbolnum:24; 203 204 unsigned int r_pcrel:1; 205 206 unsigned int r_length:2; 207 208 unsigned int r_extern:1; 209 210 #ifdef NS32K 211 unsigned r_bsr:1; 212 unsigned r_disp:1; 213 unsigned r_pad:2; 214 #else 215 unsigned int r_pad:4; 216 #endif 217 }; 218 #endif 219 220 #endif 221