xref: /freebsd/contrib/elftoolchain/libelftc/libelftc_bfdtarget.c (revision 792bbaba989533a1fc93823df1720c8c4aaf0442)
1 /*-
2  * Copyright (c) 2008,2009 Kai Wang
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer
10  *    in this position and unchanged.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  *    notice, this list of conditions and the following disclaimer in the
13  *    documentation and/or other materials provided with the distribution.
14  *
15  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
16  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
17  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
18  * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
19  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25  */
26 
27 #include <sys/param.h>
28 #include <libelf.h>
29 #include <libelftc.h>
30 
31 #include "_libelftc.h"
32 
33 ELFTC_VCSID("$Id: libelftc_bfdtarget.c 3488 2016-08-24 18:15:57Z emaste $");
34 
35 struct _Elftc_Bfd_Target _libelftc_targets[] = {
36 
37 	{
38 		.bt_name = "binary",
39 		.bt_type = ETF_BINARY,
40 	},
41 
42 	{
43 		.bt_name      = "elf32-avr",
44 		.bt_type      = ETF_ELF,
45 		.bt_byteorder = ELFDATA2LSB,
46 		.bt_elfclass  = ELFCLASS32,
47 		.bt_machine   = EM_AVR,
48 	},
49 
50 	{
51 		.bt_name      = "elf32-big",
52 		.bt_type      = ETF_ELF,
53 		.bt_byteorder = ELFDATA2MSB,
54 		.bt_elfclass  = ELFCLASS32,
55 	},
56 
57 	{
58 		.bt_name      = "elf32-bigarm",
59 		.bt_type      = ETF_ELF,
60 		.bt_byteorder = ELFDATA2MSB,
61 		.bt_elfclass  = ELFCLASS32,
62 		.bt_machine   = EM_ARM,
63 	},
64 
65 	{
66 		.bt_name      = "elf32-bigmips",
67 		.bt_type      = ETF_ELF,
68 		.bt_byteorder = ELFDATA2MSB,
69 		.bt_elfclass  = ELFCLASS32,
70 		.bt_machine   = EM_MIPS,
71 	},
72 
73 	{
74 		.bt_name      = "elf32-i386",
75 		.bt_type      = ETF_ELF,
76 		.bt_byteorder = ELFDATA2LSB,
77 		.bt_elfclass  = ELFCLASS32,
78 		.bt_machine   = EM_386,
79 	},
80 
81 	{
82 		.bt_name      = "elf32-i386-freebsd",
83 		.bt_type      = ETF_ELF,
84 		.bt_byteorder = ELFDATA2LSB,
85 		.bt_elfclass  = ELFCLASS32,
86 		.bt_machine   = EM_386,
87 		.bt_osabi     = ELFOSABI_FREEBSD,
88 	},
89 
90 	{
91 		.bt_name      = "elf32-ia64-big",
92 		.bt_type      = ETF_ELF,
93 		.bt_byteorder = ELFDATA2MSB,
94 		.bt_elfclass  = ELFCLASS32,
95 		.bt_machine   = EM_IA_64,
96 	},
97 
98 	{
99 		.bt_name      = "elf32-little",
100 		.bt_type      = ETF_ELF,
101 		.bt_byteorder = ELFDATA2LSB,
102 		.bt_elfclass  = ELFCLASS32,
103 	},
104 
105 	{
106 		.bt_name      = "elf32-littlearm",
107 		.bt_type      = ETF_ELF,
108 		.bt_byteorder = ELFDATA2LSB,
109 		.bt_elfclass  = ELFCLASS32,
110 		.bt_machine   = EM_ARM,
111 	},
112 
113 	{
114 		.bt_name      = "elf32-littlemips",
115 		.bt_type      = ETF_ELF,
116 		.bt_byteorder = ELFDATA2LSB,
117 		.bt_elfclass  = ELFCLASS32,
118 		.bt_machine   = EM_MIPS,
119 	},
120 
121 	{
122 		.bt_name      = "elf32-powerpc",
123 		.bt_type      = ETF_ELF,
124 		.bt_byteorder = ELFDATA2MSB,
125 		.bt_elfclass  = ELFCLASS32,
126 		.bt_machine   = EM_PPC,
127 	},
128 
129 	{
130 		.bt_name      = "elf32-powerpcle",
131 		.bt_type      = ETF_ELF,
132 		.bt_byteorder = ELFDATA2LSB,
133 		.bt_elfclass  = ELFCLASS32,
134 		.bt_machine   = EM_PPC,
135 	},
136 
137 	{
138 		.bt_name      = "elf32-sh",
139 		.bt_type      = ETF_ELF,
140 		.bt_byteorder = ELFDATA2MSB,
141 		.bt_elfclass  = ELFCLASS32,
142 		.bt_machine   = EM_SH,
143 	},
144 
145 	{
146 		.bt_name      = "elf32-shl",
147 		.bt_type      = ETF_ELF,
148 		.bt_byteorder = ELFDATA2LSB,
149 		.bt_elfclass  = ELFCLASS32,
150 		.bt_machine   = EM_SH,
151 	},
152 
153 	{
154 		.bt_name      = "elf32-sh-nbsd",
155 		.bt_type      = ETF_ELF,
156 		.bt_byteorder = ELFDATA2MSB,
157 		.bt_elfclass  = ELFCLASS32,
158 		.bt_machine   = EM_SH,
159 		.bt_osabi     = ELFOSABI_NETBSD,
160 	},
161 
162 	{
163 		.bt_name      = "elf32-shl-nbsd",
164 		.bt_type      = ETF_ELF,
165 		.bt_byteorder = ELFDATA2LSB,
166 		.bt_elfclass  = ELFCLASS32,
167 		.bt_machine   = EM_SH,
168 		.bt_osabi     = ELFOSABI_NETBSD,
169 	},
170 
171 	{
172 		.bt_name      = "elf32-shbig-linux",
173 		.bt_type      = ETF_ELF,
174 		.bt_byteorder = ELFDATA2MSB,
175 		.bt_elfclass  = ELFCLASS32,
176 		.bt_machine   = EM_SH,
177 		.bt_osabi     = ELFOSABI_LINUX,
178 	},
179 
180 	{
181 		.bt_name      = "elf32-sh-linux",
182 		.bt_type      = ETF_ELF,
183 		.bt_byteorder = ELFDATA2LSB,
184 		.bt_elfclass  = ELFCLASS32,
185 		.bt_machine   = EM_SH,
186 		.bt_osabi     = ELFOSABI_LINUX,
187 	},
188 
189 	{
190 		.bt_name      = "elf32-sparc",
191 		.bt_type      = ETF_ELF,
192 		.bt_byteorder = ELFDATA2MSB,
193 		.bt_elfclass  = ELFCLASS32,
194 		.bt_machine   = EM_SPARC,
195 	},
196 
197 	{
198 		.bt_name      = "elf32-tradbigmips",
199 		.bt_type      = ETF_ELF,
200 		.bt_byteorder = ELFDATA2MSB,
201 		.bt_elfclass  = ELFCLASS32,
202 		.bt_machine   = EM_MIPS,
203 	},
204 
205 	{
206 		.bt_name      = "elf32-tradlittlemips",
207 		.bt_type      = ETF_ELF,
208 		.bt_byteorder = ELFDATA2LSB,
209 		.bt_elfclass  = ELFCLASS32,
210 		.bt_machine   = EM_MIPS,
211 	},
212 
213 	{
214 		.bt_name      = "elf64-alpha",
215 		.bt_type      = ETF_ELF,
216 		.bt_byteorder = ELFDATA2LSB,
217 		.bt_elfclass  = ELFCLASS64,
218 		.bt_machine   = EM_ALPHA,
219 	},
220 
221 	{
222 		.bt_name      = "elf64-alpha-freebsd",
223 		.bt_type      = ETF_ELF,
224 		.bt_byteorder = ELFDATA2LSB,
225 		.bt_elfclass  = ELFCLASS64,
226 		.bt_machine   = EM_ALPHA,
227 		.bt_osabi     = ELFOSABI_FREEBSD
228 	},
229 
230 	{
231 		.bt_name      = "elf64-big",
232 		.bt_type      = ETF_ELF,
233 		.bt_byteorder = ELFDATA2MSB,
234 		.bt_elfclass  = ELFCLASS64,
235 	},
236 
237 	{
238 		.bt_name      = "elf64-bigmips",
239 		.bt_type      = ETF_ELF,
240 		.bt_byteorder = ELFDATA2MSB,
241 		.bt_elfclass  = ELFCLASS64,
242 		.bt_machine   = EM_MIPS,
243 	},
244 
245 	{
246 		.bt_name      = "elf64-ia64-big",
247 		.bt_type      = ETF_ELF,
248 		.bt_byteorder = ELFDATA2MSB,
249 		.bt_elfclass  = ELFCLASS64,
250 		.bt_machine   = EM_IA_64,
251 	},
252 
253 	{
254 		.bt_name      = "elf64-ia64-little",
255 		.bt_type      = ETF_ELF,
256 		.bt_byteorder = ELFDATA2LSB,
257 		.bt_elfclass  = ELFCLASS64,
258 		.bt_machine   = EM_IA_64,
259 	},
260 
261 	{
262 		.bt_name      = "elf64-little",
263 		.bt_type      = ETF_ELF,
264 		.bt_byteorder = ELFDATA2LSB,
265 		.bt_elfclass  = ELFCLASS64,
266 	},
267 
268 	{
269 		.bt_name      = "elf64-littleaarch64",
270 		.bt_type      = ETF_ELF,
271 		.bt_byteorder = ELFDATA2LSB,
272 		.bt_elfclass  = ELFCLASS64,
273 		.bt_machine   = EM_AARCH64,
274 	},
275 
276 	{
277 		.bt_name      = "elf64-littlemips",
278 		.bt_type      = ETF_ELF,
279 		.bt_byteorder = ELFDATA2LSB,
280 		.bt_elfclass  = ELFCLASS64,
281 		.bt_machine   = EM_MIPS,
282 	},
283 
284 	{
285 		.bt_name      = "elf64-powerpc",
286 		.bt_type      = ETF_ELF,
287 		.bt_byteorder = ELFDATA2MSB,
288 		.bt_elfclass  = ELFCLASS64,
289 		.bt_machine   = EM_PPC64,
290 	},
291 
292 	{
293 		.bt_name      = "elf64-powerpcle",
294 		.bt_type      = ETF_ELF,
295 		.bt_byteorder = ELFDATA2LSB,
296 		.bt_elfclass  = ELFCLASS64,
297 		.bt_machine   = EM_PPC64,
298 	},
299 
300 	{
301 		.bt_name      = "elf64-sh64",
302 		.bt_type      = ETF_ELF,
303 		.bt_byteorder = ELFDATA2MSB,
304 		.bt_elfclass  = ELFCLASS64,
305 		.bt_machine   = EM_SH,
306 	},
307 
308 	{
309 		.bt_name      = "elf64-sh64l",
310 		.bt_type      = ETF_ELF,
311 		.bt_byteorder = ELFDATA2LSB,
312 		.bt_elfclass  = ELFCLASS64,
313 		.bt_machine   = EM_SH,
314 	},
315 
316 	{
317 		.bt_name      = "elf64-sh64-nbsd",
318 		.bt_type      = ETF_ELF,
319 		.bt_byteorder = ELFDATA2MSB,
320 		.bt_elfclass  = ELFCLASS64,
321 		.bt_machine   = EM_SH,
322 		.bt_osabi     = ELFOSABI_NETBSD,
323 	},
324 
325 	{
326 		.bt_name      = "elf64-sh64l-nbsd",
327 		.bt_type      = ETF_ELF,
328 		.bt_byteorder = ELFDATA2LSB,
329 		.bt_elfclass  = ELFCLASS64,
330 		.bt_machine   = EM_SH,
331 		.bt_osabi     = ELFOSABI_NETBSD,
332 	},
333 
334 	{
335 		.bt_name      = "elf64-sh64big-linux",
336 		.bt_type      = ETF_ELF,
337 		.bt_byteorder = ELFDATA2MSB,
338 		.bt_elfclass  = ELFCLASS64,
339 		.bt_machine   = EM_SH,
340 		.bt_osabi     = ELFOSABI_LINUX,
341 	},
342 
343 	{
344 		.bt_name      = "elf64-sh64-linux",
345 		.bt_type      = ETF_ELF,
346 		.bt_byteorder = ELFDATA2LSB,
347 		.bt_elfclass  = ELFCLASS64,
348 		.bt_machine   = EM_SH,
349 		.bt_osabi     = ELFOSABI_LINUX,
350 	},
351 
352 	{
353 		.bt_name      = "elf64-sparc",
354 		.bt_type      = ETF_ELF,
355 		.bt_byteorder = ELFDATA2MSB,
356 		.bt_elfclass  = ELFCLASS64,
357 		.bt_machine   = EM_SPARCV9,
358 	},
359 
360 	{
361 		.bt_name      = "elf64-sparc-freebsd",
362 		.bt_type      = ETF_ELF,
363 		.bt_byteorder = ELFDATA2MSB,
364 		.bt_elfclass  = ELFCLASS64,
365 		.bt_machine   = EM_SPARCV9,
366 		.bt_osabi     = ELFOSABI_FREEBSD
367 	},
368 
369 	{
370 		.bt_name      = "elf64-tradbigmips",
371 		.bt_type      = ETF_ELF,
372 		.bt_byteorder = ELFDATA2MSB,
373 		.bt_elfclass  = ELFCLASS64,
374 		.bt_machine   = EM_MIPS,
375 	},
376 
377 	{
378 		.bt_name      = "elf64-tradlittlemips",
379 		.bt_type      = ETF_ELF,
380 		.bt_byteorder = ELFDATA2LSB,
381 		.bt_elfclass  = ELFCLASS64,
382 		.bt_machine   = EM_MIPS,
383 	},
384 
385 	{
386 		.bt_name      = "elf64-x86-64",
387 		.bt_type      = ETF_ELF,
388 		.bt_byteorder =	ELFDATA2LSB,
389 		.bt_elfclass  = ELFCLASS64,
390 		.bt_machine   = EM_X86_64,
391 	},
392 
393 	{
394 		.bt_name      = "elf64-x86-64-freebsd",
395 		.bt_type      = ETF_ELF,
396 		.bt_byteorder = ELFDATA2LSB,
397 		.bt_elfclass  = ELFCLASS64,
398 		.bt_machine   = EM_X86_64,
399 		.bt_osabi     = ELFOSABI_FREEBSD
400 	},
401 
402 	{
403 		.bt_name = "ihex",
404 		.bt_type = ETF_IHEX,
405 	},
406 
407 	{
408 		.bt_name = "srec",
409 		.bt_type = ETF_SREC,
410 	},
411 
412 	{
413 		.bt_name = "symbolsrec",
414 		.bt_type = ETF_SREC,
415 	},
416 
417 	{
418 		.bt_name    = "efi-app-ia32",
419 		.bt_type    = ETF_EFI,
420 		.bt_machine = EM_386,
421 	},
422 
423 	{
424 		.bt_name    = "efi-app-x86_64",
425 		.bt_type    = ETF_EFI,
426 		.bt_machine = EM_X86_64,
427 	},
428 
429 	{
430 		.bt_name    = "pei-i386",
431 		.bt_type    = ETF_PE,
432 		.bt_machine = EM_386,
433 	},
434 
435 	{
436 		.bt_name    = "pei-x86-64",
437 		.bt_type    = ETF_PE,
438 		.bt_machine = EM_X86_64,
439 	},
440 
441 	{
442 		.bt_name = NULL,
443 		.bt_type = ETF_NONE,
444 	},
445 };
446