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