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