Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/elftoolchain/libelftc/libelftc_bfdtarget.c
39483 views
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 3752 2019-06-28 01:12:53Z 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-powerpc-freebsd",
131
.bt_type = ETF_ELF,
132
.bt_byteorder = ELFDATA2MSB,
133
.bt_elfclass = ELFCLASS32,
134
.bt_machine = EM_PPC,
135
.bt_osabi = ELFOSABI_FREEBSD,
136
},
137
138
{
139
.bt_name = "elf32-powerpcle",
140
.bt_type = ETF_ELF,
141
.bt_byteorder = ELFDATA2LSB,
142
.bt_elfclass = ELFCLASS32,
143
.bt_machine = EM_PPC,
144
},
145
146
{
147
.bt_name = "elf32-sh",
148
.bt_type = ETF_ELF,
149
.bt_byteorder = ELFDATA2MSB,
150
.bt_elfclass = ELFCLASS32,
151
.bt_machine = EM_SH,
152
},
153
154
{
155
.bt_name = "elf32-shl",
156
.bt_type = ETF_ELF,
157
.bt_byteorder = ELFDATA2LSB,
158
.bt_elfclass = ELFCLASS32,
159
.bt_machine = EM_SH,
160
},
161
162
{
163
.bt_name = "elf32-sh-nbsd",
164
.bt_type = ETF_ELF,
165
.bt_byteorder = ELFDATA2MSB,
166
.bt_elfclass = ELFCLASS32,
167
.bt_machine = EM_SH,
168
.bt_osabi = ELFOSABI_NETBSD,
169
},
170
171
{
172
.bt_name = "elf32-shl-nbsd",
173
.bt_type = ETF_ELF,
174
.bt_byteorder = ELFDATA2LSB,
175
.bt_elfclass = ELFCLASS32,
176
.bt_machine = EM_SH,
177
.bt_osabi = ELFOSABI_NETBSD,
178
},
179
180
{
181
.bt_name = "elf32-shbig-linux",
182
.bt_type = ETF_ELF,
183
.bt_byteorder = ELFDATA2MSB,
184
.bt_elfclass = ELFCLASS32,
185
.bt_machine = EM_SH,
186
.bt_osabi = ELFOSABI_LINUX,
187
},
188
189
{
190
.bt_name = "elf32-sh-linux",
191
.bt_type = ETF_ELF,
192
.bt_byteorder = ELFDATA2LSB,
193
.bt_elfclass = ELFCLASS32,
194
.bt_machine = EM_SH,
195
.bt_osabi = ELFOSABI_LINUX,
196
},
197
198
{
199
.bt_name = "elf32-sparc",
200
.bt_type = ETF_ELF,
201
.bt_byteorder = ELFDATA2MSB,
202
.bt_elfclass = ELFCLASS32,
203
.bt_machine = EM_SPARC,
204
},
205
206
{
207
.bt_name = "elf32-tradbigmips",
208
.bt_type = ETF_ELF,
209
.bt_byteorder = ELFDATA2MSB,
210
.bt_elfclass = ELFCLASS32,
211
.bt_machine = EM_MIPS,
212
},
213
214
{
215
.bt_name = "elf32-tradlittlemips",
216
.bt_type = ETF_ELF,
217
.bt_byteorder = ELFDATA2LSB,
218
.bt_elfclass = ELFCLASS32,
219
.bt_machine = EM_MIPS,
220
},
221
222
{
223
.bt_name = "elf64-alpha",
224
.bt_type = ETF_ELF,
225
.bt_byteorder = ELFDATA2LSB,
226
.bt_elfclass = ELFCLASS64,
227
.bt_machine = EM_ALPHA,
228
},
229
230
{
231
.bt_name = "elf64-alpha-freebsd",
232
.bt_type = ETF_ELF,
233
.bt_byteorder = ELFDATA2LSB,
234
.bt_elfclass = ELFCLASS64,
235
.bt_machine = EM_ALPHA,
236
.bt_osabi = ELFOSABI_FREEBSD
237
},
238
239
{
240
.bt_name = "elf64-big",
241
.bt_type = ETF_ELF,
242
.bt_byteorder = ELFDATA2MSB,
243
.bt_elfclass = ELFCLASS64,
244
},
245
246
{
247
.bt_name = "elf64-bigmips",
248
.bt_type = ETF_ELF,
249
.bt_byteorder = ELFDATA2MSB,
250
.bt_elfclass = ELFCLASS64,
251
.bt_machine = EM_MIPS,
252
},
253
254
{
255
.bt_name = "elf64-ia64-big",
256
.bt_type = ETF_ELF,
257
.bt_byteorder = ELFDATA2MSB,
258
.bt_elfclass = ELFCLASS64,
259
.bt_machine = EM_IA_64,
260
},
261
262
{
263
.bt_name = "elf64-ia64-little",
264
.bt_type = ETF_ELF,
265
.bt_byteorder = ELFDATA2LSB,
266
.bt_elfclass = ELFCLASS64,
267
.bt_machine = EM_IA_64,
268
},
269
270
{
271
.bt_name = "elf64-little",
272
.bt_type = ETF_ELF,
273
.bt_byteorder = ELFDATA2LSB,
274
.bt_elfclass = ELFCLASS64,
275
},
276
277
{
278
.bt_name = "elf64-littleaarch64",
279
.bt_type = ETF_ELF,
280
.bt_byteorder = ELFDATA2LSB,
281
.bt_elfclass = ELFCLASS64,
282
.bt_machine = EM_AARCH64,
283
},
284
285
{
286
.bt_name = "elf64-littlemips",
287
.bt_type = ETF_ELF,
288
.bt_byteorder = ELFDATA2LSB,
289
.bt_elfclass = ELFCLASS64,
290
.bt_machine = EM_MIPS,
291
},
292
293
{
294
.bt_name = "elf64-powerpc",
295
.bt_type = ETF_ELF,
296
.bt_byteorder = ELFDATA2MSB,
297
.bt_elfclass = ELFCLASS64,
298
.bt_machine = EM_PPC64,
299
},
300
301
{
302
.bt_name = "elf64-powerpc-freebsd",
303
.bt_type = ETF_ELF,
304
.bt_byteorder = ELFDATA2MSB,
305
.bt_elfclass = ELFCLASS64,
306
.bt_machine = EM_PPC64,
307
.bt_osabi = ELFOSABI_FREEBSD,
308
},
309
310
{
311
.bt_name = "elf64-powerpcle",
312
.bt_type = ETF_ELF,
313
.bt_byteorder = ELFDATA2LSB,
314
.bt_elfclass = ELFCLASS64,
315
.bt_machine = EM_PPC64,
316
},
317
318
{
319
.bt_name = "elf32-riscv",
320
.bt_type = ETF_ELF,
321
.bt_byteorder = ELFDATA2LSB,
322
.bt_elfclass = ELFCLASS32,
323
.bt_machine = EM_RISCV,
324
},
325
326
{
327
.bt_name = "elf64-riscv",
328
.bt_type = ETF_ELF,
329
.bt_byteorder = ELFDATA2LSB,
330
.bt_elfclass = ELFCLASS64,
331
.bt_machine = EM_RISCV,
332
},
333
334
{
335
.bt_name = "elf64-riscv-freebsd",
336
.bt_type = ETF_ELF,
337
.bt_byteorder = ELFDATA2LSB,
338
.bt_elfclass = ELFCLASS64,
339
.bt_machine = EM_RISCV,
340
.bt_osabi = ELFOSABI_FREEBSD,
341
},
342
343
{
344
.bt_name = "elf32-loongarch",
345
.bt_type = ETF_ELF,
346
.bt_byteorder = ELFDATA2LSB,
347
.bt_elfclass = ELFCLASS32,
348
.bt_machine = EM_LOONGARCH,
349
},
350
351
{
352
.bt_name = "elf64-loongarch",
353
.bt_type = ETF_ELF,
354
.bt_byteorder = ELFDATA2LSB,
355
.bt_elfclass = ELFCLASS64,
356
.bt_machine = EM_LOONGARCH,
357
},
358
359
{
360
.bt_name = "elf64-loongarch-freebsd",
361
.bt_type = ETF_ELF,
362
.bt_byteorder = ELFDATA2LSB,
363
.bt_elfclass = ELFCLASS64,
364
.bt_machine = EM_LOONGARCH,
365
.bt_osabi = ELFOSABI_FREEBSD,
366
},
367
368
{
369
.bt_name = "elf64-sh64",
370
.bt_type = ETF_ELF,
371
.bt_byteorder = ELFDATA2MSB,
372
.bt_elfclass = ELFCLASS64,
373
.bt_machine = EM_SH,
374
},
375
376
{
377
.bt_name = "elf64-sh64l",
378
.bt_type = ETF_ELF,
379
.bt_byteorder = ELFDATA2LSB,
380
.bt_elfclass = ELFCLASS64,
381
.bt_machine = EM_SH,
382
},
383
384
{
385
.bt_name = "elf64-sh64-nbsd",
386
.bt_type = ETF_ELF,
387
.bt_byteorder = ELFDATA2MSB,
388
.bt_elfclass = ELFCLASS64,
389
.bt_machine = EM_SH,
390
.bt_osabi = ELFOSABI_NETBSD,
391
},
392
393
{
394
.bt_name = "elf64-sh64l-nbsd",
395
.bt_type = ETF_ELF,
396
.bt_byteorder = ELFDATA2LSB,
397
.bt_elfclass = ELFCLASS64,
398
.bt_machine = EM_SH,
399
.bt_osabi = ELFOSABI_NETBSD,
400
},
401
402
{
403
.bt_name = "elf64-sh64big-linux",
404
.bt_type = ETF_ELF,
405
.bt_byteorder = ELFDATA2MSB,
406
.bt_elfclass = ELFCLASS64,
407
.bt_machine = EM_SH,
408
.bt_osabi = ELFOSABI_LINUX,
409
},
410
411
{
412
.bt_name = "elf64-sh64-linux",
413
.bt_type = ETF_ELF,
414
.bt_byteorder = ELFDATA2LSB,
415
.bt_elfclass = ELFCLASS64,
416
.bt_machine = EM_SH,
417
.bt_osabi = ELFOSABI_LINUX,
418
},
419
420
{
421
.bt_name = "elf64-sparc",
422
.bt_type = ETF_ELF,
423
.bt_byteorder = ELFDATA2MSB,
424
.bt_elfclass = ELFCLASS64,
425
.bt_machine = EM_SPARCV9,
426
},
427
428
{
429
.bt_name = "elf64-sparc-freebsd",
430
.bt_type = ETF_ELF,
431
.bt_byteorder = ELFDATA2MSB,
432
.bt_elfclass = ELFCLASS64,
433
.bt_machine = EM_SPARCV9,
434
.bt_osabi = ELFOSABI_FREEBSD
435
},
436
437
{
438
.bt_name = "elf64-tradbigmips",
439
.bt_type = ETF_ELF,
440
.bt_byteorder = ELFDATA2MSB,
441
.bt_elfclass = ELFCLASS64,
442
.bt_machine = EM_MIPS,
443
},
444
445
{
446
.bt_name = "elf64-tradlittlemips",
447
.bt_type = ETF_ELF,
448
.bt_byteorder = ELFDATA2LSB,
449
.bt_elfclass = ELFCLASS64,
450
.bt_machine = EM_MIPS,
451
},
452
453
{
454
.bt_name = "elf64-x86-64",
455
.bt_type = ETF_ELF,
456
.bt_byteorder = ELFDATA2LSB,
457
.bt_elfclass = ELFCLASS64,
458
.bt_machine = EM_X86_64,
459
},
460
461
{
462
.bt_name = "elf64-x86-64-freebsd",
463
.bt_type = ETF_ELF,
464
.bt_byteorder = ELFDATA2LSB,
465
.bt_elfclass = ELFCLASS64,
466
.bt_machine = EM_X86_64,
467
.bt_osabi = ELFOSABI_FREEBSD
468
},
469
470
{
471
.bt_name = "ihex",
472
.bt_type = ETF_IHEX,
473
},
474
475
{
476
.bt_name = "srec",
477
.bt_type = ETF_SREC,
478
},
479
480
{
481
.bt_name = "symbolsrec",
482
.bt_type = ETF_SREC,
483
},
484
485
{
486
.bt_name = "efi-app-ia32",
487
.bt_type = ETF_EFI,
488
.bt_machine = EM_386,
489
},
490
491
{
492
.bt_name = "efi-app-x86_64",
493
.bt_type = ETF_EFI,
494
.bt_machine = EM_X86_64,
495
},
496
497
{
498
.bt_name = "efi-app-loongarch64",
499
.bt_type = ETF_EFI,
500
.bt_machine = EM_LOONGARCH,
501
},
502
503
{
504
.bt_name = "pei-i386",
505
.bt_type = ETF_PE,
506
.bt_machine = EM_386,
507
},
508
509
{
510
.bt_name = "pei-x86-64",
511
.bt_type = ETF_PE,
512
.bt_machine = EM_X86_64,
513
},
514
515
{
516
.bt_name = NULL,
517
.bt_type = ETF_NONE,
518
},
519
};
520
521