Import file-5.22.
[dragonfly.git] / contrib / file / magic / Magdir / elf
1
2 #------------------------------------------------------------------------------
3 # $File: elf,v 1.68 2014/09/19 19:05:57 christos Exp $
4 # elf:  file(1) magic for ELF executables
5 #
6 # We have to check the byte order flag to see what byte order all the
7 # other stuff in the header is in.
8 #
9 # What're the correct byte orders for the nCUBE and the Fujitsu VPP500?
10 #
11 # Created by: unknown
12 # Modified by (1): Daniel Quinlan <quinlan@yggdrasil.com>
13 # Modified by (2): Peter Tobias <tobias@server.et-inf.fho-emden.de> (core support)
14 # Modified by (3): Christian 'Dr. Disk' Hechelmann <drdisk@ds9.au.s.shuttle.de> (fix of core support)
15 # Modified by (4): <gerardo.cacciari@gmail.com> (VMS Itanium)
16 # Modified by (5): Matthias Urlichs <smurf@debian.org> (Listing of many architectures)
17
18 0       name            elf-le
19 >16     leshort         0               no file type,
20 !:mime  application/octet-stream
21 >16     leshort         1               relocatable,
22 !:mime  application/x-object
23 >16     leshort         2               executable,
24 !:mime  application/x-executable
25 >16     leshort         3               shared object,
26 !:mime  application/x-sharedlib
27 >16     leshort         4               core file
28 !:mime  application/x-coredump
29 # Core file detection is not reliable.
30 #>>>(0x38+0xcc) string  >\0             of '%s'
31 #>>>(0x38+0x10) lelong  >0              (signal %d),
32 >16     leshort         &0xff00         processor-specific,
33 >18     clear           x
34 >18     leshort         0               no machine,
35 >18     leshort         1               AT&T WE32100,
36 >18     leshort         2               SPARC,
37 >18     leshort         3               Intel 80386,
38 >18     leshort         4               Motorola m68k,
39 >>4     byte            1
40 >>>36   lelong          &0x01000000     68000,
41 >>>36   lelong          &0x00810000     CPU32,
42 >>>36   lelong          0               68020,
43 >18     leshort         5               Motorola m88k,
44 >18     leshort         6               Intel 80486,
45 >18     leshort         7               Intel 80860,
46 # The official e_machine number for MIPS is now #8, regardless of endianness.
47 # The second number (#10) will be deprecated later. For now, we still
48 # say something if #10 is encountered, but only gory details for #8.
49 >18     leshort         8               MIPS,
50 >>4     byte            1
51 >>>36   lelong          &0x20           N32
52 >18     leshort         10              MIPS,
53 >>4     byte            1
54 >>>36   lelong          &0x20           N32
55 >18     leshort         8
56 # only for 32-bit
57 >>4     byte            1
58 >>>36  lelong&0xf0000000        0x00000000      MIPS-I
59 >>>36  lelong&0xf0000000        0x10000000      MIPS-II
60 >>>36  lelong&0xf0000000        0x20000000      MIPS-III
61 >>>36  lelong&0xf0000000        0x30000000      MIPS-IV
62 >>>36  lelong&0xf0000000        0x40000000      MIPS-V
63 >>>36  lelong&0xf0000000        0x50000000      MIPS32
64 >>>36  lelong&0xf0000000        0x60000000      MIPS64
65 >>>36  lelong&0xf0000000        0x70000000      MIPS32 rel2
66 >>>36  lelong&0xf0000000        0x80000000      MIPS64 rel2
67 # only for 64-bit
68 >>4     byte            2
69 >>>48  lelong&0xf0000000        0x00000000      MIPS-I
70 >>>48  lelong&0xf0000000        0x10000000      MIPS-II
71 >>>48  lelong&0xf0000000        0x20000000      MIPS-III
72 >>>48  lelong&0xf0000000        0x30000000      MIPS-IV
73 >>>48  lelong&0xf0000000        0x40000000      MIPS-V
74 >>>48  lelong&0xf0000000        0x50000000      MIPS32
75 >>>48  lelong&0xf0000000        0x60000000      MIPS64
76 >>>48  lelong&0xf0000000        0x70000000      MIPS32 rel2
77 >>>48  lelong&0xf0000000        0x80000000      MIPS64 rel2
78 >18     leshort         9               Amdahl,
79 >18     leshort         10              MIPS (deprecated),
80 >18     leshort         11              RS6000,
81 >18     leshort         15              PA-RISC,
82 # only for 32-bit
83 >>4     byte            1
84 >>>38   leshort         0x0214          2.0
85 >>>36   leshort         &0x0008         (LP64)
86 # only for 64-bit
87 >>4     byte            2
88 >>>50   leshort         0x0214          2.0
89 >>>48   leshort         &0x0008         (LP64)
90 >18     leshort         16              nCUBE,
91 >18     leshort         17              Fujitsu VPP500,
92 >18     leshort         18              SPARC32PLUS,
93 # only for 32-bit
94 >>4     byte            1
95 >>>36   lelong&0xffff00 0x000100        V8+ Required,
96 >>>36   lelong&0xffff00 0x000200        Sun UltraSPARC1 Extensions Required,
97 >>>36   lelong&0xffff00 0x000400        HaL R1 Extensions Required,
98 >>>36   lelong&0xffff00 0x000800        Sun UltraSPARC3 Extensions Required,
99 >18     leshort         19              Intel 80960,
100 >18     leshort         20              PowerPC or cisco 4500,
101 >18     leshort         21              64-bit PowerPC or cisco 7500,
102 >18     leshort         22              IBM S/390,
103 >18     leshort         23              Cell SPU,
104 >18     leshort         24              cisco SVIP,
105 >18     leshort         25              cisco 7200,
106 >18     leshort         36              NEC V800 or cisco 12000,
107 >18     leshort         37              Fujitsu FR20,
108 >18     leshort         38              TRW RH-32,
109 >18     leshort         39              Motorola RCE,
110 >18     leshort         40              ARM,
111 >>4     byte            1
112 >>>36   lelong&0xff000000       0x04000000      EABI4
113 >>>36   lelong&0xff000000       0x05000000      EABI5
114 >>>36   lelong          &0x00800000     BE8
115 >>>36   lelong          &0x00400000     LE8
116 >18     leshort         41              Alpha,
117 >18     leshort         42              Renesas SH,
118 >18     leshort         43              SPARC V9,
119 >>4     byte            2
120 >>>48   lelong&0xffff00 0x000200        Sun UltraSPARC1 Extensions Required,
121 >>>48   lelong&0xffff00 0x000400        HaL R1 Extensions Required,
122 >>>48   lelong&0xffff00 0x000800        Sun UltraSPARC3 Extensions Required,
123 >>>48   lelong&0x3      0               total store ordering,
124 >>>48   lelong&0x3      1               partial store ordering,
125 >>>48   lelong&0x3      2               relaxed memory ordering,
126 >18     leshort         44              Siemens Tricore Embedded Processor,
127 >18     leshort         45              Argonaut RISC Core, Argonaut Technologies Inc.,
128 >18     leshort         46              Renesas H8/300,
129 >18     leshort         47              Renesas H8/300H,
130 >18     leshort         48              Renesas H8S,
131 >18     leshort         49              Renesas H8/500,
132 >18     leshort         50              IA-64,
133 >18     leshort         51              Stanford MIPS-X,
134 >18     leshort         52              Motorola Coldfire,
135 >18     leshort         53              Motorola M68HC12,
136 >18     leshort         54              Fujitsu MMA,
137 >18     leshort         55              Siemens PCP,
138 >18     leshort         56              Sony nCPU,
139 >18     leshort         57              Denso NDR1,
140 >18     leshort         58              Start*Core,
141 >18     leshort         59              Toyota ME16,
142 >18     leshort         60              ST100,
143 >18     leshort         61              Tinyj emb.,
144 >18     leshort         62              x86-64,
145 >18     leshort         63              Sony DSP,
146 >18     leshort         64              DEC PDP-10,
147 >18     leshort         65              DEC PDP-11,
148 >18     leshort         66              FX66,
149 >18     leshort         67              ST9+ 8/16 bit,
150 >18     leshort         68              ST7 8 bit,
151 >18     leshort         69              MC68HC16,
152 >18     leshort         70              MC68HC11,
153 >18     leshort         71              MC68HC08,
154 >18     leshort         72              MC68HC05,
155 >18     leshort         73              SGI SVx or Cray NV1,
156 >18     leshort         74              ST19 8 bit,
157 >18     leshort         75              Digital VAX,
158 >18     leshort         76              Axis cris,
159 >18     leshort         77              Infineon 32-bit embedded,
160 >18     leshort         78              Element 14 64-bit DSP,
161 >18     leshort         79              LSI Logic 16-bit DSP,
162 >18     leshort         80              MMIX,
163 >18     leshort         81              Harvard machine-independent,
164 >18     leshort         82              SiTera Prism,
165 >18     leshort         83              Atmel AVR 8-bit,
166 >18     leshort         84              Fujitsu FR30,
167 >18     leshort         85              Mitsubishi D10V,
168 >18     leshort         86              Mitsubishi D30V,
169 >18     leshort         87              NEC v850,
170 >18     leshort         88              Renesas M32R,
171 >18     leshort         89              Matsushita MN10300,
172 >18     leshort         90              Matsushita MN10200,
173 >18     leshort         91              picoJava,
174 >18     leshort         92              OpenRISC,
175 >18     leshort         93              ARC Cores Tangent-A5,
176 >18     leshort         94              Tensilica Xtensa,
177 >18     leshort         95              Alphamosaic VideoCore,
178 >18     leshort         96              Thompson Multimedia,
179 >18     leshort         97              NatSemi 32k,
180 >18     leshort         98              Tenor Network TPC,
181 >18     leshort         99              Trebia SNP 1000,
182 >18     leshort         100             STMicroelectronics ST200,
183 >18     leshort         101             Ubicom IP2022,
184 >18     leshort         102             MAX Processor,
185 >18     leshort         103             NatSemi CompactRISC,
186 >18     leshort         104             Fujitsu F2MC16,
187 >18     leshort         105             TI msp430,
188 >18     leshort         106             Analog Devices Blackfin,
189 >18     leshort         107             S1C33 Family of Seiko Epson,
190 >18     leshort         108             Sharp embedded,
191 >18     leshort         109             Arca RISC,
192 >18     leshort         110             PKU-Unity Ltd.,
193 >18     leshort         111             eXcess: 16/32/64-bit,
194 >18     leshort         112             Icera Deep Execution Processor,
195 >18     leshort         113             Altera Nios II,
196 >18     leshort         114             NatSemi CRX,
197 >18     leshort         115             Motorola XGATE,
198 >18     leshort         116             Infineon C16x/XC16x,
199 >18     leshort         117             Renesas M16C series,
200 >18     leshort         118             Microchip dsPIC30F,
201 >18     leshort         119             Freescale RISC core,
202 >18     leshort         120             Renesas M32C series,
203 >18     leshort         131             Altium TSK3000 core,
204 >18     leshort         132             Freescale RS08,
205 >18     leshort         134             Cyan Technology eCOG2,
206 >18     leshort         135             Sunplus S+core7 RISC,
207 >18     leshort         136             New Japan Radio (NJR) 24-bit DSP,
208 >18     leshort         137             Broadcom VideoCore III,
209 >18     leshort         138             LatticeMico32,
210 >18     leshort         139             Seiko Epson C17 family,
211 >18     leshort         140             TI TMS320C6000 DSP family,
212 >18     leshort         141             TI TMS320C2000 DSP family,
213 >18     leshort         142             TI TMS320C55x DSP family,
214 >18     leshort         160             STMicroelectronics 64bit VLIW DSP,
215 >18     leshort         161             Cypress M8C,
216 >18     leshort         162             Renesas R32C series,
217 >18     leshort         163             NXP TriMedia family,
218 >18     leshort         164             QUALCOMM DSP6,
219 >18     leshort         165             Intel 8051 and variants,
220 >18     leshort         166             STMicroelectronics STxP7x family,
221 >18     leshort         167             Andes embedded RISC,
222 >18     leshort         168             Cyan eCOG1X family,
223 >18     leshort         169             Dallas MAXQ30,
224 >18     leshort         170             New Japan Radio (NJR) 16-bit DSP,
225 >18     leshort         171             M2000 Reconfigurable RISC,
226 >18     leshort         172             Cray NV2 vector architecture,
227 >18     leshort         173             Renesas RX family,
228 >18     leshort         174             META,
229 >18     leshort         175             MCST Elbrus,
230 >18     leshort         176             Cyan Technology eCOG16 family,
231 >18     leshort         177             NatSemi CompactRISC,
232 >18     leshort         178             Freescale Extended Time Processing Unit,
233 >18     leshort         179             Infineon SLE9X,
234 >18     leshort         180             Intel L1OM,
235 >18     leshort         181             Intel K1OM,
236 >18     leshort         183             ARM aarch64,
237 >18     leshort         185             Atmel 32-bit family,
238 >18     leshort         186             STMicroeletronics STM8 8-bit,
239 >18     leshort         187             Tilera TILE64,
240 >18     leshort         188             Tilera TILEPro,
241 >18     leshort         189             Xilinx MicroBlaze 32-bit RISC,
242 >18     leshort         190             NVIDIA CUDA architecture,
243 >18     leshort         191             Tilera TILE-Gx,
244 >18     leshort         197             Renesas RL78 family,
245 >18     leshort         199             Renesas 78K0R,
246 >18     leshort         200             Freescale 56800EX,
247 >18     leshort         201             Beyond BA1,
248 >18     leshort         202             Beyond BA2,
249 >18     leshort         203             XMOS xCORE,
250 >18     leshort         204             Microchip 8-bit PIC(r),
251 >18     leshort         210             KM211 KM32,
252 >18     leshort         211             KM211 KMX32,
253 >18     leshort         212             KM211 KMX16,
254 >18     leshort         213             KM211 KMX8,
255 >18     leshort         214             KM211 KVARC,
256 >18     leshort         215             Paneve CDP,
257 >18     leshort         216             Cognitive Smart Memory,
258 >18     leshort         217             iCelero CoolEngine,
259 >18     leshort         218             Nanoradio Optimized RISC,
260 >18     leshort         243             UCB RISC-V,
261 >18     leshort         0x1057          AVR (unofficial),
262 >18     leshort         0x1059          MSP430 (unofficial),
263 >18     leshort         0x1223          Adapteva Epiphany (unofficial),
264 >18     leshort         0x2530          Morpho MT (unofficial),
265 >18     leshort         0x3330          FR30 (unofficial),
266 >18     leshort         0x3426          OpenRISC (obsolete),
267 >18     leshort         0x4688          Infineon C166 (unofficial),
268 >18     leshort         0x5441          Cygnus FRV (unofficial),
269 >18     leshort         0x5aa5          DLX (unofficial),
270 >18     leshort         0x7650          Cygnus D10V (unofficial),
271 >18     leshort         0x7676          Cygnus D30V (unofficial),
272 >18     leshort         0x8217          Ubicom IP2xxx (unofficial),
273 >18     leshort         0x8472          OpenRISC (obsolete),
274 >18     leshort         0x9025          Cygnus PowerPC (unofficial),
275 >18     leshort         0x9026          Alpha (unofficial),
276 >18     leshort         0x9041          Cygnus M32R (unofficial),
277 >18     leshort         0x9080          Cygnus V850 (unofficial),
278 >18     leshort         0xa390          IBM S/390 (obsolete),
279 >18     leshort         0xabc7          Old Xtensa (unofficial),
280 >18     leshort         0xad45          xstormy16 (unofficial),
281 >18     leshort         0xbaab          Old MicroBlaze (unofficial),,
282 >18     leshort         0xbeef          Cygnus MN10300 (unofficial),
283 >18     leshort         0xdead          Cygnus MN10200 (unofficial),
284 >18     leshort         0xf00d          Toshiba MeP (unofficial),
285 >18     leshort         0xfeb0          Renesas M32C (unofficial),
286 >18     leshort         0xfeba          Vitesse IQ2000 (unofficial),
287 >18     leshort         0xfebb          NIOS (unofficial),
288 >18     leshort         0xfeed          Moxie (unofficial),
289 >18     default         x
290 >>18    leshort         x               *unknown arch 0x%x*
291 >20     lelong          0               invalid version
292 >20     lelong          1               version 1
293
294 0       string          \177ELF         ELF
295 !:strength *2
296 >4      byte            0               invalid class
297 >4      byte            1               32-bit
298 >4      byte            2               64-bit
299 >5      byte            0               invalid byte order
300 >5      byte            1               LSB
301 >>0     use             elf-le
302 >5      byte            2               MSB
303 >>0     use             \^elf-le
304 # Up to now only 0, 1 and 2 are defined; I've seen a file with 0x83, it seemed
305 # like proper ELF, but extracting the string had bad results.
306 >4      byte            <0x80
307 >>8     string          >\0             (%s)
308 >8      string          \0
309 >>7     byte            0               (SYSV)
310 >>7     byte            1               (HP-UX)
311 >>7     byte            2               (NetBSD)
312 >>7     byte            3               (GNU/Linux)
313 >>7     byte            4               (GNU/Hurd)
314 >>7     byte            5               (86Open)
315 >>7     byte            6               (Solaris)
316 >>7     byte            7               (Monterey)
317 >>7     byte            8               (IRIX)
318 >>7     byte            9               (FreeBSD)
319 >>7     byte            10              (Tru64)
320 >>7     byte            11              (Novell Modesto)
321 >>7     byte            12              (OpenBSD)
322 >8      string          \2
323 >>7     byte            13              (OpenVMS)
324 >>7     byte            97              (ARM)
325 >>7     byte            255             (embedded)