xref: /netbsd-src/external/bsd/file/dist/magic/magdir/elf (revision 4391d5e9d4f291db41e3b3ba26a01b5e51364aae)
1
2#------------------------------------------------------------------------------
3# $File: elf,v 1.59 2013/03/21 17:50:02 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-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	leshort		0		no machine,
34>18	leshort		1		AT&T WE32100
35>18	leshort		2		SPARC
36>18	leshort		3		Intel 80386,
37>18	leshort		4		Motorola
38>>4	byte		1
39>>>36	lelong		&0x01000000	68000 - invalid byte order,
40>>>36	lelong		&0x00810000	CPU32 - invalid byte order,
41>>>36	lelong		0		68020 - invalid byte order,
42>18	leshort		5		Motorola 88000 - invalid byte order,
43>18	leshort		6		Intel 80486,
44>18	leshort		7		Intel 80860,
45# The official e_machine number for MIPS is now #8, regardless of endianness.
46# The second number (#10) will be deprecated later. For now, we still
47# say something if #10 is encountered, but only gory details for #8.
48>18	leshort		8		MIPS,
49>>4	byte		1
50>>>36	lelong		&0x20		N32
51>18	leshort		10		MIPS,
52>>4	byte		1
53>>>36	lelong		&0x20		N32
54>18	leshort		8
55# only for 32-bit
56>>4	byte		1
57>>>36  lelong&0xf0000000	0x00000000	MIPS-I
58>>>36  lelong&0xf0000000	0x10000000	MIPS-II
59>>>36  lelong&0xf0000000	0x20000000	MIPS-III
60>>>36  lelong&0xf0000000	0x30000000	MIPS-IV
61>>>36  lelong&0xf0000000	0x40000000	MIPS-V
62>>>36  lelong&0xf0000000	0x50000000	MIPS32
63>>>36  lelong&0xf0000000	0x60000000	MIPS64
64>>>36  lelong&0xf0000000	0x70000000	MIPS32 rel2
65>>>36  lelong&0xf0000000	0x80000000	MIPS64 rel2
66# only for 64-bit
67>>4	byte		2
68>>>48  lelong&0xf0000000	0x00000000	MIPS-I
69>>>48  lelong&0xf0000000	0x10000000	MIPS-II
70>>>48  lelong&0xf0000000	0x20000000	MIPS-III
71>>>48  lelong&0xf0000000	0x30000000	MIPS-IV
72>>>48  lelong&0xf0000000	0x40000000	MIPS-V
73>>>48  lelong&0xf0000000	0x50000000	MIPS32
74>>>48  lelong&0xf0000000	0x60000000	MIPS64
75>>>48  lelong&0xf0000000	0x70000000	MIPS32 rel2
76>>>48  lelong&0xf0000000	0x80000000	MIPS64 rel2
77>18	leshort		9		Amdahl - invalid byte order,
78>18	leshort		10		MIPS (deprecated),
79>18	leshort		11		RS6000 - invalid byte order,
80>18	leshort		15		PA-RISC - invalid byte order,
81# only for 32-bit
82>>4	byte		1
83>>>38	leshort		0x0214		2.0
84>>>36	leshort		&0x0008		(LP64)
85# only for 64-bit
86>>4	byte		2
87>>>50	leshort		0x0214		2.0
88>>>48	leshort		&0x0008		(LP64)
89>18	leshort		16		nCUBE,
90>18	leshort		17		Fujitsu VPP500,
91>18	leshort		18		SPARC32PLUS,
92# only for 32-bit
93>>4	byte		1
94>>>36	lelong&0xffff00	0x000100	V8+ Required,
95>>>36	lelong&0xffff00	0x000200	Sun UltraSPARC1 Extensions Required,
96>>>36	lelong&0xffff00	0x000400	HaL R1 Extensions Required,
97>>>36	lelong&0xffff00	0x000800	Sun UltraSPARC3 Extensions Required,
98>18	leshort		20		PowerPC or cisco 4500,
99>18	leshort		21		64-bit PowerPC or cisco 7500,
100>18	leshort		22		IBM S/390,
101>18	leshort		23		Cell SPU,
102>18	leshort		24		cisco SVIP,
103>18	leshort		25		cisco 7200,
104>18	leshort		36		NEC V800 or cisco 12000,
105>18	leshort		37		Fujitsu FR20,
106>18	leshort		38		TRW RH-32,
107>18	leshort		39		Motorola RCE,
108>18	leshort		40		ARM,
109>>4	byte		1
110>>>36	lelong&0xff000000	0x04000000	EABI4
111>>>36	lelong&0xff000000	0x05000000	EABI5
112>>>36	lelong		&0x00800000	BE8
113>>>36	lelong		&0x00400000	LE8
114>18	leshort		41		Alpha,
115>18	leshort		0xa390		IBM S/390 (obsolete),
116>18	leshort		42		Renesas SH,
117>18	leshort		43		SPARC V9,
118>>4	byte		2
119>>>48	lelong&0xffff00	0x000200	Sun UltraSPARC1 Extensions Required,
120>>>48	lelong&0xffff00	0x000400	HaL R1 Extensions Required,
121>>>48	lelong&0xffff00	0x000800	Sun UltraSPARC3 Extensions Required,
122>>>48	lelong&0x3	0		total store ordering,
123>>>48	lelong&0x3	1		partial store ordering,
124>>>48	lelong&0x3	2		relaxed memory ordering,
125>18	leshort		44		Siemens Tricore Embedded Processor,
126>18	leshort		45		Argonaut RISC Core, Argonaut Technologies Inc.,
127>18	leshort		46		Renesas H8/300,
128>18	leshort		47		Renesas H8/300H,
129>18	leshort		48		Renesas H8S,
130>18	leshort		49		Renesas H8/500,
131>18	leshort		50		IA-64,
132>18	leshort		51		Stanford MIPS-X,
133>18	leshort		52		Motorola Coldfire,
134>18	leshort		53		Motorola M68HC12,
135>18	leshort		54		Fujitsu MMA,
136>18	leshort		55		Siemens PCP,
137>18	leshort		56		Sony nCPU,
138>18	leshort		57		Denso NDR1,
139>18	leshort		58		Start*Core,
140>18	leshort		59		Toyota ME16,
141>18	leshort		60		ST100,
142>18	leshort		61		Tinyj emb.,
143>18	leshort		62		x86-64,
144>18	leshort		63		Sony DSP,
145>18	leshort		66		FX66,
146>18	leshort		67		ST9+ 8/16 bit,
147>18	leshort		68		ST7 8 bit,
148>18	leshort		69		MC68HC16,
149>18	leshort		70		MC68HC11,
150>18	leshort		71		MC68HC08,
151>18	leshort		72		MC68HC05,
152>18	leshort		73		SGI SVx or Cray NV1,
153>18	leshort		74		ST19 8 bit,
154>18	leshort		75		Digital VAX,
155>18	leshort		76		Axis cris,
156>18	leshort		77		Infineon 32-bit embedded,
157>18	leshort		78		Element 14 64-bit DSP,
158>18	leshort		79		LSI Logic 16-bit DSP,
159>18	leshort		80		MMIX,
160>18	leshort		81		Harvard machine-independent,
161>18	leshort		82		SiTera Prism,
162>18	leshort		83		Atmel AVR 8-bit,
163>18	leshort		84		Fujitsu FR30,
164>18	leshort		85		Mitsubishi D10V,
165>18	leshort		86		Mitsubishi D30V,
166>18	leshort		87		NEC v850,
167>18	leshort		88		Renesas M32R,
168>18	leshort		89		Matsushita MN10300,
169>18	leshort		90		Matsushita MN10200,
170>18	leshort		91		picoJava,
171>18	leshort		92		OpenRISC,
172>18	leshort		93		ARC Cores Tangent-A5,
173>18	leshort		94		Tensilica Xtensa,
174>18	leshort		97		NatSemi 32k,
175>18	leshort		106		Analog Devices Blackfin,
176>18	leshort		113		Altera Nios II,
177>18	leshort		174		META,
178>18	leshort		183		ARM aarch64,
179>18	leshort		187		Tilera TILE64,
180>18	leshort		188		Tilera TILEPro,
181>18	leshort		191		Tilera TILE-Gx,
182>18	leshort		0x3426		OpenRISC (obsolete),
183>18	leshort		0x8472		OpenRISC (obsolete),
184>18	leshort		0x9026		Alpha (unofficial),
185>20	lelong		0		invalid version
186>20	lelong		1		version 1
187
1880	string		\177ELF		ELF
189!:strength *2
190>4	byte		0		invalid class
191>4	byte		1		32-bit
192>4	byte		2		64-bit
193>5	byte		0		invalid byte order
194>5	byte		1		LSB
195>>0	use		elf-le
196>5	byte		2		MSB
197>>0	use		\^elf-le
198# Up to now only 0, 1 and 2 are defined; I've seen a file with 0x83, it seemed
199# like proper ELF, but extracting the string had bad results.
200>4      byte            <0x80
201>>8	string		>\0		(%s)
202>8	string		\0
203>>7	byte		0		(SYSV)
204>>7	byte		1		(HP-UX)
205>>7	byte		2		(NetBSD)
206>>7	byte		3		(GNU/Linux)
207>>7	byte		4		(GNU/Hurd)
208>>7	byte		5		(86Open)
209>>7	byte		6		(Solaris)
210>>7	byte		7		(Monterey)
211>>7	byte		8		(IRIX)
212>>7	byte		9		(FreeBSD)
213>>7	byte		10		(Tru64)
214>>7	byte		11		(Novell Modesto)
215>>7	byte		12		(OpenBSD)
216>8      string          \2
217>>7     byte            13              (OpenVMS)
218>>7	byte		97		(ARM)
219>>7	byte		255		(embedded)
220