1
2#------------------------------------------------------------------------------
3# $File: elf,v 1.88 2023/01/08 17:09:18 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# https://www.sco.com/developers/gabi/latest/ch4.eheader.html
12#
13# Created by: unknown
14# Modified by (1): Daniel Quinlan <quinlan@yggdrasil.com>
15# Modified by (2): Peter Tobias <tobias@server.et-inf.fho-emden.de> (core support)
16# Modified by (3): Christian 'Dr. Disk' Hechelmann <drdisk@ds9.au.s.shuttle.de> (fix of core support)
17# Modified by (4): <gerardo.cacciari@gmail.com> (VMS Itanium)
18# Modified by (5): Matthias Urlichs <smurf@debian.org> (Listing of many architectures)
19
200         name                elf-mips
21>0        lelong&0xf0000000   0x00000000          MIPS-I
22>0        lelong&0xf0000000   0x10000000          MIPS-II
23>0        lelong&0xf0000000   0x20000000          MIPS-III
24>0        lelong&0xf0000000   0x30000000          MIPS-IV
25>0        lelong&0xf0000000   0x40000000          MIPS-V
26>0        lelong&0xf0000000   0x50000000          MIPS32
27>0        lelong&0xf0000000   0x60000000          MIPS64
28>0        lelong&0xf0000000   0x70000000          MIPS32 rel2
29>0        lelong&0xf0000000   0x80000000          MIPS64 rel2
30>0        lelong&0xf0000000   0x90000000          MIPS32 rel6
31>0        lelong&0xf0000000   0xa0000000          MIPS64 rel6
32
330         name                elf-sparc
34>0        lelong&0x00ffff00   0x00000100          V8+ Required,
35>0        lelong&0x00ffff00   0x00000200          Sun UltraSPARC1 Extensions Required,
36>0        lelong&0x00ffff00   0x00000400          HaL R1 Extensions Required,
37>0        lelong&0x00ffff00   0x00000800          Sun UltraSPARC3 Extensions Required,
38>0        lelong&0x3                    0                   total store ordering,
39>0        lelong&0x3                    1                   partial store ordering,
40>0        lelong&0x3                    2                   relaxed memory ordering,
41
420         name                elf-pa-risc
43>2        leshort             0x020b              1.0
44>2        leshort             0x0210              1.1
45>2        leshort             0x0214              2.0
46>0        leshort             &0x0008             (LP64)
47
480         name                elf-riscv
49>0        lelong&0x00000001   0x00000001          RVC,
50>0        lelong&0x00000008   0x00000008          RVE,
51>0        lelong&0x00000006   0x00000000          soft-float ABI,
52>0        lelong&0x00000006   0x00000002          single-float ABI,
53>0        lelong&0x00000006   0x00000004          double-float ABI,
54>0        lelong&0x00000006   0x00000006          quad-float ABI,
55
560         name                elf-le
57>16       leshort             0                   no file type,
58!:mime    application/octet-stream
59>16       leshort             1                   relocatable,
60!:mime    application/x-object
61>16       leshort             2                   executable,
62!:mime    application/x-executable
63>16       leshort             3                   ${x?pie executable:shared object},
64
65!:mime    application/x-${x?pie-executable:sharedlib}
66>16       leshort             4                   core file,
67!:mime    application/x-coredump
68# OS-specific
69>7        byte                202
70>>16      leshort             0xFE01              executable,
71!:mime    application/x-executable
72# Core file detection is not reliable.
73#>>>(0x38+0xcc) string        >\0                 of '%s'
74#>>>(0x38+0x10) lelong        >0                  (signal %d),
75>16       leshort             &0xff00
76>>18      leshort             !8                  processor-specific,
77>>18      leshort             8
78>>>16     leshort             0xFF80              PlayStation 2 IOP module,
79!:mime    application/x-sharedlib
80>>>16     leshort             !0xFF80             processor-specific,
81>18       clear               x
82>18       leshort             0                   no machine,
83>18       leshort             1                   AT&T WE32100,
84>18       leshort             2                   SPARC,
85>18       leshort             3                   Intel 80386,
86>18       leshort             4                   Motorola m68k,
87>>4       byte                1
88>>>36     lelong              &0x01000000         68000,
89>>>36     lelong              &0x00810000         CPU32,
90>>>36     lelong              0                   68020,
91>18       leshort             5                   Motorola m88k,
92>18       leshort             6                   Intel 80486,
93>18       leshort             7                   Intel 80860,
94# The official e_machine number for MIPS is now #8, regardless of endianness.
95# The second number (#10) will be deprecated later. For now, we still
96# say something if #10 is encountered, but only gory details for #8.
97>18       leshort             8                   MIPS,
98>>4       byte                1
99>>>36     lelong              &0x20               N32
100>18       leshort             10                  MIPS,
101>>4       byte                1
102>>>36     lelong              &0x20               N32
103>18       leshort             8
104# only for 32-bit
105>>4       byte                1
106>>>36     use                 elf-mips
107# only for 64-bit
108>>4       byte                2
109>>>48     use                 elf-mips
110>18       leshort             9                   Amdahl,
111>18       leshort             10                  MIPS (deprecated),
112>18       leshort             11                  RS6000,
113>18       leshort             15                  PA-RISC,
114# only for 32-bit
115>>4       byte                1
116>>>36     use                 elf-pa-risc
117# only for 64-bit
118>>4       byte                2
119>>>48     use                 elf-pa-risc
120>18       leshort             16                  nCUBE,
121>18       leshort             17                  Fujitsu VPP500,
122>18       leshort             18                  SPARC32PLUS,
123# only for 32-bit
124>>4       byte                1
125>>>36     use                 elf-sparc
126>18       leshort             19                  Intel 80960,
127>18       leshort             20                  PowerPC or cisco 4500,
128>18       leshort             21                  64-bit PowerPC or cisco 7500,
129>>48      lelong              0                   Unspecified or Power ELF V1 ABI,
130>>48      lelong              1                   Power ELF V1 ABI,
131>>48      lelong              2                   OpenPOWER ELF V2 ABI,
132>18       leshort             22                  IBM S/390,
133>18       leshort             23                  Cell SPU,
134>18       leshort             24                  cisco SVIP,
135>18       leshort             25                  cisco 7200,
136>18       leshort             36                  NEC V800 or cisco 12000,
137>18       leshort             37                  Fujitsu FR20,
138>18       leshort             38                  TRW RH-32,
139>18       leshort             39                  Motorola RCE,
140>18       leshort             40                  ARM,
141>>4       byte                1
142>>>36     lelong&0xff000000   0x04000000          EABI4
143>>>36     lelong&0xff000000   0x05000000          EABI5
144>>>36     lelong              &0x00800000         BE8
145>>>36     lelong              &0x00400000         LE8
146>18       leshort             41                  Alpha,
147>18       leshort             42                  Renesas SH,
148>18       leshort             43                  SPARC V9,
149>>4       byte                2
150>>>48     use                 elf-sparc
151>18       leshort             44                  Siemens Tricore Embedded Processor,
152>18       leshort             45                  Argonaut RISC Core, Argonaut Technologies Inc.,
153>18       leshort             46                  Renesas H8/300,
154>18       leshort             47                  Renesas H8/300H,
155>18       leshort             48                  Renesas H8S,
156>18       leshort             49                  Renesas H8/500,
157>18       leshort             50                  IA-64,
158>18       leshort             51                  Stanford MIPS-X,
159>18       leshort             52                  Motorola Coldfire,
160>18       leshort             53                  Motorola M68HC12,
161>18       leshort             54                  Fujitsu MMA,
162>18       leshort             55                  Siemens PCP,
163>18       leshort             56                  Sony nCPU,
164>18       leshort             57                  Denso NDR1,
165>18       leshort             58                  Start*Core,
166>18       leshort             59                  Toyota ME16,
167>18       leshort             60                  ST100,
168>18       leshort             61                  Tinyj emb.,
169>18       leshort             62                  x86-64,
170>18       leshort             63                  Sony DSP,
171>18       leshort             64                  DEC PDP-10,
172>18       leshort             65                  DEC PDP-11,
173>18       leshort             66                  FX66,
174>18       leshort             67                  ST9+ 8/16 bit,
175>18       leshort             68                  ST7 8 bit,
176>18       leshort             69                  MC68HC16,
177>18       leshort             70                  MC68HC11,
178>18       leshort             71                  MC68HC08,
179>18       leshort             72                  MC68HC05,
180>18       leshort             73                  SGI SVx or Cray NV1,
181>18       leshort             74                  ST19 8 bit,
182>18       leshort             75                  Digital VAX,
183>18       leshort             76                  Axis cris,
184>18       leshort             77                  Infineon 32-bit embedded,
185>18       leshort             78                  Element 14 64-bit DSP,
186>18       leshort             79                  LSI Logic 16-bit DSP,
187>18       leshort             80                  MMIX,
188>18       leshort             81                  Harvard machine-independent,
189>18       leshort             82                  SiTera Prism,
190>18       leshort             83                  Atmel AVR 8-bit,
191>18       leshort             84                  Fujitsu FR30,
192>18       leshort             85                  Mitsubishi D10V,
193>18       leshort             86                  Mitsubishi D30V,
194>18       leshort             87                  NEC v850,
195>18       leshort             88                  Renesas M32R,
196>18       leshort             89                  Matsushita MN10300,
197>18       leshort             90                  Matsushita MN10200,
198>18       leshort             91                  picoJava,
199>18       leshort             92                  OpenRISC,
200>18       leshort             93                  Synopsys ARCompact ARC700 cores,
201>18       leshort             94                  Tensilica Xtensa,
202>18       leshort             95                  Alphamosaic VideoCore,
203>18       leshort             96                  Thompson Multimedia,
204>18       leshort             97                  NatSemi 32k,
205>18       leshort             98                  Tenor Network TPC,
206>18       leshort             99                  Trebia SNP 1000,
207>18       leshort             100                 STMicroelectronics ST200,
208>18       leshort             101                 Ubicom IP2022,
209>18       leshort             102                 MAX Processor,
210>18       leshort             103                 NatSemi CompactRISC,
211>18       leshort             104                 Fujitsu F2MC16,
212>18       leshort             105                 TI msp430,
213>18       leshort             106                 Analog Devices Blackfin,
214>18       leshort             107                 S1C33 Family of Seiko Epson,
215>18       leshort             108                 Sharp embedded,
216>18       leshort             109                 Arca RISC,
217>18       leshort             110                 PKU-Unity Ltd.,
218>18       leshort             111                 eXcess: 16/32/64-bit,
219>18       leshort             112                 Icera Deep Execution Processor,
220>18       leshort             113                 Altera Nios II,
221>18       leshort             114                 NatSemi CRX,
222>18       leshort             115                 Motorola XGATE,
223>18       leshort             116                 Infineon C16x/XC16x,
224>18       leshort             117                 Renesas M16C series,
225>18       leshort             118                 Microchip dsPIC30F,
226>18       leshort             119                 Freescale RISC core,
227>18       leshort             120                 Renesas M32C series,
228>18       leshort             131                 Altium TSK3000 core,
229>18       leshort             132                 Freescale RS08,
230>18       leshort             134                 Cyan Technology eCOG2,
231>18       leshort             135                 Sunplus S+core7 RISC,
232>18       leshort             136                 New Japan Radio (NJR) 24-bit DSP,
233>18       leshort             137                 Broadcom VideoCore III,
234>18       leshort             138                 LatticeMico32,
235>18       leshort             139                 Seiko Epson C17 family,
236>18       leshort             140                 TI TMS320C6000 DSP family,
237>18       leshort             141                 TI TMS320C2000 DSP family,
238>18       leshort             142                 TI TMS320C55x DSP family,
239>18       leshort             144                 TI Programmable Realtime Unit
240>18       leshort             160                 STMicroelectronics 64bit VLIW DSP,
241>18       leshort             161                 Cypress M8C,
242>18       leshort             162                 Renesas R32C series,
243>18       leshort             163                 NXP TriMedia family,
244>18       leshort             164                 QUALCOMM DSP6,
245>18       leshort             165                 Intel 8051 and variants,
246>18       leshort             166                 STMicroelectronics STxP7x family,
247>18       leshort             167                 Andes embedded RISC,
248>18       leshort             168                 Cyan eCOG1X family,
249>18       leshort             169                 Dallas MAXQ30,
250>18       leshort             170                 New Japan Radio (NJR) 16-bit DSP,
251>18       leshort             171                 M2000 Reconfigurable RISC,
252>18       leshort             172                 Cray NV2 vector architecture,
253>18       leshort             173                 Renesas RX family,
254>18       leshort             174                 META,
255>18       leshort             175                 MCST Elbrus,
256>18       leshort             176                 Cyan Technology eCOG16 family,
257>18       leshort             177                 NatSemi CompactRISC,
258>18       leshort             178                 Freescale Extended Time Processing Unit,
259>18       leshort             179                 Infineon SLE9X,
260>18       leshort             180                 Intel L1OM,
261>18       leshort             181                 Intel K1OM,
262>18       leshort             183                 ARM aarch64,
263>18       leshort             185                 Atmel 32-bit family,
264>18       leshort             186                 STMicroeletronics STM8 8-bit,
265>18       leshort             187                 Tilera TILE64,
266>18       leshort             188                 Tilera TILEPro,
267>18       leshort             189                 Xilinx MicroBlaze 32-bit RISC,
268>18       leshort             190                 NVIDIA CUDA architecture,
269>18       leshort             191                 Tilera TILE-Gx,
270>18       leshort             195                 Synopsys ARCv2/HS3x/HS4x cores,
271>18       leshort             197                 Renesas RL78 family,
272>18       leshort             199                 Renesas 78K0R,
273>18       leshort             200                 Freescale 56800EX,
274>18       leshort             201                 Beyond BA1,
275>18       leshort             202                 Beyond BA2,
276>18       leshort             203                 XMOS xCORE,
277>18       leshort             204                 Microchip 8-bit PIC(r),
278>18       leshort             210                 KM211 KM32,
279>18       leshort             211                 KM211 KMX32,
280>18       leshort             212                 KM211 KMX16,
281>18       leshort             213                 KM211 KMX8,
282>18       leshort             214                 KM211 KVARC,
283>18       leshort             215                 Paneve CDP,
284>18       leshort             216                 Cognitive Smart Memory,
285>18       leshort             217                 iCelero CoolEngine,
286>18       leshort             218                 Nanoradio Optimized RISC,
287>18       leshort             219                 CSR Kalimba architecture family
288>18       leshort             220                 Zilog Z80
289>18       leshort             221                 Controls and Data Services VISIUMcore processor
290>18       leshort             222                 FTDI Chip FT32 high performance 32-bit RISC architecture
291>18       leshort             223                 Moxie processor family
292>18       leshort             224                 AMD GPU architecture
293>18       leshort             243                 UCB RISC-V,
294# only for 32-bit
295>>4       byte                1
296>>>36     use                 elf-riscv
297# only for 64-bit
298>>4       byte                2
299>>>48     use                 elf-riscv
300>18       leshort             244                 Lanai 32-bit processor,
301>18       leshort             245                 CEVA Processor Architecture Family,
302>18       leshort             246                 CEVA X2 Processor Family,
303>18       leshort             247                 eBPF,
304>18       leshort             248                 Graphcore Intelligent Processing Unit,
305>18       leshort             249                 Imagination Technologies,
306>18       leshort             250                 Netronome Flow Processor,
307>18       leshort             251             NEC Vector Engine,
308>18       leshort             252                 C-SKY processor family,
309>18       leshort             253                 Synopsys ARCv3 64-bit ISA/HS6x cores,
310>18       leshort             254                 MOS Technology MCS 6502 processor,
311>18       leshort             255                 Synopsys ARCv3 32-bit,
312>18       leshort             256                 Kalray VLIW core of the MPPA family,
313>18       leshort             257                 WDC 65816/65C816,
314>18       leshort             258                 LoongArch,
315>18       leshort             259                 ChipON KungFu32,
316>18       leshort             0x1057              AVR (unofficial),
317>18       leshort             0x1059              MSP430 (unofficial),
318>18       leshort             0x1223              Adapteva Epiphany (unofficial),
319>18       leshort             0x2530              Morpho MT (unofficial),
320>18       leshort             0x3330              FR30 (unofficial),
321>18       leshort             0x3426              OpenRISC (obsolete),
322>18       leshort             0x4688              Infineon C166 (unofficial),
323>18       leshort             0x5441              Cygnus FRV (unofficial),
324>18       leshort             0x5aa5              DLX (unofficial),
325>18       leshort             0x7650              Cygnus D10V (unofficial),
326>18       leshort             0x7676              Cygnus D30V (unofficial),
327>18       leshort             0x8217              Ubicom IP2xxx (unofficial),
328>18       leshort             0x8472              OpenRISC (obsolete),
329>18       leshort             0x9025              Cygnus PowerPC (unofficial),
330>18       leshort             0x9026              Alpha (unofficial),
331>18       leshort             0x9041              Cygnus M32R (unofficial),
332>18       leshort             0x9080              Cygnus V850 (unofficial),
333>18       leshort             0xa390              IBM S/390 (obsolete),
334>18       leshort             0xabc7              Old Xtensa (unofficial),
335>18       leshort             0xad45              xstormy16 (unofficial),
336>18       leshort             0xbaab              Old MicroBlaze (unofficial),,
337>18       leshort             0xbeef              Cygnus MN10300 (unofficial),
338>18       leshort             0xdead              Cygnus MN10200 (unofficial),
339>18       leshort             0xf00d              Toshiba MeP (unofficial),
340>18       leshort             0xfeb0              Renesas M32C (unofficial),
341>18       leshort             0xfeba              Vitesse IQ2000 (unofficial),
342>18       leshort             0xfebb              NIOS (unofficial),
343>18       leshort             0xfeed              Moxie (unofficial),
344>18       default             x
345>>18      leshort             x                   *unknown arch %#x*
346>20       lelong              0                   invalid version
347>20       lelong              1                   version 1
348
3490         string              \177ELF             ELF
350!:strength *2
351>4        byte                0                   invalid class
352>4        byte                1                   32-bit
353>4        byte                2                   64-bit
354>5        byte                0                   invalid byte order
355>5        byte                1                   LSB
356>>0       use                 elf-le
357>5        byte                2                   MSB
358>>0       use                 \^elf-le
359>7        byte                0                   (SYSV)
360>7        byte                1                   (HP-UX)
361>7        byte                2                   (NetBSD)
362>7        byte                3                   (GNU/Linux)
363>7        byte                4                   (GNU/Hurd)
364>7        byte                5                   (86Open)
365>7        byte                6                   (Solaris)
366>7        byte                7                   (Monterey)
367>7        byte                8                   (IRIX)
368>7        byte                9                   (FreeBSD)
369>7        byte                10                  (Tru64)
370>7        byte                11                  (Novell Modesto)
371>7        byte                12                  (OpenBSD)
372>7        byte                13                  (OpenVMS)
373>7        byte                14                  (HP NonStop Kernel)
374>7        byte                15                  (AROS Research Operating System)
375>7        byte                16                  (FenixOS)
376>7        byte                17                  (Nuxi CloudABI)
377>7        byte                97                  (ARM)
378>7        byte                202                 (Cafe OS)
379>7        byte                255                 (embedded)
380