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 3174 2015-03-27 17:13:41Z 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-littlemips", 254 .bt_type = ETF_ELF, 255 .bt_byteorder = ELFDATA2LSB, 256 .bt_elfclass = ELFCLASS64, 257 .bt_machine = EM_MIPS, 258 }, 259 260 { 261 .bt_name = "elf64-powerpc", 262 .bt_type = ETF_ELF, 263 .bt_byteorder = ELFDATA2MSB, 264 .bt_elfclass = ELFCLASS64, 265 .bt_machine = EM_PPC64, 266 }, 267 268 { 269 .bt_name = "elf64-powerpcle", 270 .bt_type = ETF_ELF, 271 .bt_byteorder = ELFDATA2LSB, 272 .bt_elfclass = ELFCLASS64, 273 .bt_machine = EM_PPC64, 274 }, 275 276 { 277 .bt_name = "elf64-sh64", 278 .bt_type = ETF_ELF, 279 .bt_byteorder = ELFDATA2MSB, 280 .bt_elfclass = ELFCLASS64, 281 .bt_machine = EM_SH, 282 }, 283 284 { 285 .bt_name = "elf64-sh64l", 286 .bt_type = ETF_ELF, 287 .bt_byteorder = ELFDATA2LSB, 288 .bt_elfclass = ELFCLASS64, 289 .bt_machine = EM_SH, 290 }, 291 292 { 293 .bt_name = "elf64-sh64-nbsd", 294 .bt_type = ETF_ELF, 295 .bt_byteorder = ELFDATA2MSB, 296 .bt_elfclass = ELFCLASS64, 297 .bt_machine = EM_SH, 298 .bt_osabi = ELFOSABI_NETBSD, 299 }, 300 301 { 302 .bt_name = "elf64-sh64l-nbsd", 303 .bt_type = ETF_ELF, 304 .bt_byteorder = ELFDATA2LSB, 305 .bt_elfclass = ELFCLASS64, 306 .bt_machine = EM_SH, 307 .bt_osabi = ELFOSABI_NETBSD, 308 }, 309 310 { 311 .bt_name = "elf64-sh64big-linux", 312 .bt_type = ETF_ELF, 313 .bt_byteorder = ELFDATA2MSB, 314 .bt_elfclass = ELFCLASS64, 315 .bt_machine = EM_SH, 316 .bt_osabi = ELFOSABI_LINUX, 317 }, 318 319 { 320 .bt_name = "elf64-sh64-linux", 321 .bt_type = ETF_ELF, 322 .bt_byteorder = ELFDATA2LSB, 323 .bt_elfclass = ELFCLASS64, 324 .bt_machine = EM_SH, 325 .bt_osabi = ELFOSABI_LINUX, 326 }, 327 328 { 329 .bt_name = "elf64-sparc", 330 .bt_type = ETF_ELF, 331 .bt_byteorder = ELFDATA2MSB, 332 .bt_elfclass = ELFCLASS64, 333 .bt_machine = EM_SPARCV9, 334 }, 335 336 { 337 .bt_name = "elf64-sparc-freebsd", 338 .bt_type = ETF_ELF, 339 .bt_byteorder = ELFDATA2MSB, 340 .bt_elfclass = ELFCLASS64, 341 .bt_machine = EM_SPARCV9, 342 .bt_osabi = ELFOSABI_FREEBSD 343 }, 344 345 { 346 .bt_name = "elf64-x86-64", 347 .bt_type = ETF_ELF, 348 .bt_byteorder = ELFDATA2LSB, 349 .bt_elfclass = ELFCLASS64, 350 .bt_machine = EM_X86_64, 351 }, 352 353 { 354 .bt_name = "elf64-x86-64-freebsd", 355 .bt_type = ETF_ELF, 356 .bt_byteorder = ELFDATA2LSB, 357 .bt_elfclass = ELFCLASS64, 358 .bt_machine = EM_X86_64, 359 .bt_osabi = ELFOSABI_FREEBSD 360 }, 361 362 { 363 .bt_name = "ihex", 364 .bt_type = ETF_IHEX, 365 }, 366 367 { 368 .bt_name = "srec", 369 .bt_type = ETF_SREC, 370 }, 371 372 { 373 .bt_name = "symbolsrec", 374 .bt_type = ETF_SREC, 375 }, 376 377 { 378 .bt_name = NULL, 379 .bt_type = ETF_NONE, 380 }, 381 }; 382