b2eb247362b29b437d70d79f21f61163d8398978
[dragonfly.git] / contrib / file-4 / magic / 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 # updated by Daniel Quinlan (quinlan@yggdrasil.com)
11 0       string          \177ELF         ELF
12 >4      byte            0               invalid class
13 >4      byte            1               32-bit
14 >4      byte            2               64-bit
15 >5      byte            0               invalid byte order
16 >5      byte            1               LSB
17 >>16    leshort         0               no file type,
18 >>16    leshort         1               relocatable,
19 >>16    leshort         2               executable,
20 >>16    leshort         3               shared object,
21 # Core handling from Peter Tobias <tobias@server.et-inf.fho-emden.de>
22 # corrections by Christian 'Dr. Disk' Hechelmann <drdisk@ds9.au.s.shuttle.de>
23 >>16    leshort         4               core file
24 # Core file detection is not reliable.
25 #>>>(0x38+0xcc) string  >\0             of '%s'
26 #>>>(0x38+0x10) lelong  >0              (signal %d),
27 >>16    leshort         &0xff00         processor-specific,
28 >>18    leshort         0               no machine,
29 >>18    leshort         1               AT&T WE32100 - invalid byte order,
30 >>18    leshort         2               SPARC - invalid byte order,
31 >>18    leshort         3               Intel 80386,
32 >>18    leshort         4               Motorola
33 >>>36   lelong          &0x01000000     68000 - invalid byte order,
34 >>>36   lelong          &0x00810000     CPU32 - invalid byte order,
35 >>>36   lelong          0               68020 - invalid byte order,
36 >>18    leshort         5               Motorola 88000 - invalid byte order,
37 >>18    leshort         6               Intel 80486,
38 >>18    leshort         7               Intel 80860,
39 # The official e_machine number for MIPS is now #8, regardless of endianness.
40 # The second number (#10) will be deprecated later. For now, we still
41 # say something if #10 is encountered, but only gory details for #8.
42 >>18    leshort         8               MIPS,
43 >>>36   lelong          &0x20           N32
44 >>18    leshort         10              MIPS,
45 >>>36   lelong          &0x20           N32
46 >>18    leshort         8
47 # only for 32-bit
48 >>>4    byte            1
49 >>>>36  lelong&0xf0000000       0x00000000      MIPS-I
50 >>>>36  lelong&0xf0000000       0x10000000      MIPS-II
51 >>>>36  lelong&0xf0000000       0x20000000      MIPS-III
52 >>>>36  lelong&0xf0000000       0x30000000      MIPS-IV
53 >>>>36  lelong&0xf0000000       0x40000000      MIPS-V
54 >>>>36  lelong&0xf0000000       0x60000000      MIPS32
55 >>>>36  lelong&0xf0000000       0x70000000      MIPS64
56 >>>>36  lelong&0xf0000000       0x80000000      MIPS32 rel2
57 >>>>36  lelong&0xf0000000       0x90000000      MIPS64 rel2
58 # only for 64-bit
59 >>>4    byte            2
60 >>>>48  lelong&0xf0000000       0x00000000      MIPS-I
61 >>>>48  lelong&0xf0000000       0x10000000      MIPS-II
62 >>>>48  lelong&0xf0000000       0x20000000      MIPS-III
63 >>>>48  lelong&0xf0000000       0x30000000      MIPS-IV
64 >>>>48  lelong&0xf0000000       0x40000000      MIPS-V
65 >>>>48  lelong&0xf0000000       0x60000000      MIPS32
66 >>>>48  lelong&0xf0000000       0x70000000      MIPS64 
67 >>>>48  lelong&0xf0000000       0x80000000      MIPS32 rel2
68 >>>>48  lelong&0xf0000000       0x90000000      MIPS64 rel2
69 >>18    leshort         9               Amdahl - invalid byte order,
70 >>18    leshort         10              MIPS (deprecated),
71 >>18    leshort         11              RS6000 - invalid byte order,
72 >>18    leshort         15              PA-RISC - invalid byte order,
73 >>>50   leshort         0x0214          2.0
74 >>>48   leshort         &0x0008         (LP64),
75 >>18    leshort         16              nCUBE,
76 >>18    leshort         17              Fujitsu VPP500,
77 >>18    leshort         18              SPARC32PLUS,
78 >>18    leshort         20              PowerPC,
79 >>18    leshort         22              IBM S/390,
80 >>18    leshort         36              NEC V800,
81 >>18    leshort         37              Fujitsu FR20,
82 >>18    leshort         38              TRW RH-32,
83 >>18    leshort         39              Motorola RCE,
84 >>18    leshort         40              ARM,
85 >>18    leshort         41              Alpha,
86 >>18    leshort         0xa390          IBM S/390 (obsolete),
87 >>18    leshort         42              Renesas SH,
88 >>18    leshort         43              SPARC V9 - invalid byte order,
89 >>18    leshort         44              Siemens Tricore Embedded Processor,
90 >>18    leshort         45              Argonaut RISC Core, Argonaut Technologies Inc.,
91 >>18    leshort         46              Renesas H8/300,
92 >>18    leshort         47              Renesas H8/300H,
93 >>18    leshort         48              Renesas H8S,
94 >>18    leshort         49              Renesas H8/500,
95 >>18    leshort         50              IA-64,
96 >>18    leshort         51              Stanford MIPS-X,
97 >>18    leshort         52              Motorola Coldfire,
98 >>18    leshort         53              Motorola M68HC12,
99 >>18    leshort         62              AMD x86-64,
100 >>18    leshort         75              Digital VAX,
101 >>18    leshort         88              Renesas M32R,
102 >>18    leshort         97              NatSemi 32k,
103 >>18    leshort         0x9026          Alpha (unofficial),
104 >>20    lelong          0               invalid version
105 >>20    lelong          1               version 1
106 >>36    lelong          1               MathCoPro/FPU/MAU Required
107 >5      byte            2               MSB
108 >>16    beshort         0               no file type,
109 >>16    beshort         1               relocatable,
110 >>16    beshort         2               executable,
111 >>16    beshort         3               shared object,
112 >>16    beshort         4               core file,
113 #>>>(0x38+0xcc) string  >\0             of '%s'
114 #>>>(0x38+0x10) belong  >0              (signal %d),
115 >>16    beshort         &0xff00         processor-specific,
116 >>18    beshort         0               no machine,
117 >>18    beshort         1               AT&T WE32100,
118 >>18    beshort         2               SPARC,
119 >>18    beshort         3               Intel 80386 - invalid byte order,
120 >>18    beshort         4               Motorola
121 >>>36   belong          &0x01000000     68000,
122 >>>36   belong          &0x00810000     CPU32,
123 >>>36   belong          0               68020,
124 >>18    beshort         5               Motorola 88000,
125 >>18    beshort         6               Intel 80486 - invalid byte order,
126 >>18    beshort         7               Intel 80860,
127 # only for MIPS - see comment in little-endian section above.
128 >>18    beshort         8               MIPS,
129 >>>36   belong          &0x20           N32
130 >>18    beshort         10              MIPS,
131 >>>36   belong          &0x20           N32
132 >>18    beshort         8
133 # only for 32-bit
134 >>>4    byte            1
135 >>>>36  belong&0xf0000000       0x00000000      MIPS-I
136 >>>>36  belong&0xf0000000       0x10000000      MIPS-II
137 >>>>36  belong&0xf0000000       0x20000000      MIPS-III
138 >>>>36  belong&0xf0000000       0x30000000      MIPS-IV
139 >>>>36  belong&0xf0000000       0x40000000      MIPS-V
140 >>>>36  belong&0xf0000000       0x60000000      MIPS32
141 >>>>36  belong&0xf0000000       0x70000000      MIPS64
142 >>>>36  belong&0xf0000000       0x80000000      MIPS32 rel2
143 >>>>36  belong&0xf0000000       0x90000000      MIPS64 rel2
144 # only for 64-bit
145 >>>4    byte            2
146 >>>>48  belong&0xf0000000       0x00000000      MIPS-I
147 >>>>48  belong&0xf0000000       0x10000000      MIPS-II
148 >>>>48  belong&0xf0000000       0x20000000      MIPS-III
149 >>>>48  belong&0xf0000000       0x30000000      MIPS-IV
150 >>>>48  belong&0xf0000000       0x40000000      MIPS-V
151 >>>>48  belong&0xf0000000       0x60000000      MIPS32
152 >>>>48  belong&0xf0000000       0x70000000      MIPS64 
153 >>>>48  belong&0xf0000000       0x80000000      MIPS32 rel2
154 >>>>48  belong&0xf0000000       0x90000000      MIPS64 rel2
155 >>18    beshort         9               Amdahl,
156 >>18    beshort         10              MIPS (deprecated),
157 >>18    beshort         11              RS6000,
158 >>18    beshort         15              PA-RISC
159 >>>50   beshort         0x0214          2.0
160 >>>48   beshort         &0x0008         (LP64)
161 >>18    beshort         16              nCUBE,
162 >>18    beshort         17              Fujitsu VPP500,
163 >>18    beshort         18              SPARC32PLUS,
164 >>>36   belong&0xffff00 &0x000100       V8+ Required,
165 >>>36   belong&0xffff00 &0x000200       Sun UltraSPARC1 Extensions Required,
166 >>>36   belong&0xffff00 &0x000400       HaL R1 Extensions Required,
167 >>>36   belong&0xffff00 &0x000800       Sun UltraSPARC3 Extensions Required,
168 >>18    beshort         20              PowerPC or cisco 4500,
169 >>18    beshort         21              cisco 7500,
170 >>18    beshort         22              IBM S/390,
171 >>18    beshort         24              cisco SVIP,
172 >>18    beshort         25              cisco 7200,
173 >>18    beshort         36              NEC V800 or cisco 12000,
174 >>18    beshort         37              Fujitsu FR20,
175 >>18    beshort         38              TRW RH-32,
176 >>18    beshort         39              Motorola RCE,
177 >>18    beshort         40              ARM,
178 >>18    beshort         41              Alpha,
179 >>18    beshort         42              Renesas SH,
180 >>18    beshort         43              SPARC V9,
181 >>18    beshort         44              Siemens Tricore Embedded Processor,
182 >>18    beshort         45              Argonaut RISC Core, Argonaut Technologies Inc.,
183 >>18    beshort         46              Renesas H8/300,
184 >>18    beshort         47              Renesas H8/300H,
185 >>18    beshort         48              Renesas H8S,
186 >>18    beshort         49              Renesas H8/500,
187 >>18    beshort         50              IA-64,
188 >>18    beshort         51              Stanford MIPS-X,
189 >>18    beshort         52              Motorola Coldfire,
190 >>18    beshort         53              Motorola M68HC12,
191 >>18    beshort         73              Cray NV1,
192 >>18    beshort         75              Digital VAX,
193 >>18    beshort         88              Renesas M32R,
194 >>18    beshort         97              NatSemi 32k,
195 >>18    beshort         0x9026          Alpha (unofficial),
196 >>18    beshort         0xa390          IBM S/390 (obsolete),
197 >>20    belong          0               invalid version
198 >>20    belong          1               version 1
199 >>36    belong          1               MathCoPro/FPU/MAU Required
200 # Up to now only 0, 1 and 2 are defined; I've seen a file with 0x83, it seemed
201 # like proper ELF, but extracting the string had bad results.
202 >4      byte            <0x80
203 >>8     string          >\0             (%s)
204 >8      string          \0
205 >>7     byte            0               (SYSV)
206 >>7     byte            1               (HP-UX)
207 >>7     byte            2               (NetBSD)
208 >>7     byte            3               (GNU/Linux)
209 >>7     byte            4               (GNU/Hurd)
210 >>7     byte            5               (86Open)
211 >>7     byte            6               (Solaris)
212 >>7     byte            7               (Monterey)
213 >>7     byte            8               (IRIX)
214 >>7     byte            9               (FreeBSD)
215 >>7     byte            10              (Tru64)
216 >>7     byte            11              (Novell Modesto)
217 >>7     byte            12              (OpenBSD)
218 # VMS Itanium added by gerardo.cacciari@gmail.com
219 >8      string          \2
220 >>7     byte            13              (OpenVMS)
221 >>7     byte            97              (ARM)
222 >>7     byte            255             (embedded)