]> CyberLeo.Net >> Repos - FreeBSD/releng/8.1.git/blob - contrib/file/Magdir/elf
Copy stable/8 to releng/8.1 in preparation for 8.1-RC1.
[FreeBSD/releng/8.1.git] / contrib / file / Magdir / elf
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 # What're the correct byte orders for the nCUBE and the Fujitsu VPP500?
9 #
10 # Created by: unknown
11 # Modified by (1): Daniel Quinlan <quinlan@yggdrasil.com>
12 # Modified by (2): Peter Tobias <tobias@server.et-inf.fho-emden.de> (core support)
13 # Modified by (3): Christian 'Dr. Disk' Hechelmann <drdisk@ds9.au.s.shuttle.de> (fix of core support)
14 # Modified by (4): <gerardo.cacciari@gmail.com> (VMS Itanium)
15 # Modified by (5): Matthias Urlichs <smurf@debian.org> (Listing of many architectures)
16 0       string          \177ELF         ELF
17 >4      byte            0               invalid class
18 >4      byte            1               32-bit
19 >4      byte            2               64-bit
20 >5      byte            0               invalid byte order
21 >5      byte            1               LSB
22 >>16    leshort         0               no file type,
23 !:strength *2
24 !:mime  application/octet-stream
25 >>16    leshort         1               relocatable,
26 !:mime  application/x-object
27 >>16    leshort         2               executable,
28 !:mime  application/x-executable
29 >>16    leshort         3               shared object,
30 !:mime  application/x-sharedlib
31 >>16    leshort         4               core file
32 !:mime  application/x-coredump
33 # Core file detection is not reliable.
34 #>>>(0x38+0xcc) string  >\0             of '%s'
35 #>>>(0x38+0x10) lelong  >0              (signal %d),
36 >>16    leshort         &0xff00         processor-specific,
37 >>18    leshort         0               no machine,
38 >>18    leshort         1               AT&T WE32100 - invalid byte order,
39 >>18    leshort         2               SPARC - invalid byte order,
40 >>18    leshort         3               Intel 80386,
41 >>18    leshort         4               Motorola
42 >>>36   lelong          &0x01000000     68000 - invalid byte order,
43 >>>36   lelong          &0x00810000     CPU32 - invalid byte order,
44 >>>36   lelong          0               68020 - invalid byte order,
45 >>18    leshort         5               Motorola 88000 - invalid byte order,
46 >>18    leshort         6               Intel 80486,
47 >>18    leshort         7               Intel 80860,
48 # The official e_machine number for MIPS is now #8, regardless of endianness.
49 # The second number (#10) will be deprecated later. For now, we still
50 # say something if #10 is encountered, but only gory details for #8.
51 >>18    leshort         8               MIPS,
52 >>>36   lelong          &0x20           N32
53 >>18    leshort         10              MIPS,
54 >>>36   lelong          &0x20           N32
55 >>18    leshort         8
56 # only for 32-bit
57 >>>4    byte            1
58 >>>>36  lelong&0xf0000000       0x00000000      MIPS-I
59 >>>>36  lelong&0xf0000000       0x10000000      MIPS-II
60 >>>>36  lelong&0xf0000000       0x20000000      MIPS-III
61 >>>>36  lelong&0xf0000000       0x30000000      MIPS-IV
62 >>>>36  lelong&0xf0000000       0x40000000      MIPS-V
63 >>>>36  lelong&0xf0000000       0x50000000      MIPS32
64 >>>>36  lelong&0xf0000000       0x60000000      MIPS64
65 >>>>36  lelong&0xf0000000       0x70000000      MIPS32 rel2
66 >>>>36  lelong&0xf0000000       0x80000000      MIPS64 rel2
67 # only for 64-bit
68 >>>4    byte            2
69 >>>>48  lelong&0xf0000000       0x00000000      MIPS-I
70 >>>>48  lelong&0xf0000000       0x10000000      MIPS-II
71 >>>>48  lelong&0xf0000000       0x20000000      MIPS-III
72 >>>>48  lelong&0xf0000000       0x30000000      MIPS-IV
73 >>>>48  lelong&0xf0000000       0x40000000      MIPS-V
74 >>>>48  lelong&0xf0000000       0x50000000      MIPS32
75 >>>>48  lelong&0xf0000000       0x60000000      MIPS64
76 >>>>48  lelong&0xf0000000       0x70000000      MIPS32 rel2
77 >>>>48  lelong&0xf0000000       0x80000000      MIPS64 rel2
78 >>18    leshort         9               Amdahl - invalid byte order,
79 >>18    leshort         10              MIPS (deprecated),
80 >>18    leshort         11              RS6000 - invalid byte order,
81 >>18    leshort         15              PA-RISC - invalid byte order,
82 >>>50   leshort         0x0214          2.0
83 >>>48   leshort         &0x0008         (LP64),
84 >>18    leshort         16              nCUBE,
85 >>18    leshort         17              Fujitsu VPP500,
86 >>18    leshort         18              SPARC32PLUS - invalid byte order,
87 >>18    leshort         20              PowerPC,
88 >>18    leshort         22              IBM S/390,
89 >>18    leshort         36              NEC V800,
90 >>18    leshort         37              Fujitsu FR20,
91 >>18    leshort         38              TRW RH-32,
92 >>18    leshort         39              Motorola RCE,
93 >>18    leshort         40              ARM,
94 >>18    leshort         41              Alpha,
95 >>18    leshort         0xa390          IBM S/390 (obsolete),
96 >>18    leshort         42              Renesas SH,
97 >>18    leshort         43              SPARC V9 - invalid byte order,
98 >>18    leshort         44              Siemens Tricore Embedded Processor,
99 >>18    leshort         45              Argonaut RISC Core, Argonaut Technologies Inc.,
100 >>18    leshort         46              Renesas H8/300,
101 >>18    leshort         47              Renesas H8/300H,
102 >>18    leshort         48              Renesas H8S,
103 >>18    leshort         49              Renesas H8/500,
104 >>18    leshort         50              IA-64,
105 >>18    leshort         51              Stanford MIPS-X,
106 >>18    leshort         52              Motorola Coldfire,
107 >>18    leshort         53              Motorola M68HC12,
108 >>18    leshort         54              Fujitsu MMA,
109 >>18    leshort         55              Siemens PCP,
110 >>18    leshort         56              Sony nCPU,
111 >>18    leshort         57              Denso NDR1,
112 >>18    leshort         58              Start*Core,
113 >>18    leshort         59              Toyota ME16,
114 >>18    leshort         60              ST100,
115 >>18    leshort         61              Tinyj emb.,
116 >>18    leshort         62              x86-64,
117 >>18    leshort         63              Sony DSP,
118 >>18    leshort         66              FX66,
119 >>18    leshort         67              ST9+ 8/16 bit,
120 >>18    leshort         68              ST7 8 bit,
121 >>18    leshort         69              MC68HC16,
122 >>18    leshort         70              MC68HC11,
123 >>18    leshort         71              MC68HC08,
124 >>18    leshort         72              MC68HC05,
125 >>18    leshort         73              SGI SVx,
126 >>18    leshort         74              ST19 8 bit,
127 >>18    leshort         75              Digital VAX,
128 >>18    leshort         76              Axis cris,
129 >>18    leshort         77              Infineon 32-bit embedded,
130 >>18    leshort         78              Element 14 64-bit DSP,
131 >>18    leshort         79              LSI Logic 16-bit DSP,
132 >>18    leshort         80              MMIX,
133 >>18    leshort         81              Harvard machine-independent,
134 >>18    leshort         82              SiTera Prism,
135 >>18    leshort         83              Atmel AVR 8-bit,
136 >>18    leshort         84              Fujitsu FR30,
137 >>18    leshort         85              Mitsubishi D10V,
138 >>18    leshort         86              Mitsubishi D30V,
139 >>18    leshort         87              NEC v850,
140 >>18    leshort         88              Renesas M32R,
141 >>18    leshort         89              Matsushita MN10300,
142 >>18    leshort         90              Matsushita MN10200,
143 >>18    leshort         91              picoJava,
144 >>18    leshort         92              OpenRISC,
145 >>18    leshort         93              ARC Cores Tangent-A5,
146 >>18    leshort         94              Tensilica Xtensa,
147 >>18    leshort         97              NatSemi 32k,
148 >>18    leshort         106             Analog Devices Blackfin,
149 >>18    leshort         113             Altera Nios II,
150 >>18    leshort         0xae            META,
151 >>18    leshort         0x3426          OpenRISC (obsolete),
152 >>18    leshort         0x8472          OpenRISC (obsolete),
153 >>18    leshort         0x9026          Alpha (unofficial),
154 >>20    lelong          0               invalid version
155 >>20    lelong          1               version 1
156 >>36    lelong          1               MathCoPro/FPU/MAU Required
157 >5      byte            2               MSB
158 >>16    beshort         0               no file type,
159 !:mime  application/octet-stream
160 >>16    beshort         1               relocatable,
161 !:mime  application/x-object
162 >>16    beshort         2               executable,
163 !:mime  application/x-executable
164 >>16    beshort         3               shared object,
165 !:mime  application/x-sharedlib
166 >>16    beshort         4               core file,
167 !:mime  application/x-coredump
168 #>>>(0x38+0xcc) string  >\0             of '%s'
169 #>>>(0x38+0x10) belong  >0              (signal %d),
170 >>16    beshort         &0xff00         processor-specific,
171 >>18    beshort         0               no machine,
172 >>18    beshort         1               AT&T WE32100,
173 >>18    beshort         2               SPARC,
174 >>18    beshort         3               Intel 80386 - invalid byte order,
175 >>18    beshort         4               Motorola
176 >>>36   belong          &0x01000000     68000,
177 >>>36   belong          &0x00810000     CPU32,
178 >>>36   belong          0               68020,
179 >>18    beshort         5               Motorola 88000,
180 >>18    beshort         6               Intel 80486 - invalid byte order,
181 >>18    beshort         7               Intel 80860,
182 # only for MIPS - see comment in little-endian section above.
183 >>18    beshort         8               MIPS,
184 >>>36   belong          &0x20           N32
185 >>18    beshort         10              MIPS,
186 >>>36   belong          &0x20           N32
187 >>18    beshort         8
188 # only for 32-bit
189 >>>4    byte            1
190 >>>>36  belong&0xf0000000       0x00000000      MIPS-I
191 >>>>36  belong&0xf0000000       0x10000000      MIPS-II
192 >>>>36  belong&0xf0000000       0x20000000      MIPS-III
193 >>>>36  belong&0xf0000000       0x30000000      MIPS-IV
194 >>>>36  belong&0xf0000000       0x40000000      MIPS-V
195 >>>>36  belong&0xf0000000       0x50000000      MIPS32
196 >>>>36  belong&0xf0000000       0x60000000      MIPS64
197 >>>>36  belong&0xf0000000       0x70000000      MIPS32 rel2
198 >>>>36  belong&0xf0000000       0x80000000      MIPS64 rel2
199 # only for 64-bit
200 >>>4    byte            2
201 >>>>48  belong&0xf0000000       0x00000000      MIPS-I
202 >>>>48  belong&0xf0000000       0x10000000      MIPS-II
203 >>>>48  belong&0xf0000000       0x20000000      MIPS-III
204 >>>>48  belong&0xf0000000       0x30000000      MIPS-IV
205 >>>>48  belong&0xf0000000       0x40000000      MIPS-V
206 >>>>48  belong&0xf0000000       0x50000000      MIPS32
207 >>>>48  belong&0xf0000000       0x60000000      MIPS64
208 >>>>48  belong&0xf0000000       0x70000000      MIPS32 rel2
209 >>>>48  belong&0xf0000000       0x80000000      MIPS64 rel2
210 >>18    beshort         9               Amdahl,
211 >>18    beshort         10              MIPS (deprecated),
212 >>18    beshort         11              RS6000,
213 >>18    beshort         15              PA-RISC
214 >>>50   beshort         0x0214          2.0
215 >>>48   beshort         &0x0008         (LP64)
216 >>18    beshort         16              nCUBE,
217 >>18    beshort         17              Fujitsu VPP500,
218 >>18    beshort         18              SPARC32PLUS,
219 >>>36   belong&0xffff00 0x000100        V8+ Required,
220 >>>36   belong&0xffff00 0x000200        Sun UltraSPARC1 Extensions Required,
221 >>>36   belong&0xffff00 0x000400        HaL R1 Extensions Required,
222 >>>36   belong&0xffff00 0x000800        Sun UltraSPARC3 Extensions Required,
223 >>18    beshort         20              PowerPC or cisco 4500,
224 >>18    beshort         21              64-bit PowerPC or cisco 7500,
225 >>18    beshort         22              IBM S/390,
226 >>18    beshort         23              Cell SPU,
227 >>18    beshort         24              cisco SVIP,
228 >>18    beshort         25              cisco 7200,
229 >>18    beshort         36              NEC V800 or cisco 12000,
230 >>18    beshort         37              Fujitsu FR20,
231 >>18    beshort         38              TRW RH-32,
232 >>18    beshort         39              Motorola RCE,
233 >>18    beshort         40              ARM,
234 >>18    beshort         41              Alpha,
235 >>18    beshort         42              Renesas SH,
236 >>18    beshort         43              SPARC V9,
237 >>>48   belong&0xffff00 0x000200        Sun UltraSPARC1 Extensions Required,
238 >>>48   belong&0xffff00 0x000400        HaL R1 Extensions Required,
239 >>>48   belong&0xffff00 0x000800        Sun UltraSPARC3 Extensions Required,
240 >>>48   belong&0x3      0               total store ordering,
241 >>>48   belong&0x3      1               partial store ordering,
242 >>>48   belong&0x3      2               relaxed memory ordering,
243 >>18    beshort         44              Siemens Tricore Embedded Processor,
244 >>18    beshort         45              Argonaut RISC Core, Argonaut Technologies Inc.,
245 >>18    beshort         46              Renesas H8/300,
246 >>18    beshort         47              Renesas H8/300H,
247 >>18    beshort         48              Renesas H8S,
248 >>18    beshort         49              Renesas H8/500,
249 >>18    beshort         50              IA-64,
250 >>18    beshort         51              Stanford MIPS-X,
251 >>18    beshort         52              Motorola Coldfire,
252 >>18    beshort         53              Motorola M68HC12,
253 >>18    beshort         73              Cray NV1,
254 >>18    beshort         75              Digital VAX,
255 >>18    beshort         88              Renesas M32R,
256 >>18    leshort         92              OpenRISC,
257 >>18    leshort         0x3426          OpenRISC (obsolete),
258 >>18    leshort         0x8472          OpenRISC (obsolete),
259 >>18    beshort         94              Tensilica Xtensa,
260 >>18    beshort         97              NatSemi 32k,
261 >>18    beshort         0x18ad          AVR32 (unofficial),
262 >>18    beshort         0x9026          Alpha (unofficial),
263 >>18    beshort         0xa390          IBM S/390 (obsolete),
264 >>20    belong          0               invalid version
265 >>20    belong          1               version 1
266 >>36    belong          1               MathCoPro/FPU/MAU Required
267 # Up to now only 0, 1 and 2 are defined; I've seen a file with 0x83, it seemed
268 # like proper ELF, but extracting the string had bad results.
269 >4      byte            <0x80
270 >>8     string          >\0             (%s)
271 >8      string          \0
272 >>7     byte            0               (SYSV)
273 >>7     byte            1               (HP-UX)
274 >>7     byte            2               (NetBSD)
275 >>7     byte            3               (GNU/Linux)
276 >>7     byte            4               (GNU/Hurd)
277 >>7     byte            5               (86Open)
278 >>7     byte            6               (Solaris)
279 >>7     byte            7               (Monterey)
280 >>7     byte            8               (IRIX)
281 >>7     byte            9               (FreeBSD)
282 >>7     byte            10              (Tru64)
283 >>7     byte            11              (Novell Modesto)
284 >>7     byte            12              (OpenBSD)
285 >8      string          \2
286 >>7     byte            13              (OpenVMS)
287 >>7     byte            97              (ARM)
288 >>7     byte            255             (embedded)