]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/file/Magdir/elf
Record that base/vendor/file/dist@186675 was merged.
[FreeBSD/FreeBSD.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         0x3426          OpenRISC (obsolete),
147 >>18    leshort         0x8472          OpenRISC (obsolete),
148 >>18    leshort         94              Tensilica Xtensa,
149 >>18    leshort         97              NatSemi 32k,
150 >>18    leshort         106             Analog Devices Blackfin,
151 >>18    leshort         0x9026          Alpha (unofficial),
152 >>20    lelong          0               invalid version
153 >>20    lelong          1               version 1
154 >>36    lelong          1               MathCoPro/FPU/MAU Required
155 >5      byte            2               MSB
156 >>16    beshort         0               no file type,
157 !:mime  application/octet-stream
158 >>16    beshort         1               relocatable,
159 !:mime  application/x-object
160 >>16    beshort         2               executable,
161 !:mime  application/x-executable
162 >>16    beshort         3               shared object,
163 !:mime  application/x-sharedlib
164 >>16    beshort         4               core file,
165 !:mime  application/x-coredump
166 #>>>(0x38+0xcc) string  >\0             of '%s'
167 #>>>(0x38+0x10) belong  >0              (signal %d),
168 >>16    beshort         &0xff00         processor-specific,
169 >>18    beshort         0               no machine,
170 >>18    beshort         1               AT&T WE32100,
171 >>18    beshort         2               SPARC,
172 >>18    beshort         3               Intel 80386 - invalid byte order,
173 >>18    beshort         4               Motorola
174 >>>36   belong          &0x01000000     68000,
175 >>>36   belong          &0x00810000     CPU32,
176 >>>36   belong          0               68020,
177 >>18    beshort         5               Motorola 88000,
178 >>18    beshort         6               Intel 80486 - invalid byte order,
179 >>18    beshort         7               Intel 80860,
180 # only for MIPS - see comment in little-endian section above.
181 >>18    beshort         8               MIPS,
182 >>>36   belong          &0x20           N32
183 >>18    beshort         10              MIPS,
184 >>>36   belong          &0x20           N32
185 >>18    beshort         8
186 # only for 32-bit
187 >>>4    byte            1
188 >>>>36  belong&0xf0000000       0x00000000      MIPS-I
189 >>>>36  belong&0xf0000000       0x10000000      MIPS-II
190 >>>>36  belong&0xf0000000       0x20000000      MIPS-III
191 >>>>36  belong&0xf0000000       0x30000000      MIPS-IV
192 >>>>36  belong&0xf0000000       0x40000000      MIPS-V
193 >>>>36  belong&0xf0000000       0x50000000      MIPS32
194 >>>>36  belong&0xf0000000       0x60000000      MIPS64
195 >>>>36  belong&0xf0000000       0x70000000      MIPS32 rel2
196 >>>>36  belong&0xf0000000       0x80000000      MIPS64 rel2
197 # only for 64-bit
198 >>>4    byte            2
199 >>>>48  belong&0xf0000000       0x00000000      MIPS-I
200 >>>>48  belong&0xf0000000       0x10000000      MIPS-II
201 >>>>48  belong&0xf0000000       0x20000000      MIPS-III
202 >>>>48  belong&0xf0000000       0x30000000      MIPS-IV
203 >>>>48  belong&0xf0000000       0x40000000      MIPS-V
204 >>>>48  belong&0xf0000000       0x50000000      MIPS32
205 >>>>48  belong&0xf0000000       0x60000000      MIPS64
206 >>>>48  belong&0xf0000000       0x70000000      MIPS32 rel2
207 >>>>48  belong&0xf0000000       0x80000000      MIPS64 rel2
208 >>18    beshort         9               Amdahl,
209 >>18    beshort         10              MIPS (deprecated),
210 >>18    beshort         11              RS6000,
211 >>18    beshort         15              PA-RISC
212 >>>50   beshort         0x0214          2.0
213 >>>48   beshort         &0x0008         (LP64)
214 >>18    beshort         16              nCUBE,
215 >>18    beshort         17              Fujitsu VPP500,
216 >>18    beshort         18              SPARC32PLUS,
217 >>>36   belong&0xffff00 0x000100        V8+ Required,
218 >>>36   belong&0xffff00 0x000200        Sun UltraSPARC1 Extensions Required,
219 >>>36   belong&0xffff00 0x000400        HaL R1 Extensions Required,
220 >>>36   belong&0xffff00 0x000800        Sun UltraSPARC3 Extensions Required,
221 >>18    beshort         20              PowerPC or cisco 4500,
222 >>18    beshort         21              64-bit PowerPC or cisco 7500,
223 >>18    beshort         22              IBM S/390,
224 >>18    beshort         23              Cell SPU,
225 >>18    beshort         24              cisco SVIP,
226 >>18    beshort         25              cisco 7200,
227 >>18    beshort         36              NEC V800 or cisco 12000,
228 >>18    beshort         37              Fujitsu FR20,
229 >>18    beshort         38              TRW RH-32,
230 >>18    beshort         39              Motorola RCE,
231 >>18    beshort         40              ARM,
232 >>18    beshort         41              Alpha,
233 >>18    beshort         42              Renesas SH,
234 >>18    beshort         43              SPARC V9,
235 >>>48   belong&0xffff00 0x000200        Sun UltraSPARC1 Extensions Required,
236 >>>48   belong&0xffff00 0x000400        HaL R1 Extensions Required,
237 >>>48   belong&0xffff00 0x000800        Sun UltraSPARC3 Extensions Required,
238 >>>48   belong&0x3      0               total store ordering,
239 >>>48   belong&0x3      1               partial store ordering,
240 >>>48   belong&0x3      2               relaxed memory ordering,
241 >>18    beshort         44              Siemens Tricore Embedded Processor,
242 >>18    beshort         45              Argonaut RISC Core, Argonaut Technologies Inc.,
243 >>18    beshort         46              Renesas H8/300,
244 >>18    beshort         47              Renesas H8/300H,
245 >>18    beshort         48              Renesas H8S,
246 >>18    beshort         49              Renesas H8/500,
247 >>18    beshort         50              IA-64,
248 >>18    beshort         51              Stanford MIPS-X,
249 >>18    beshort         52              Motorola Coldfire,
250 >>18    beshort         53              Motorola M68HC12,
251 >>18    beshort         73              Cray NV1,
252 >>18    beshort         75              Digital VAX,
253 >>18    beshort         88              Renesas M32R,
254 >>18    leshort         92              OpenRISC,
255 >>18    leshort         0x3426          OpenRISC (obsolete),
256 >>18    leshort         0x8472          OpenRISC (obsolete),
257 >>18    beshort         94              Tensilica Xtensa,
258 >>18    beshort         97              NatSemi 32k,
259 >>18    beshort         0x18ad          AVR32 (unofficial),
260 >>18    beshort         0x9026          Alpha (unofficial),
261 >>18    beshort         0xa390          IBM S/390 (obsolete),
262 >>20    belong          0               invalid version
263 >>20    belong          1               version 1
264 >>36    belong          1               MathCoPro/FPU/MAU Required
265 # Up to now only 0, 1 and 2 are defined; I've seen a file with 0x83, it seemed
266 # like proper ELF, but extracting the string had bad results.
267 >4      byte            <0x80
268 >>8     string          >\0             (%s)
269 >8      string          \0
270 >>7     byte            0               (SYSV)
271 >>7     byte            1               (HP-UX)
272 >>7     byte            2               (NetBSD)
273 >>7     byte            3               (GNU/Linux)
274 >>7     byte            4               (GNU/Hurd)
275 >>7     byte            5               (86Open)
276 >>7     byte            6               (Solaris)
277 >>7     byte            7               (Monterey)
278 >>7     byte            8               (IRIX)
279 >>7     byte            9               (FreeBSD)
280 >>7     byte            10              (Tru64)
281 >>7     byte            11              (Novell Modesto)
282 >>7     byte            12              (OpenBSD)
283 >8      string          \2
284 >>7     byte            13              (OpenVMS)
285 >>7     byte            97              (ARM)
286 >>7     byte            255             (embedded)