1260684Skaiw/*- 2260684Skaiw * Copyright (c) 2008,2009 Kai Wang 3260684Skaiw * All rights reserved. 4260684Skaiw * 5260684Skaiw * Redistribution and use in source and binary forms, with or without 6260684Skaiw * modification, are permitted provided that the following conditions 7260684Skaiw * are met: 8260684Skaiw * 1. Redistributions of source code must retain the above copyright 9260684Skaiw * notice, this list of conditions and the following disclaimer 10260684Skaiw * in this position and unchanged. 11260684Skaiw * 2. Redistributions in binary form must reproduce the above copyright 12260684Skaiw * notice, this list of conditions and the following disclaimer in the 13260684Skaiw * documentation and/or other materials provided with the distribution. 14260684Skaiw * 15260684Skaiw * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR 16260684Skaiw * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 17260684Skaiw * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 18260684Skaiw * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, 19260684Skaiw * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20260684Skaiw * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 21260684Skaiw * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 22260684Skaiw * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23260684Skaiw * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24260684Skaiw * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25260684Skaiw */ 26260684Skaiw 27260684Skaiw#include <sys/param.h> 28260684Skaiw#include <libelf.h> 29260684Skaiw#include <libelftc.h> 30260684Skaiw 31260684Skaiw#include "_libelftc.h" 32260684Skaiw 33295577SemasteELFTC_VCSID("$Id: libelftc_bfdtarget.c 3309 2016-01-10 09:10:51Z kaiwang27 $"); 34260684Skaiw 35260684Skaiwstruct _Elftc_Bfd_Target _libelftc_targets[] = { 36260684Skaiw 37260684Skaiw { 38260684Skaiw .bt_name = "binary", 39260684Skaiw .bt_type = ETF_BINARY, 40260684Skaiw }, 41260684Skaiw 42260684Skaiw { 43260684Skaiw .bt_name = "elf32-avr", 44260684Skaiw .bt_type = ETF_ELF, 45260684Skaiw .bt_byteorder = ELFDATA2LSB, 46260684Skaiw .bt_elfclass = ELFCLASS32, 47260684Skaiw .bt_machine = EM_AVR, 48260684Skaiw }, 49260684Skaiw 50260684Skaiw { 51260684Skaiw .bt_name = "elf32-big", 52260684Skaiw .bt_type = ETF_ELF, 53260684Skaiw .bt_byteorder = ELFDATA2MSB, 54260684Skaiw .bt_elfclass = ELFCLASS32, 55260684Skaiw }, 56260684Skaiw 57260684Skaiw { 58260684Skaiw .bt_name = "elf32-bigarm", 59260684Skaiw .bt_type = ETF_ELF, 60260684Skaiw .bt_byteorder = ELFDATA2MSB, 61260684Skaiw .bt_elfclass = ELFCLASS32, 62260684Skaiw .bt_machine = EM_ARM, 63260684Skaiw }, 64260684Skaiw 65260684Skaiw { 66260684Skaiw .bt_name = "elf32-bigmips", 67260684Skaiw .bt_type = ETF_ELF, 68260684Skaiw .bt_byteorder = ELFDATA2MSB, 69260684Skaiw .bt_elfclass = ELFCLASS32, 70260684Skaiw .bt_machine = EM_MIPS, 71260684Skaiw }, 72260684Skaiw 73260684Skaiw { 74260684Skaiw .bt_name = "elf32-i386", 75260684Skaiw .bt_type = ETF_ELF, 76260684Skaiw .bt_byteorder = ELFDATA2LSB, 77260684Skaiw .bt_elfclass = ELFCLASS32, 78260684Skaiw .bt_machine = EM_386, 79260684Skaiw }, 80260684Skaiw 81260684Skaiw { 82260684Skaiw .bt_name = "elf32-i386-freebsd", 83260684Skaiw .bt_type = ETF_ELF, 84260684Skaiw .bt_byteorder = ELFDATA2LSB, 85260684Skaiw .bt_elfclass = ELFCLASS32, 86260684Skaiw .bt_machine = EM_386, 87260684Skaiw .bt_osabi = ELFOSABI_FREEBSD, 88260684Skaiw }, 89260684Skaiw 90260684Skaiw { 91260684Skaiw .bt_name = "elf32-ia64-big", 92260684Skaiw .bt_type = ETF_ELF, 93260684Skaiw .bt_byteorder = ELFDATA2MSB, 94260684Skaiw .bt_elfclass = ELFCLASS32, 95260684Skaiw .bt_machine = EM_IA_64, 96260684Skaiw }, 97260684Skaiw 98260684Skaiw { 99260684Skaiw .bt_name = "elf32-little", 100260684Skaiw .bt_type = ETF_ELF, 101260684Skaiw .bt_byteorder = ELFDATA2LSB, 102260684Skaiw .bt_elfclass = ELFCLASS32, 103260684Skaiw }, 104260684Skaiw 105260684Skaiw { 106260684Skaiw .bt_name = "elf32-littlearm", 107260684Skaiw .bt_type = ETF_ELF, 108260684Skaiw .bt_byteorder = ELFDATA2LSB, 109260684Skaiw .bt_elfclass = ELFCLASS32, 110260684Skaiw .bt_machine = EM_ARM, 111260684Skaiw }, 112260684Skaiw 113260684Skaiw { 114260684Skaiw .bt_name = "elf32-littlemips", 115260684Skaiw .bt_type = ETF_ELF, 116260684Skaiw .bt_byteorder = ELFDATA2LSB, 117260684Skaiw .bt_elfclass = ELFCLASS32, 118260684Skaiw .bt_machine = EM_MIPS, 119260684Skaiw }, 120260684Skaiw 121260684Skaiw { 122260684Skaiw .bt_name = "elf32-powerpc", 123260684Skaiw .bt_type = ETF_ELF, 124260684Skaiw .bt_byteorder = ELFDATA2MSB, 125260684Skaiw .bt_elfclass = ELFCLASS32, 126260684Skaiw .bt_machine = EM_PPC, 127260684Skaiw }, 128260684Skaiw 129260684Skaiw { 130260684Skaiw .bt_name = "elf32-powerpcle", 131260684Skaiw .bt_type = ETF_ELF, 132260684Skaiw .bt_byteorder = ELFDATA2LSB, 133260684Skaiw .bt_elfclass = ELFCLASS32, 134260684Skaiw .bt_machine = EM_PPC, 135260684Skaiw }, 136260684Skaiw 137260684Skaiw { 138260684Skaiw .bt_name = "elf32-sh", 139260684Skaiw .bt_type = ETF_ELF, 140260684Skaiw .bt_byteorder = ELFDATA2MSB, 141260684Skaiw .bt_elfclass = ELFCLASS32, 142260684Skaiw .bt_machine = EM_SH, 143260684Skaiw }, 144260684Skaiw 145260684Skaiw { 146260684Skaiw .bt_name = "elf32-shl", 147260684Skaiw .bt_type = ETF_ELF, 148260684Skaiw .bt_byteorder = ELFDATA2LSB, 149260684Skaiw .bt_elfclass = ELFCLASS32, 150260684Skaiw .bt_machine = EM_SH, 151260684Skaiw }, 152260684Skaiw 153260684Skaiw { 154260684Skaiw .bt_name = "elf32-sh-nbsd", 155260684Skaiw .bt_type = ETF_ELF, 156260684Skaiw .bt_byteorder = ELFDATA2MSB, 157260684Skaiw .bt_elfclass = ELFCLASS32, 158260684Skaiw .bt_machine = EM_SH, 159260684Skaiw .bt_osabi = ELFOSABI_NETBSD, 160260684Skaiw }, 161260684Skaiw 162260684Skaiw { 163260684Skaiw .bt_name = "elf32-shl-nbsd", 164260684Skaiw .bt_type = ETF_ELF, 165260684Skaiw .bt_byteorder = ELFDATA2LSB, 166260684Skaiw .bt_elfclass = ELFCLASS32, 167260684Skaiw .bt_machine = EM_SH, 168260684Skaiw .bt_osabi = ELFOSABI_NETBSD, 169260684Skaiw }, 170260684Skaiw 171260684Skaiw { 172260684Skaiw .bt_name = "elf32-shbig-linux", 173260684Skaiw .bt_type = ETF_ELF, 174260684Skaiw .bt_byteorder = ELFDATA2MSB, 175260684Skaiw .bt_elfclass = ELFCLASS32, 176260684Skaiw .bt_machine = EM_SH, 177260684Skaiw .bt_osabi = ELFOSABI_LINUX, 178260684Skaiw }, 179260684Skaiw 180260684Skaiw { 181260684Skaiw .bt_name = "elf32-sh-linux", 182260684Skaiw .bt_type = ETF_ELF, 183260684Skaiw .bt_byteorder = ELFDATA2LSB, 184260684Skaiw .bt_elfclass = ELFCLASS32, 185260684Skaiw .bt_machine = EM_SH, 186260684Skaiw .bt_osabi = ELFOSABI_LINUX, 187260684Skaiw }, 188260684Skaiw 189260684Skaiw { 190260684Skaiw .bt_name = "elf32-sparc", 191260684Skaiw .bt_type = ETF_ELF, 192260684Skaiw .bt_byteorder = ELFDATA2MSB, 193260684Skaiw .bt_elfclass = ELFCLASS32, 194260684Skaiw .bt_machine = EM_SPARC, 195260684Skaiw }, 196260684Skaiw 197260684Skaiw { 198260684Skaiw .bt_name = "elf64-alpha", 199260684Skaiw .bt_type = ETF_ELF, 200260684Skaiw .bt_byteorder = ELFDATA2LSB, 201260684Skaiw .bt_elfclass = ELFCLASS64, 202260684Skaiw .bt_machine = EM_ALPHA, 203260684Skaiw }, 204260684Skaiw 205260684Skaiw { 206260684Skaiw .bt_name = "elf64-alpha-freebsd", 207260684Skaiw .bt_type = ETF_ELF, 208260684Skaiw .bt_byteorder = ELFDATA2LSB, 209260684Skaiw .bt_elfclass = ELFCLASS64, 210260684Skaiw .bt_machine = EM_ALPHA, 211260684Skaiw .bt_osabi = ELFOSABI_FREEBSD 212260684Skaiw }, 213260684Skaiw 214260684Skaiw { 215260684Skaiw .bt_name = "elf64-big", 216260684Skaiw .bt_type = ETF_ELF, 217260684Skaiw .bt_byteorder = ELFDATA2MSB, 218260684Skaiw .bt_elfclass = ELFCLASS64, 219260684Skaiw }, 220260684Skaiw 221260684Skaiw { 222260684Skaiw .bt_name = "elf64-bigmips", 223260684Skaiw .bt_type = ETF_ELF, 224260684Skaiw .bt_byteorder = ELFDATA2MSB, 225260684Skaiw .bt_elfclass = ELFCLASS64, 226260684Skaiw .bt_machine = EM_MIPS, 227260684Skaiw }, 228260684Skaiw 229260684Skaiw { 230260684Skaiw .bt_name = "elf64-ia64-big", 231260684Skaiw .bt_type = ETF_ELF, 232260684Skaiw .bt_byteorder = ELFDATA2MSB, 233260684Skaiw .bt_elfclass = ELFCLASS64, 234260684Skaiw .bt_machine = EM_IA_64, 235260684Skaiw }, 236260684Skaiw 237260684Skaiw { 238260684Skaiw .bt_name = "elf64-ia64-little", 239260684Skaiw .bt_type = ETF_ELF, 240260684Skaiw .bt_byteorder = ELFDATA2LSB, 241260684Skaiw .bt_elfclass = ELFCLASS64, 242260684Skaiw .bt_machine = EM_IA_64, 243260684Skaiw }, 244260684Skaiw 245260684Skaiw { 246260684Skaiw .bt_name = "elf64-little", 247260684Skaiw .bt_type = ETF_ELF, 248260684Skaiw .bt_byteorder = ELFDATA2LSB, 249260684Skaiw .bt_elfclass = ELFCLASS64, 250260684Skaiw }, 251260684Skaiw 252260684Skaiw { 253260684Skaiw .bt_name = "elf64-littlemips", 254260684Skaiw .bt_type = ETF_ELF, 255260684Skaiw .bt_byteorder = ELFDATA2LSB, 256260684Skaiw .bt_elfclass = ELFCLASS64, 257260684Skaiw .bt_machine = EM_MIPS, 258260684Skaiw }, 259260684Skaiw 260260684Skaiw { 261260684Skaiw .bt_name = "elf64-powerpc", 262260684Skaiw .bt_type = ETF_ELF, 263260684Skaiw .bt_byteorder = ELFDATA2MSB, 264260684Skaiw .bt_elfclass = ELFCLASS64, 265260684Skaiw .bt_machine = EM_PPC64, 266260684Skaiw }, 267260684Skaiw 268260684Skaiw { 269260684Skaiw .bt_name = "elf64-powerpcle", 270260684Skaiw .bt_type = ETF_ELF, 271260684Skaiw .bt_byteorder = ELFDATA2LSB, 272260684Skaiw .bt_elfclass = ELFCLASS64, 273260684Skaiw .bt_machine = EM_PPC64, 274260684Skaiw }, 275260684Skaiw 276260684Skaiw { 277260684Skaiw .bt_name = "elf64-sh64", 278260684Skaiw .bt_type = ETF_ELF, 279260684Skaiw .bt_byteorder = ELFDATA2MSB, 280260684Skaiw .bt_elfclass = ELFCLASS64, 281260684Skaiw .bt_machine = EM_SH, 282260684Skaiw }, 283260684Skaiw 284260684Skaiw { 285260684Skaiw .bt_name = "elf64-sh64l", 286260684Skaiw .bt_type = ETF_ELF, 287260684Skaiw .bt_byteorder = ELFDATA2LSB, 288260684Skaiw .bt_elfclass = ELFCLASS64, 289260684Skaiw .bt_machine = EM_SH, 290260684Skaiw }, 291260684Skaiw 292260684Skaiw { 293260684Skaiw .bt_name = "elf64-sh64-nbsd", 294260684Skaiw .bt_type = ETF_ELF, 295260684Skaiw .bt_byteorder = ELFDATA2MSB, 296260684Skaiw .bt_elfclass = ELFCLASS64, 297260684Skaiw .bt_machine = EM_SH, 298260684Skaiw .bt_osabi = ELFOSABI_NETBSD, 299260684Skaiw }, 300260684Skaiw 301260684Skaiw { 302260684Skaiw .bt_name = "elf64-sh64l-nbsd", 303260684Skaiw .bt_type = ETF_ELF, 304260684Skaiw .bt_byteorder = ELFDATA2LSB, 305260684Skaiw .bt_elfclass = ELFCLASS64, 306260684Skaiw .bt_machine = EM_SH, 307260684Skaiw .bt_osabi = ELFOSABI_NETBSD, 308260684Skaiw }, 309260684Skaiw 310260684Skaiw { 311260684Skaiw .bt_name = "elf64-sh64big-linux", 312260684Skaiw .bt_type = ETF_ELF, 313260684Skaiw .bt_byteorder = ELFDATA2MSB, 314260684Skaiw .bt_elfclass = ELFCLASS64, 315260684Skaiw .bt_machine = EM_SH, 316260684Skaiw .bt_osabi = ELFOSABI_LINUX, 317260684Skaiw }, 318260684Skaiw 319260684Skaiw { 320260684Skaiw .bt_name = "elf64-sh64-linux", 321260684Skaiw .bt_type = ETF_ELF, 322260684Skaiw .bt_byteorder = ELFDATA2LSB, 323260684Skaiw .bt_elfclass = ELFCLASS64, 324260684Skaiw .bt_machine = EM_SH, 325260684Skaiw .bt_osabi = ELFOSABI_LINUX, 326260684Skaiw }, 327260684Skaiw 328260684Skaiw { 329260684Skaiw .bt_name = "elf64-sparc", 330260684Skaiw .bt_type = ETF_ELF, 331260684Skaiw .bt_byteorder = ELFDATA2MSB, 332260684Skaiw .bt_elfclass = ELFCLASS64, 333260684Skaiw .bt_machine = EM_SPARCV9, 334260684Skaiw }, 335260684Skaiw 336260684Skaiw { 337260684Skaiw .bt_name = "elf64-sparc-freebsd", 338260684Skaiw .bt_type = ETF_ELF, 339260684Skaiw .bt_byteorder = ELFDATA2MSB, 340260684Skaiw .bt_elfclass = ELFCLASS64, 341260684Skaiw .bt_machine = EM_SPARCV9, 342260684Skaiw .bt_osabi = ELFOSABI_FREEBSD 343260684Skaiw }, 344260684Skaiw 345260684Skaiw { 346260684Skaiw .bt_name = "elf64-x86-64", 347260684Skaiw .bt_type = ETF_ELF, 348260684Skaiw .bt_byteorder = ELFDATA2LSB, 349260684Skaiw .bt_elfclass = ELFCLASS64, 350260684Skaiw .bt_machine = EM_X86_64, 351260684Skaiw }, 352260684Skaiw 353260684Skaiw { 354260684Skaiw .bt_name = "elf64-x86-64-freebsd", 355260684Skaiw .bt_type = ETF_ELF, 356260684Skaiw .bt_byteorder = ELFDATA2LSB, 357260684Skaiw .bt_elfclass = ELFCLASS64, 358260684Skaiw .bt_machine = EM_X86_64, 359260684Skaiw .bt_osabi = ELFOSABI_FREEBSD 360260684Skaiw }, 361260684Skaiw 362260684Skaiw { 363260684Skaiw .bt_name = "ihex", 364260684Skaiw .bt_type = ETF_IHEX, 365260684Skaiw }, 366260684Skaiw 367260684Skaiw { 368260684Skaiw .bt_name = "srec", 369260684Skaiw .bt_type = ETF_SREC, 370260684Skaiw }, 371260684Skaiw 372260684Skaiw { 373260684Skaiw .bt_name = "symbolsrec", 374260684Skaiw .bt_type = ETF_SREC, 375260684Skaiw }, 376260684Skaiw 377260684Skaiw { 378295577Semaste .bt_name = "efi-app-ia32", 379295577Semaste .bt_type = ETF_EFI, 380295577Semaste .bt_machine = EM_386, 381295577Semaste }, 382295577Semaste 383295577Semaste { 384295577Semaste .bt_name = "efi-app-x86_64", 385295577Semaste .bt_type = ETF_EFI, 386295577Semaste .bt_machine = EM_X86_64, 387295577Semaste }, 388295577Semaste 389295577Semaste { 390295577Semaste .bt_name = "pei-i386", 391295577Semaste .bt_type = ETF_PE, 392295577Semaste .bt_machine = EM_386, 393295577Semaste }, 394295577Semaste 395295577Semaste { 396295577Semaste .bt_name = "pei-x86-64", 397295577Semaste .bt_type = ETF_PE, 398295577Semaste .bt_machine = EM_X86_64, 399295577Semaste }, 400295577Semaste 401295577Semaste { 402260684Skaiw .bt_name = NULL, 403260684Skaiw .bt_type = ETF_NONE, 404260684Skaiw }, 405260684Skaiw}; 406