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