Add some syslink debugging programs.
[games.git] / contrib / file-4 / magic / Magdir / elf
1
2 #------------------------------------------------------------------------------
3 # elf:  file(1) magic for ELF executables
4 #
5 # We have to check the byte order flag to see what byte order all the
6 # other stuff in the header is in.
7 #
8 # What're the correct byte orders for the nCUBE and the Fujitsu VPP500?
9 #
10 # updated by Daniel Quinlan (quinlan@yggdrasil.com)
11 0       string          \177ELF         ELF
12 >4      byte            0               invalid class
13 >4      byte            1               32-bit
14 >4      byte            2               64-bit
15 >5      byte            0               invalid byte order
16 >5      byte            1               LSB
17 >>16    leshort         0               no file type,
18 >>16    leshort         1               relocatable,
19 >>16    leshort         2               executable,
20 >>16    leshort         3               shared object,
21 # Core handling from Peter Tobias <tobias@server.et-inf.fho-emden.de>
22 # corrections by Christian 'Dr. Disk' Hechelmann <drdisk@ds9.au.s.shuttle.de>
23 >>16    leshort         4               core file
24 # Core file detection is not reliable.
25 #>>>(0x38+0xcc) string  >\0             of '%s'
26 #>>>(0x38+0x10) lelong  >0              (signal %d),
27 >>16    leshort         &0xff00         processor-specific,
28 >>18    leshort         0               no machine,
29 >>18    leshort         1               AT&T WE32100 - invalid byte order,
30 >>18    leshort         2               SPARC - invalid byte order,
31 >>18    leshort         3               Intel 80386,
32 >>18    leshort         4               Motorola
33 >>>36   lelong          &0x01000000     68000 - invalid byte order,
34 >>>36   lelong          &0x00810000     CPU32 - invalid byte order,
35 >>>36   lelong          0               68020 - invalid byte order,
36 >>18    leshort         5               Motorola 88000 - invalid byte order,
37 >>18    leshort         6               Intel 80486,
38 >>18    leshort         7               Intel 80860,
39 # The official e_machine number for MIPS is now #8, regardless of endianness.
40 # The second number (#10) will be deprecated later. For now, we still
41 # say something if #10 is encountered, but only gory details for #8.
42 >>18    leshort         8               MIPS,
43 >>>36   lelong          &0x20           N32
44 >>18    leshort         10              MIPS,
45 >>>36   lelong          &0x20           N32
46 >>18    leshort         8
47 # only for 32-bit
48 >>>4    byte            1
49 >>>>36  lelong&0xf0000000       0x00000000      MIPS-I
50 >>>>36  lelong&0xf0000000       0x10000000      MIPS-II
51 >>>>36  lelong&0xf0000000       0x20000000      MIPS-III
52 >>>>36  lelong&0xf0000000       0x30000000      MIPS-IV
53 >>>>36  lelong&0xf0000000       0x40000000      MIPS-V
54 >>>>36  lelong&0xf0000000       0x60000000      MIPS32
55 >>>>36  lelong&0xf0000000       0x70000000      MIPS64
56 >>>>36  lelong&0xf0000000       0x80000000      MIPS32 rel2
57 >>>>36  lelong&0xf0000000       0x90000000      MIPS64 rel2
58 # only for 64-bit
59 >>>4    byte            2
60 >>>>48  lelong&0xf0000000       0x00000000      MIPS-I
61 >>>>48  lelong&0xf0000000       0x10000000      MIPS-II
62 >>>>48  lelong&0xf0000000       0x20000000      MIPS-III
63 >>>>48  lelong&0xf0000000       0x30000000      MIPS-IV
64 >>>>48  lelong&0xf0000000       0x40000000      MIPS-V
65 >>>>48  lelong&0xf0000000       0x60000000      MIPS32
66 >>>>48  lelong&0xf0000000       0x70000000      MIPS64 
67 >>>>48  lelong&0xf0000000       0x80000000      MIPS32 rel2
68 >>>>48  lelong&0xf0000000       0x90000000      MIPS64 rel2
69 >>18    leshort         9               Amdahl - invalid byte order,
70 >>18    leshort         10              MIPS (deprecated),
71 >>18    leshort         11              RS6000 - invalid byte order,
72 >>18    leshort         15              PA-RISC - invalid byte order,
73 >>>50   leshort         0x0214          2.0
74 >>>48   leshort         &0x0008         (LP64),
75 >>18    leshort         16              nCUBE,
76 >>18    leshort         17              Fujitsu VPP500,
77 >>18    leshort         18              SPARC32PLUS,
78 >>18    leshort         20              PowerPC,
79 >>18    leshort         22              IBM S/390,
80 >>18    leshort         36              NEC V800,
81 >>18    leshort         37              Fujitsu FR20,
82 >>18    leshort         38              TRW RH-32,
83 >>18    leshort         39              Motorola RCE,
84 >>18    leshort         40              ARM,
85 >>18    leshort         41              Alpha,
86 >>18    leshort         0xa390          IBM S/390 (obsolete),
87 >>18    leshort         42              Renesas SH,
88 >>18    leshort         43              SPARC V9 - invalid byte order,
89 >>18    leshort         44              Siemens Tricore Embedded Processor,
90 >>18    leshort         45              Argonaut RISC Core, Argonaut Technologies Inc.,
91 >>18    leshort         46              Renesas H8/300,
92 >>18    leshort         47              Renesas H8/300H,
93 >>18    leshort         48              Renesas H8S,
94 >>18    leshort         49              Renesas H8/500,
95 >>18    leshort         50              IA-64,
96 >>18    leshort         51              Stanford MIPS-X,
97 >>18    leshort         52              Motorola Coldfire,
98 >>18    leshort         53              Motorola M68HC12,
99 >>18    leshort         62              x86-64,
100 >>18    leshort         75              Digital VAX,
101 >>18    leshort         88              Renesas M32R,
102 >>18    leshort         94              Tensilica Xtensa,
103 >>18    leshort         97              NatSemi 32k,
104 >>18    leshort         0x9026          Alpha (unofficial),
105 >>20    lelong          0               invalid version
106 >>20    lelong          1               version 1
107 >>36    lelong          1               MathCoPro/FPU/MAU Required
108 >5      byte            2               MSB
109 >>16    beshort         0               no file type,
110 >>16    beshort         1               relocatable,
111 >>16    beshort         2               executable,
112 >>16    beshort         3               shared object,
113 >>16    beshort         4               core file,
114 #>>>(0x38+0xcc) string  >\0             of '%s'
115 #>>>(0x38+0x10) belong  >0              (signal %d),
116 >>16    beshort         &0xff00         processor-specific,
117 >>18    beshort         0               no machine,
118 >>18    beshort         1               AT&T WE32100,
119 >>18    beshort         2               SPARC,
120 >>18    beshort         3               Intel 80386 - invalid byte order,
121 >>18    beshort         4               Motorola
122 >>>36   belong          &0x01000000     68000,
123 >>>36   belong          &0x00810000     CPU32,
124 >>>36   belong          0               68020,
125 >>18    beshort         5               Motorola 88000,
126 >>18    beshort         6               Intel 80486 - invalid byte order,
127 >>18    beshort         7               Intel 80860,
128 # only for MIPS - see comment in little-endian section above.
129 >>18    beshort         8               MIPS,
130 >>>36   belong          &0x20           N32
131 >>18    beshort         10              MIPS,
132 >>>36   belong          &0x20           N32
133 >>18    beshort         8
134 # only for 32-bit
135 >>>4    byte            1
136 >>>>36  belong&0xf0000000       0x00000000      MIPS-I
137 >>>>36  belong&0xf0000000       0x10000000      MIPS-II
138 >>>>36  belong&0xf0000000       0x20000000      MIPS-III
139 >>>>36  belong&0xf0000000       0x30000000      MIPS-IV
140 >>>>36  belong&0xf0000000       0x40000000      MIPS-V
141 >>>>36  belong&0xf0000000       0x60000000      MIPS32
142 >>>>36  belong&0xf0000000       0x70000000      MIPS64
143 >>>>36  belong&0xf0000000       0x80000000      MIPS32 rel2
144 >>>>36  belong&0xf0000000       0x90000000      MIPS64 rel2
145 # only for 64-bit
146 >>>4    byte            2
147 >>>>48  belong&0xf0000000       0x00000000      MIPS-I
148 >>>>48  belong&0xf0000000       0x10000000      MIPS-II
149 >>>>48  belong&0xf0000000       0x20000000      MIPS-III
150 >>>>48  belong&0xf0000000       0x30000000      MIPS-IV
151 >>>>48  belong&0xf0000000       0x40000000      MIPS-V
152 >>>>48  belong&0xf0000000       0x60000000      MIPS32
153 >>>>48  belong&0xf0000000       0x70000000      MIPS64 
154 >>>>48  belong&0xf0000000       0x80000000      MIPS32 rel2
155 >>>>48  belong&0xf0000000       0x90000000      MIPS64 rel2
156 >>18    beshort         9               Amdahl,
157 >>18    beshort         10              MIPS (deprecated),
158 >>18    beshort         11              RS6000,
159 >>18    beshort         15              PA-RISC
160 >>>50   beshort         0x0214          2.0
161 >>>48   beshort         &0x0008         (LP64)
162 >>18    beshort         16              nCUBE,
163 >>18    beshort         17              Fujitsu VPP500,
164 >>18    beshort         18              SPARC32PLUS,
165 >>>36   belong&0xffff00 &0x000100       V8+ Required,
166 >>>36   belong&0xffff00 &0x000200       Sun UltraSPARC1 Extensions Required,
167 >>>36   belong&0xffff00 &0x000400       HaL R1 Extensions Required,
168 >>>36   belong&0xffff00 &0x000800       Sun UltraSPARC3 Extensions Required,
169 >>18    beshort         20              PowerPC or cisco 4500,
170 >>18    beshort         21              64-bit PowerPC or cisco 7500,
171 >>18    beshort         22              IBM S/390,
172 >>18    beshort         23              Cell SPU,
173 >>18    beshort         24              cisco SVIP,
174 >>18    beshort         25              cisco 7200,
175 >>18    beshort         36              NEC V800 or cisco 12000,
176 >>18    beshort         37              Fujitsu FR20,
177 >>18    beshort         38              TRW RH-32,
178 >>18    beshort         39              Motorola RCE,
179 >>18    beshort         40              ARM,
180 >>18    beshort         41              Alpha,
181 >>18    beshort         42              Renesas SH,
182 >>18    beshort         43              SPARC V9,
183 >>18    beshort         44              Siemens Tricore Embedded Processor,
184 >>18    beshort         45              Argonaut RISC Core, Argonaut Technologies Inc.,
185 >>18    beshort         46              Renesas H8/300,
186 >>18    beshort         47              Renesas H8/300H,
187 >>18    beshort         48              Renesas H8S,
188 >>18    beshort         49              Renesas H8/500,
189 >>18    beshort         50              IA-64,
190 >>18    beshort         51              Stanford MIPS-X,
191 >>18    beshort         52              Motorola Coldfire,
192 >>18    beshort         53              Motorola M68HC12,
193 >>18    beshort         73              Cray NV1,
194 >>18    beshort         75              Digital VAX,
195 >>18    beshort         88              Renesas M32R,
196 >>18    beshort         94              Tensilica Xtensa,
197 >>18    beshort         97              NatSemi 32k,
198 >>18    beshort         0x9026          Alpha (unofficial),
199 >>18    beshort         0xa390          IBM S/390 (obsolete),
200 >>20    belong          0               invalid version
201 >>20    belong          1               version 1
202 >>36    belong          1               MathCoPro/FPU/MAU Required
203 # Up to now only 0, 1 and 2 are defined; I've seen a file with 0x83, it seemed
204 # like proper ELF, but extracting the string had bad results.
205 >4      byte            <0x80
206 >>8     string          >\0             (%s)
207 >8      string          \0
208 >>7     byte            0               (SYSV)
209 >>7     byte            1               (HP-UX)
210 >>7     byte            2               (NetBSD)
211 >>7     byte            3               (GNU/Linux)
212 >>7     byte            4               (GNU/Hurd)
213 >>7     byte            5               (86Open)
214 >>7     byte            6               (Solaris)
215 >>7     byte            7               (Monterey)
216 >>7     byte            8               (IRIX)
217 >>7     byte            9               (FreeBSD)
218 >>7     byte            10              (Tru64)
219 >>7     byte            11              (Novell Modesto)
220 >>7     byte            12              (OpenBSD)
221 # VMS Itanium added by gerardo.cacciari@gmail.com
222 >8      string          \2
223 >>7     byte            13              (OpenVMS)
224 >>7     byte            97              (ARM)
225 >>7     byte            255             (embedded)