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
33ELFTC_VCSID("$Id: libelftc_bfdtarget.c 3309 2016-01-10 09:10:51Z kaiwang27 $");
34
35struct _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      = "elf64-alpha",
199		.bt_type      = ETF_ELF,
200		.bt_byteorder = ELFDATA2LSB,
201		.bt_elfclass  = ELFCLASS64,
202		.bt_machine   = EM_ALPHA,
203	},
204
205	{
206		.bt_name      = "elf64-alpha-freebsd",
207		.bt_type      = ETF_ELF,
208		.bt_byteorder = ELFDATA2LSB,
209		.bt_elfclass  = ELFCLASS64,
210		.bt_machine   = EM_ALPHA,
211		.bt_osabi     = ELFOSABI_FREEBSD
212	},
213
214	{
215		.bt_name      = "elf64-big",
216		.bt_type      = ETF_ELF,
217		.bt_byteorder = ELFDATA2MSB,
218		.bt_elfclass  = ELFCLASS64,
219	},
220
221	{
222		.bt_name      = "elf64-bigmips",
223		.bt_type      = ETF_ELF,
224		.bt_byteorder = ELFDATA2MSB,
225		.bt_elfclass  = ELFCLASS64,
226		.bt_machine   = EM_MIPS,
227	},
228
229	{
230		.bt_name      = "elf64-ia64-big",
231		.bt_type      = ETF_ELF,
232		.bt_byteorder = ELFDATA2MSB,
233		.bt_elfclass  = ELFCLASS64,
234		.bt_machine   = EM_IA_64,
235	},
236
237	{
238		.bt_name      = "elf64-ia64-little",
239		.bt_type      = ETF_ELF,
240		.bt_byteorder = ELFDATA2LSB,
241		.bt_elfclass  = ELFCLASS64,
242		.bt_machine   = EM_IA_64,
243	},
244
245	{
246		.bt_name      = "elf64-little",
247		.bt_type      = ETF_ELF,
248		.bt_byteorder = ELFDATA2LSB,
249		.bt_elfclass  = ELFCLASS64,
250	},
251
252	{
253		.bt_name      = "elf64-littlemips",
254		.bt_type      = ETF_ELF,
255		.bt_byteorder = ELFDATA2LSB,
256		.bt_elfclass  = ELFCLASS64,
257		.bt_machine   = EM_MIPS,
258	},
259
260	{
261		.bt_name      = "elf64-powerpc",
262		.bt_type      = ETF_ELF,
263		.bt_byteorder = ELFDATA2MSB,
264		.bt_elfclass  = ELFCLASS64,
265		.bt_machine   = EM_PPC64,
266	},
267
268	{
269		.bt_name      = "elf64-powerpcle",
270		.bt_type      = ETF_ELF,
271		.bt_byteorder = ELFDATA2LSB,
272		.bt_elfclass  = ELFCLASS64,
273		.bt_machine   = EM_PPC64,
274	},
275
276	{
277		.bt_name      = "elf64-sh64",
278		.bt_type      = ETF_ELF,
279		.bt_byteorder = ELFDATA2MSB,
280		.bt_elfclass  = ELFCLASS64,
281		.bt_machine   = EM_SH,
282	},
283
284	{
285		.bt_name      = "elf64-sh64l",
286		.bt_type      = ETF_ELF,
287		.bt_byteorder = ELFDATA2LSB,
288		.bt_elfclass  = ELFCLASS64,
289		.bt_machine   = EM_SH,
290	},
291
292	{
293		.bt_name      = "elf64-sh64-nbsd",
294		.bt_type      = ETF_ELF,
295		.bt_byteorder = ELFDATA2MSB,
296		.bt_elfclass  = ELFCLASS64,
297		.bt_machine   = EM_SH,
298		.bt_osabi     = ELFOSABI_NETBSD,
299	},
300
301	{
302		.bt_name      = "elf64-sh64l-nbsd",
303		.bt_type      = ETF_ELF,
304		.bt_byteorder = ELFDATA2LSB,
305		.bt_elfclass  = ELFCLASS64,
306		.bt_machine   = EM_SH,
307		.bt_osabi     = ELFOSABI_NETBSD,
308	},
309
310	{
311		.bt_name      = "elf64-sh64big-linux",
312		.bt_type      = ETF_ELF,
313		.bt_byteorder = ELFDATA2MSB,
314		.bt_elfclass  = ELFCLASS64,
315		.bt_machine   = EM_SH,
316		.bt_osabi     = ELFOSABI_LINUX,
317	},
318
319	{
320		.bt_name      = "elf64-sh64-linux",
321		.bt_type      = ETF_ELF,
322		.bt_byteorder = ELFDATA2LSB,
323		.bt_elfclass  = ELFCLASS64,
324		.bt_machine   = EM_SH,
325		.bt_osabi     = ELFOSABI_LINUX,
326	},
327
328	{
329		.bt_name      = "elf64-sparc",
330		.bt_type      = ETF_ELF,
331		.bt_byteorder = ELFDATA2MSB,
332		.bt_elfclass  = ELFCLASS64,
333		.bt_machine   = EM_SPARCV9,
334	},
335
336	{
337		.bt_name      = "elf64-sparc-freebsd",
338		.bt_type      = ETF_ELF,
339		.bt_byteorder = ELFDATA2MSB,
340		.bt_elfclass  = ELFCLASS64,
341		.bt_machine   = EM_SPARCV9,
342		.bt_osabi     = ELFOSABI_FREEBSD
343	},
344
345	{
346		.bt_name      = "elf64-x86-64",
347		.bt_type      = ETF_ELF,
348		.bt_byteorder =	ELFDATA2LSB,
349		.bt_elfclass  = ELFCLASS64,
350		.bt_machine   = EM_X86_64,
351	},
352
353	{
354		.bt_name      = "elf64-x86-64-freebsd",
355		.bt_type      = ETF_ELF,
356		.bt_byteorder = ELFDATA2LSB,
357		.bt_elfclass  = ELFCLASS64,
358		.bt_machine   = EM_X86_64,
359		.bt_osabi     = ELFOSABI_FREEBSD
360	},
361
362	{
363		.bt_name = "ihex",
364		.bt_type = ETF_IHEX,
365	},
366
367	{
368		.bt_name = "srec",
369		.bt_type = ETF_SREC,
370	},
371
372	{
373		.bt_name = "symbolsrec",
374		.bt_type = ETF_SREC,
375	},
376
377	{
378		.bt_name    = "efi-app-ia32",
379		.bt_type    = ETF_EFI,
380		.bt_machine = EM_386,
381	},
382
383	{
384		.bt_name    = "efi-app-x86_64",
385		.bt_type    = ETF_EFI,
386		.bt_machine = EM_X86_64,
387	},
388
389	{
390		.bt_name    = "pei-i386",
391		.bt_type    = ETF_PE,
392		.bt_machine = EM_386,
393	},
394
395	{
396		.bt_name    = "pei-x86-64",
397		.bt_type    = ETF_PE,
398		.bt_machine = EM_X86_64,
399	},
400
401	{
402		.bt_name = NULL,
403		.bt_type = ETF_NONE,
404	},
405};
406