summaryrefslogtreecommitdiff
path: root/usr.bin/file/magdir/elf
blob: 0d8934831cb9a3bc0b85cd823c6ec121e6993a55 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
#	$OpenBSD: elf,v 1.18 2017/02/19 13:15:19 jsg Exp $

#------------------------------------------------------------------------------
# elf:  file(1) magic for ELF executables
#
# We have to check the byte order flag to see what byte order all the
# other stuff in the header is in.
#
# What're the correct byte orders for the nCUBE and the Fujitsu VPP500?
#
# updated by Daniel Quinlan (quinlan@yggdrasil.com)
0	string		\177ELF		ELF
>4	byte		0		invalid class
>4	byte		1		32-bit
>4	byte		2		64-bit
>5	byte		0		invalid byte order
>5	byte		1		LSB
>>16	leshort		0		no file type,
!:mime	application/octet-stream
>>16	leshort		1		relocatable,
!:mime	application/x-object
>>16	leshort		2		executable,
!:mime	application/x-executable
>>16	leshort		3		shared object,
!:mime	application/x-sharedlib
# Core handling from Peter Tobias <tobias@server.et-inf.fho-emden.de>
# corrections by Christian 'Dr. Disk' Hechelmann <drdisk@ds9.au.s.shuttle.de>
>>16	leshort		4		core file
!:mime	application/x-coredump
# Core file detection is not reliable.
#>>>(0x38+0xcc) string	>\0		of '%s'
#>>>(0x38+0x10) lelong	>0		(signal %d),
>>16	leshort		&0xff00		processor-specific,
>>18	leshort		0		no machine,
>>18	leshort		1		AT&T WE32100 - invalid byte order,
>>18	leshort		2		SPARC - invalid byte order,
>>18	leshort		3		Intel 80386,
>>18	leshort		4		Motorola
>>>36	lelong		&0x01000000	68000 - invalid byte order,
>>>36	lelong		&0x00810000	CPU32 - invalid byte order,
>>>36	lelong		0		68020 - invalid byte order,
>>18	leshort		5		Motorola 88000 - invalid byte order,
>>18	leshort		6		Intel 80486,
>>18	leshort		7		Intel 80860,
# The official e_machine number for MIPS is now #8, regardless of endianness.
# The second number (#10) will be deprecated later. For now, we still
# say something if #10 is encountered, but only gory details for #8.
>>18	leshort		8		MIPS,
>>>36	lelong		&0x20		N32
>>18	leshort		10		MIPS,
>>>36	lelong		&0x20		N32
>>18	leshort		8
# only for 32-bit
>>>4	byte		1
>>>>36  lelong&0xf0000000	0x00000000	MIPS-I
>>>>36  lelong&0xf0000000	0x10000000	MIPS-II
>>>>36  lelong&0xf0000000	0x20000000	MIPS-III
>>>>36  lelong&0xf0000000	0x30000000	MIPS-IV
>>>>36  lelong&0xf0000000	0x40000000	MIPS-V
>>>>36  lelong&0xf0000000	0x50000000	MIPS32
>>>>36  lelong&0xf0000000	0x60000000	MIPS64
>>>>36  lelong&0xf0000000	0x70000000	MIPS32 rel2
>>>>36  lelong&0xf0000000	0x80000000	MIPS64 rel2
# only for 64-bit
>>>4	byte		2
>>>>48  lelong&0xf0000000	0x00000000	MIPS-I
>>>>48  lelong&0xf0000000	0x10000000	MIPS-II
>>>>48  lelong&0xf0000000	0x20000000	MIPS-III
>>>>48  lelong&0xf0000000	0x30000000	MIPS-IV
>>>>48  lelong&0xf0000000	0x40000000	MIPS-V
>>>>48  lelong&0xf0000000	0x50000000	MIPS32
>>>>48  lelong&0xf0000000	0x60000000	MIPS64
>>>>48  lelong&0xf0000000	0x70000000	MIPS32 rel2
>>>>48  lelong&0xf0000000	0x80000000	MIPS64 rel2
>>18	leshort		9		Amdahl - invalid byte order,
>>18	leshort		10		MIPS (deprecated),
>>18	leshort		11		RS6000 - invalid byte order,
>>18	leshort		15		PA-RISC - invalid byte order,
>>>50	leshort		0x0214		2.0
>>>48	leshort		&0x0008		(LP64),
>>18	leshort		16		nCUBE,
>>18	leshort		17		Fujitsu VPP500,
>>18	leshort		18		SPARC32PLUS,
>>18	leshort		20		PowerPC,
>>18	leshort		22		IBM S/390,
>>18	leshort		36		NEC V800,
>>18	leshort		37		Fujitsu FR20,
>>18	leshort		38		TRW RH-32,
>>18	leshort		39		Motorola RCE,
>>18	leshort		40		ARM,
>>18	leshort		41		Alpha,
>>18	leshort		0xa390		IBM S/390 (obsolete),
>>18	leshort		42		Renesas SH,
>>18	leshort		43		SPARC V9 - invalid byte order,
>>18	leshort		44		Siemens Tricore Embedded Processor,
>>18	leshort		45		Argonaut RISC Core, Argonaut Technologies Inc.,
>>18	leshort		46		Renesas H8/300,
>>18	leshort		47		Renesas H8/300H,
>>18	leshort		48		Renesas H8S,
>>18	leshort		49		Renesas H8/500,
>>18	leshort		50		IA-64,
>>18	leshort		51		Stanford MIPS-X,
>>18	leshort		52		Motorola Coldfire,
>>18	leshort		53		Motorola M68HC12,
>>18	leshort		54		Fujitsu MMA,
>>18	leshort		55		Siemens PCP,
>>18	leshort		56		Sony nCPU,
>>18	leshort		57		Denso NDR1,
>>18	leshort		58		Start*Core,
>>18	leshort		59		Toyota ME16,
>>18	leshort		60		ST100,
>>18	leshort		61		Tinyj emb.,
>>18	leshort		62		x86-64,
>>18	leshort		63		Sony DSP,
>>18	leshort		66		FX66,
>>18	leshort		67		ST9+ 8/16 bit,
>>18	leshort		68		ST7 8 bit,
>>18	leshort		69		MC68HC16,
>>18	leshort		70		MC68HC11,
>>18	leshort		71		MC68HC08,
>>18	leshort		72		MC68HC05,
>>18	leshort		73		SGI SVx,
>>18	leshort		74		ST19 8 bit,
>>18	leshort		75		Digital VAX,
>>18	leshort		76		Axis cris,
>>18	leshort		77		Infineon 32-bit embedded,
>>18	leshort		78		Element 14 64-bit DSP,
>>18	leshort		79		LSI Logic 16-bit DSP,
>>18	leshort		80		MMIX,
>>18	leshort		81		Harvard machine-independent,
>>18	leshort		82		SiTera Prism,
>>18	leshort		83		Atmel AVR 8-bit,
>>18	leshort		84		Fujitsu FR30,
>>18	leshort		85		Mitsubishi D10V,
>>18	leshort		86		Mitsubishi D30V,
>>18	leshort		87		NEC v850,
>>18	leshort		88		Renesas M32R,
>>18	leshort		89		Matsushita MN10300,
>>18	leshort		90		Matsushita MN10200,
>>18	leshort		91		picoJava,
>>18	leshort		92		OpenRISC,
>>18	leshort		93		ARC Cores Tangent-A5,
>>18	leshort		0x3426		OpenRISC (obsolete),
>>18	leshort		0x8472		OpenRISC (obsolete),
>>18	leshort		94		Tensilica Xtensa,
>>18	leshort		97		NatSemi 32k,
>>18	leshort		106		Analog Devices Blackfin,
>>18	leshort		0x9026		Alpha (unofficial),
>>18	leshort		183		AArch64,
>>20	lelong		0		invalid version
>>20	lelong		1		version 1
>>36	lelong		1		MathCoPro/FPU/MAU Required
>5	byte		2		MSB
>>16	beshort		0		no file type,
!:mime	application/octet-stream
>>16	beshort		1		relocatable,
!:mime	application/x-object
>>16	beshort		2		executable,
!:mime	application/x-executable
>>16	beshort		3		shared object,
!:mime	application/x-sharedlib
>>16	beshort		4		core file,
!:mime	application/x-coredump
#>>>(0x38+0xcc) string	>\0		of '%s'
#>>>(0x38+0x10) belong	>0		(signal %d),
>>16	beshort		&0xff00		processor-specific,
>>18	beshort		0		no machine,
>>18	beshort		1		AT&T WE32100,
>>18	beshort		2		SPARC,
>>18	beshort		3		Intel 80386 - invalid byte order,
>>18	beshort		4		Motorola
>>>36	belong		&0x01000000	68000,
>>>36	belong		&0x00810000	CPU32,
>>>36	belong		0		68020,
>>18	beshort		5		Motorola 88000,
>>18	beshort		6		Intel 80486 - invalid byte order,
>>18	beshort		7		Intel 80860,
# only for MIPS - see comment in little-endian section above.
>>18	beshort		8		MIPS,
>>>36	belong		&0x20		N32
>>18	beshort		10		MIPS,
>>>36	belong		&0x20		N32
>>18	beshort		8
# only for 32-bit
>>>4	byte		1
>>>>36  belong&0xf0000000	0x00000000	MIPS-I
>>>>36  belong&0xf0000000	0x10000000	MIPS-II
>>>>36  belong&0xf0000000	0x20000000	MIPS-III
>>>>36  belong&0xf0000000	0x30000000	MIPS-IV
>>>>36  belong&0xf0000000	0x40000000	MIPS-V
>>>>36  belong&0xf0000000	0x50000000	MIPS32
>>>>36  belong&0xf0000000	0x60000000	MIPS64
>>>>36  belong&0xf0000000	0x70000000	MIPS32 rel2
>>>>36  belong&0xf0000000	0x80000000	MIPS64 rel2
# only for 64-bit
>>>4	byte		2
>>>>48	belong&0xf0000000	0x00000000	MIPS-I
>>>>48	belong&0xf0000000	0x10000000	MIPS-II
>>>>48	belong&0xf0000000	0x20000000	MIPS-III
>>>>48	belong&0xf0000000	0x30000000	MIPS-IV
>>>>48	belong&0xf0000000	0x40000000	MIPS-V
>>>>48	belong&0xf0000000	0x50000000	MIPS32
>>>>48	belong&0xf0000000	0x60000000	MIPS64
>>>>48	belong&0xf0000000	0x70000000	MIPS32 rel2
>>>>48	belong&0xf0000000	0x80000000	MIPS64 rel2
>>18	beshort		9		Amdahl,
>>18	beshort		10		MIPS (deprecated),
>>18	beshort		11		RS6000,
>>18	beshort		15		PA-RISC
>>>50	beshort		0x0214		2.0
>>>48	beshort		&0x0008		(LP64)
>>18	beshort		16		nCUBE,
>>18	beshort		17		Fujitsu VPP500,
>>18	beshort		18		SPARC32PLUS,
>>>36	belong&0xffff00	&0x000100	V8+ Required,
>>>36	belong&0xffff00	&0x000200	Sun UltraSPARC1 Extensions Required,
>>>36	belong&0xffff00	&0x000400	HaL R1 Extensions Required,
>>>36	belong&0xffff00	&0x000800	Sun UltraSPARC3 Extensions Required,
>>18	beshort		20		PowerPC or cisco 4500,
>>18	beshort		21		64-bit PowerPC or cisco 7500,
>>18	beshort		22		IBM S/390,
>>18	beshort		23		Cell SPU,
>>18	beshort		24		cisco SVIP,
>>18	beshort		25		cisco 7200,
>>18	beshort		36		NEC V800 or cisco 12000,
>>18	beshort		37		Fujitsu FR20,
>>18	beshort		38		TRW RH-32,
>>18	beshort		39		Motorola RCE,
>>18	beshort		40		ARM,
>>18	beshort		41		Alpha,
>>18	beshort		42		Renesas SH,
>>18	beshort		43		SPARC V9,
>>18	beshort		44		Siemens Tricore Embedded Processor,
>>18	beshort		45		Argonaut RISC Core, Argonaut Technologies Inc.,
>>18	beshort		46		Renesas H8/300,
>>18	beshort		47		Renesas H8/300H,
>>18	beshort		48		Renesas H8S,
>>18	beshort		49		Renesas H8/500,
>>18	beshort		50		IA-64,
>>18	beshort		51		Stanford MIPS-X,
>>18	beshort		52		Motorola Coldfire,
>>18	beshort		53		Motorola M68HC12,
>>18	beshort		73		Cray NV1,
>>18	beshort		75		Digital VAX,
>>18	beshort		88		Renesas M32R,
>>18	leshort		92		OpenRISC,
>>18	leshort		0x3426		OpenRISC (obsolete),
>>18	leshort		0x8472		OpenRISC (obsolete),
>>18	beshort		94		Tensilica Xtensa,
>>18	beshort		97		NatSemi 32k,
>>18	beshort		0x18ad		AVR32 (unofficial),
>>18	beshort		0x9026		Alpha (unofficial),
>>18	beshort		0xa390		IBM S/390 (obsolete),
>>20	belong		0		invalid version
>>20	belong		1		version 1
>>36	belong		1		MathCoPro/FPU/MAU Required