elf revision 80588
1
2#------------------------------------------------------------------------------
3# elf:  file(1) magic for ELF executables
4#
5# We have to check the byte order flag to see what byte order all the
6# other stuff in the header is in.
7#
8# MIPS R3000 may also be for MIPS R2000.
9# What're the correct byte orders for the nCUBE and the Fujitsu VPP500?
10#
11# updated by Daniel Quinlan (quinlan@yggdrasil.com)
120	string		\177ELF		ELF
13>4	byte		0		invalid class
14>4	byte		1		32-bit
15# only for MIPS
16>>18	beshort		8
17>>18	beshort		10
18>>>36   belong          &0x20           N32
19>4	byte		2		64-bit
20>5	byte		0		invalid byte order
21>5	byte		1		LSB
22# only for MIPS R3000_BE
23>>18    leshort		8
24# only for 32-bit
25>>>4	byte		1
26>>>>36  lelong&0xf0000000       0x00000000      mips-1
27>>>>36  lelong&0xf0000000       0x10000000      mips-2
28>>>>36  lelong&0xf0000000       0x20000000      mips-3
29>>>>36  lelong&0xf0000000       0x30000000      mips-4
30>>>>36  lelong&0xf0000000       0x40000000      mips-5
31>>>>36  lelong&0xf0000000       0x50000000      mips-6
32# only for 64-bit
33>>>4	byte		2
34>>>>48  lelong&0xf0000000       0x00000000      mips-1
35>>>>48  lelong&0xf0000000       0x10000000      mips-2
36>>>>48  lelong&0xf0000000       0x20000000      mips-3
37>>>>48  lelong&0xf0000000       0x30000000      mips-4
38>>>>48  lelong&0xf0000000       0x40000000      mips-5
39>>>>48  lelong&0xf0000000       0x50000000      mips-6
40>>16	leshort		0		no file type,
41>>16	leshort		1		relocatable,
42>>16	leshort		2		executable,
43>>16	leshort		3		shared object,
44# Core handling from Peter Tobias <tobias@server.et-inf.fho-emden.de>
45# corrections by Christian 'Dr. Disk' Hechelmann <drdisk@ds9.au.s.shuttle.de>
46>>16	leshort		4		core file
47>>>(0x38+0xcc) string	>\0		of '%s'
48>>>(0x38+0x10) lelong	>0		(signal %d),
49>>16	leshort		&0xff00		processor-specific,
50>>18	leshort		0		no machine,
51>>18	leshort		1		AT&T WE32100 - invalid byte order,
52>>18	leshort		2		SPARC - invalid byte order,
53>>18	leshort		3		Intel 80386,
54>>18	leshort		4		Motorola 68000 - invalid byte order,
55>>18	leshort		5		Motorola 88000 - invalid byte order,
56>>18	leshort		6		Intel 80486,
57>>18	leshort		7		Intel 80860,
58# "officially" big endian, but binutils bfd only emits magic #8 for MIPS.
59>>18	leshort		8		MIPS R3000_LE [bfd bug],
60>>18	leshort		9		Amdahl - invalid byte order,
61>>18	leshort		10		MIPS R3000_LE,
62>>18	leshort		11		RS6000 - invalid byte order,
63>>18	leshort		15		PA-RISC - invalid byte order,
64>>>50	leshort		0x0214		2.0
65>>>48	leshort		&0x0008		(LP64),
66>>18	leshort		16		nCUBE,
67>>18	leshort		17		Fujitsu VPP500,
68>>18	leshort		18		SPARC32PLUS,
69>>18	leshort		20		PowerPC,
70>>18	leshort		36		NEC V800,
71>>18	leshort		37		Fujitsu FR20,
72>>18	leshort		38		TRW RH-32,
73>>18	leshort		39		Motorola RCE,
74>>18	leshort		40		ARM,
75>>18	leshort		41		Alpha,
76>>18	leshort		42		Hitachi SH,
77>>18	leshort		43		SPARC V9 - invalid byte order,
78>>18	leshort		44		Siemens Tricore Embedded Processor,
79>>18	leshort		45		Argonaut RISC Core, Argonaut Technologies Inc.,
80>>18	leshort		46		Hitachi H8/300,
81>>18	leshort		47		Hitachi H8/300H,
82>>18	leshort		48		Hitachi H8S,
83>>18	leshort		49		Hitachi H8/500,
84>>18	leshort		50		IA-64 (Intel 64 bit architecture)
85>>18	leshort		51		Stanford MIPS-X,
86>>18	leshort		52		Motorola Coldfire,
87>>18	leshort		53		Motorola M68HC12,
88>>18	leshort		75		Digital VAX,
89>>18	leshort		0x9026		Alpha (unofficial),
90>>20	lelong		0		invalid version
91>>20	lelong		1		version 1
92>>36	lelong		1		MathCoPro/FPU/MAU Required
93>5	byte		2		MSB
94# only for MIPS R3000_BE
95>>18    beshort		8
96# only for 32-bit
97>>>4	byte		1
98>>>>36  belong&0xf0000000       0x00000000      mips-1
99>>>>36  belong&0xf0000000       0x10000000      mips-2
100>>>>36  belong&0xf0000000       0x20000000      mips-3
101>>>>36  belong&0xf0000000       0x30000000      mips-4
102>>>>36  belong&0xf0000000       0x40000000      mips-5
103>>>>36  belong&0xf0000000       0x50000000      mips-6
104# only for 64-bit
105>>>4	byte		2
106>>>>48  belong&0xf0000000       0x00000000      mips-1
107>>>>48  belong&0xf0000000       0x10000000      mips-2
108>>>>48  belong&0xf0000000       0x20000000      mips-3
109>>>>48  belong&0xf0000000       0x30000000      mips-4
110>>>>48  belong&0xf0000000       0x40000000      mips-5
111>>>>48  belong&0xf0000000       0x50000000      mips-6
112>>16	beshort		0		no file type,
113>>16	beshort		1		relocatable,
114>>16	beshort		2		executable,
115>>16	beshort		3		shared object,
116>>16	beshort		4		core file,
117>>>(0x38+0xcc) string	>\0		of '%s'
118>>>(0x38+0x10) belong	>0		(signal %d),
119>>16	beshort		&0xff00		processor-specific,
120>>18	beshort		0		no machine,
121>>18	beshort		1		AT&T WE32100,
122>>18	beshort		2		SPARC,
123>>18	beshort		3		Intel 80386 - invalid byte order,
124>>18	beshort		4		Motorola 68000,
125>>18	beshort		5		Motorola 88000,
126>>18	beshort		6		Intel 80486 - invalid byte order,
127>>18	beshort		7		Intel 80860,
128>>18	beshort		8		MIPS R3000_BE,
129>>18	beshort		9		Amdahl,
130>>18	beshort		10		MIPS R3000_LE - invalid byte order,
131>>18	beshort		11		RS6000,
132>>18	beshort		15		PA-RISC
133>>>50	beshort		0x0214		2.0
134>>>48	beshort		&0x0008		(LP64)
135>>18	beshort		16		nCUBE,
136>>18	beshort		17		Fujitsu VPP500,
137>>18	beshort		18		SPARC32PLUS,
138>>>36	belong&0xffff00	&0x000100	V8+ Required,
139>>>36	belong&0xffff00	&0x000200	Sun UltraSPARC1 Extensions Required,
140>>>36	belong&0xffff00	&0x000400	HaL R1 Extensions Required,
141>>>36	belong&0xffff00	&0x000800	Sun UltraSPARC3 Extensions Required,
142>>18	beshort		20		PowerPC or cisco 4500,
143>>18	beshort		21		cisco 7500,
144>>18	beshort		24		cisco SVIP,
145>>18	beshort		25		cisco 7200,
146>>18	beshort		36		NEC V800 or cisco 12000,
147>>18	beshort		37		Fujitsu FR20,
148>>18	beshort		38		TRW RH-32,
149>>18	beshort		39		Motorola RCE,
150>>18	beshort		40		ARM,
151>>18	beshort		41		Alpha,
152>>18	beshort		42		Hitachi SH,
153>>18	beshort		43		SPARC V9,
154>>18	beshort		44		Siemens Tricore Embedded Processor,
155>>18	beshort		45		Argonaut RISC Core, Argonaut Technologies Inc.,
156>>18	beshort		46		Hitachi H8/300,
157>>18	beshort		47		Hitachi H8/300H,
158>>18	beshort		48		Hitachi H8S,
159>>18	beshort		49		Hitachi H8/500,
160>>18	beshort		50		Intel Merced Processor,
161>>18	beshort		51		Stanford MIPS-X,
162>>18	beshort		52		Motorola Coldfire,
163>>18	beshort		53		Motorola M68HC12,
164>>18	beshort		73		Cray NV1,
165>>18	beshort		75		Digital VAX,
166>>18	beshort		0x9026		Alpha (unofficial),
167>>20	belong		0		invalid version
168>>20	belong		1		version 1
169>>36	belong		1		MathCoPro/FPU/MAU Required
170>8	string		>\0		(%s)
171>8	string		\0
172>>7	byte		0		(SYSV)
173>>7	byte		1		(HP-UX)
174>>7	byte		2		(NetBSD)
175>>7	byte		3		(GNU/Linux)
176>>7	byte		4		(GNU/Hurd)
177>>7	byte		5		(86Open)
178>>7	byte		6		(Solaris)
179>>7	byte		7		(Monterey)
180>>7	byte		8		(IRIX)
181>>7	byte		9		(FreeBSD)
182>>7	byte		10		(Tru64)
183>>7	byte		11		(Novell Modesto)
184>>7	byte		12		(OpenBSD)
185>>7	byte		97		(ARM)
186>>7	byte		255		(embedded)
187