xref: /freebsd/contrib/elftoolchain/libelftc/libelftc_bfdtarget.c (revision 97549c34ecaf74580941fdc9c5bd1050e4b1f6ce)
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      = "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-littleaarch64",
254 		.bt_type      = ETF_ELF,
255 		.bt_byteorder = ELFDATA2LSB,
256 		.bt_elfclass  = ELFCLASS64,
257 		.bt_machine   = EM_AARCH64,
258 	},
259 
260 	{
261 		.bt_name      = "elf64-littlemips",
262 		.bt_type      = ETF_ELF,
263 		.bt_byteorder = ELFDATA2LSB,
264 		.bt_elfclass  = ELFCLASS64,
265 		.bt_machine   = EM_MIPS,
266 	},
267 
268 	{
269 		.bt_name      = "elf64-powerpc",
270 		.bt_type      = ETF_ELF,
271 		.bt_byteorder = ELFDATA2MSB,
272 		.bt_elfclass  = ELFCLASS64,
273 		.bt_machine   = EM_PPC64,
274 	},
275 
276 	{
277 		.bt_name      = "elf64-powerpcle",
278 		.bt_type      = ETF_ELF,
279 		.bt_byteorder = ELFDATA2LSB,
280 		.bt_elfclass  = ELFCLASS64,
281 		.bt_machine   = EM_PPC64,
282 	},
283 
284 	{
285 		.bt_name      = "elf64-sh64",
286 		.bt_type      = ETF_ELF,
287 		.bt_byteorder = ELFDATA2MSB,
288 		.bt_elfclass  = ELFCLASS64,
289 		.bt_machine   = EM_SH,
290 	},
291 
292 	{
293 		.bt_name      = "elf64-sh64l",
294 		.bt_type      = ETF_ELF,
295 		.bt_byteorder = ELFDATA2LSB,
296 		.bt_elfclass  = ELFCLASS64,
297 		.bt_machine   = EM_SH,
298 	},
299 
300 	{
301 		.bt_name      = "elf64-sh64-nbsd",
302 		.bt_type      = ETF_ELF,
303 		.bt_byteorder = ELFDATA2MSB,
304 		.bt_elfclass  = ELFCLASS64,
305 		.bt_machine   = EM_SH,
306 		.bt_osabi     = ELFOSABI_NETBSD,
307 	},
308 
309 	{
310 		.bt_name      = "elf64-sh64l-nbsd",
311 		.bt_type      = ETF_ELF,
312 		.bt_byteorder = ELFDATA2LSB,
313 		.bt_elfclass  = ELFCLASS64,
314 		.bt_machine   = EM_SH,
315 		.bt_osabi     = ELFOSABI_NETBSD,
316 	},
317 
318 	{
319 		.bt_name      = "elf64-sh64big-linux",
320 		.bt_type      = ETF_ELF,
321 		.bt_byteorder = ELFDATA2MSB,
322 		.bt_elfclass  = ELFCLASS64,
323 		.bt_machine   = EM_SH,
324 		.bt_osabi     = ELFOSABI_LINUX,
325 	},
326 
327 	{
328 		.bt_name      = "elf64-sh64-linux",
329 		.bt_type      = ETF_ELF,
330 		.bt_byteorder = ELFDATA2LSB,
331 		.bt_elfclass  = ELFCLASS64,
332 		.bt_machine   = EM_SH,
333 		.bt_osabi     = ELFOSABI_LINUX,
334 	},
335 
336 	{
337 		.bt_name      = "elf64-sparc",
338 		.bt_type      = ETF_ELF,
339 		.bt_byteorder = ELFDATA2MSB,
340 		.bt_elfclass  = ELFCLASS64,
341 		.bt_machine   = EM_SPARCV9,
342 	},
343 
344 	{
345 		.bt_name      = "elf64-sparc-freebsd",
346 		.bt_type      = ETF_ELF,
347 		.bt_byteorder = ELFDATA2MSB,
348 		.bt_elfclass  = ELFCLASS64,
349 		.bt_machine   = EM_SPARCV9,
350 		.bt_osabi     = ELFOSABI_FREEBSD
351 	},
352 
353 	{
354 		.bt_name      = "elf64-x86-64",
355 		.bt_type      = ETF_ELF,
356 		.bt_byteorder =	ELFDATA2LSB,
357 		.bt_elfclass  = ELFCLASS64,
358 		.bt_machine   = EM_X86_64,
359 	},
360 
361 	{
362 		.bt_name      = "elf64-x86-64-freebsd",
363 		.bt_type      = ETF_ELF,
364 		.bt_byteorder = ELFDATA2LSB,
365 		.bt_elfclass  = ELFCLASS64,
366 		.bt_machine   = EM_X86_64,
367 		.bt_osabi     = ELFOSABI_FREEBSD
368 	},
369 
370 	{
371 		.bt_name = "ihex",
372 		.bt_type = ETF_IHEX,
373 	},
374 
375 	{
376 		.bt_name = "srec",
377 		.bt_type = ETF_SREC,
378 	},
379 
380 	{
381 		.bt_name = "symbolsrec",
382 		.bt_type = ETF_SREC,
383 	},
384 
385 	{
386 		.bt_name    = "efi-app-ia32",
387 		.bt_type    = ETF_EFI,
388 		.bt_machine = EM_386,
389 	},
390 
391 	{
392 		.bt_name    = "efi-app-x86_64",
393 		.bt_type    = ETF_EFI,
394 		.bt_machine = EM_X86_64,
395 	},
396 
397 	{
398 		.bt_name    = "pei-i386",
399 		.bt_type    = ETF_PE,
400 		.bt_machine = EM_386,
401 	},
402 
403 	{
404 		.bt_name    = "pei-x86-64",
405 		.bt_type    = ETF_PE,
406 		.bt_machine = EM_X86_64,
407 	},
408 
409 	{
410 		.bt_name = NULL,
411 		.bt_type = ETF_NONE,
412 	},
413 };
414