00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #include "bfd.h"
00028 #include "sysdep.h"
00029 #include "libbfd.h"
00030 #include "fnmatch.h"
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229
00230
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248
00249
00250
00251
00252
00253
00254
00255
00256
00257
00258
00259
00260
00261
00262
00263
00264
00265
00266
00267
00268
00269
00270
00271
00272
00273
00274
00275
00276
00277
00278
00279
00280
00281
00282
00283
00284
00285
00286
00287
00288
00289
00290
00291
00292
00293
00294
00295
00296
00297
00298
00299
00300
00301
00302
00303
00304
00305
00306
00307
00308
00309
00310
00311
00312
00313
00314
00315
00316
00317
00318
00319
00320
00321
00322
00323
00324
00325
00326
00327
00328
00329
00330
00331
00332
00333
00334
00335
00336
00337
00338
00339
00340
00341
00342
00343
00344
00345
00346
00347
00348
00349
00350
00351
00352
00353
00354
00355
00356
00357
00358
00359
00360
00361
00362
00363
00364
00365
00366
00367
00368
00369
00370
00371
00372
00373
00374
00375
00376
00377
00378
00379
00380
00381
00382
00383
00384
00385
00386
00387
00388
00389
00390
00391
00392
00393
00394
00395
00396
00397
00398
00399
00400
00401
00402
00403
00404
00405
00406
00407
00408
00409
00410
00411
00412
00413
00414
00415
00416
00417
00418
00419
00420
00421
00422
00423
00424
00425
00426
00427
00428
00429
00430
00431
00432
00433
00434
00435
00436
00437
00438
00439
00440
00441
00442
00443
00444
00445
00446
00447
00448
00449
00450
00451
00452
00453
00454
00455
00456
00457
00458
00459
00460
00461
00462
00463
00464
00465
00466
00467
00468
00469
00470
00471
00472
00473
00474
00475
00476
00477
00478
00479
00480
00481
00482
00483
00484
00485
00486
00487
00488
00489
00490
00491
00492
00493
00494
00495
00496
00497
00498
00499
00500
00501
00502
00503
00504
00505
00506
00507
00508
00509
00510
00511
00512
00513
00514
00515
00516
00517
00518
00519
00520
00521
00522 extern const bfd_target a29kcoff_big_vec;
00523 extern const bfd_target a_out_adobe_vec;
00524 extern const bfd_target aix5coff64_vec;
00525 extern const bfd_target aout0_big_vec;
00526 extern const bfd_target aout_arm_big_vec;
00527 extern const bfd_target aout_arm_little_vec;
00528 extern const bfd_target aout_mips_big_vec;
00529 extern const bfd_target aout_mips_little_vec;
00530 extern const bfd_target apollocoff_vec;
00531 extern const bfd_target arm_epoc_pe_big_vec;
00532 extern const bfd_target arm_epoc_pe_little_vec;
00533 extern const bfd_target arm_epoc_pei_big_vec;
00534 extern const bfd_target arm_epoc_pei_little_vec;
00535 extern const bfd_target armcoff_big_vec;
00536 extern const bfd_target armcoff_little_vec;
00537 extern const bfd_target armnetbsd_vec;
00538 extern const bfd_target armpe_big_vec;
00539 extern const bfd_target armpe_little_vec;
00540 extern const bfd_target armpei_big_vec;
00541 extern const bfd_target armpei_little_vec;
00542 extern const bfd_target b_out_vec_big_host;
00543 extern const bfd_target b_out_vec_little_host;
00544 extern const bfd_target bfd_efi_app_ia32_vec;
00545 extern const bfd_target bfd_efi_app_ia64_vec;
00546 extern const bfd_target bfd_elf32_avr_vec;
00547 extern const bfd_target bfd_elf32_big_generic_vec;
00548 extern const bfd_target bfd_elf32_bigarc_vec;
00549 extern const bfd_target bfd_elf32_bigarm_vec;
00550 extern const bfd_target bfd_elf32_bigarm_symbian_vec;
00551 extern const bfd_target bfd_elf32_bigarm_vxworks_vec;
00552 extern const bfd_target bfd_elf32_bigmips_vec;
00553 extern const bfd_target bfd_elf32_cr16c_vec;
00554 extern const bfd_target bfd_elf32_cris_vec;
00555 extern const bfd_target bfd_elf32_crx_vec;
00556 extern const bfd_target bfd_elf32_d10v_vec;
00557 extern const bfd_target bfd_elf32_d30v_vec;
00558 extern const bfd_target bfd_elf32_dlx_big_vec;
00559 extern const bfd_target bfd_elf32_fr30_vec;
00560 extern const bfd_target bfd_elf32_frv_vec;
00561 extern const bfd_target bfd_elf32_frvfdpic_vec;
00562 extern const bfd_target bfd_elf32_h8300_vec;
00563 extern const bfd_target bfd_elf32_hppa_linux_vec;
00564 extern const bfd_target bfd_elf32_hppa_nbsd_vec;
00565 extern const bfd_target bfd_elf32_hppa_vec;
00566 extern const bfd_target bfd_elf32_i370_vec;
00567 extern const bfd_target bfd_elf32_i386_freebsd_vec;
00568 extern const bfd_target bfd_elf32_i386_vec;
00569 extern const bfd_target bfd_elf32_i860_little_vec;
00570 extern const bfd_target bfd_elf32_i860_vec;
00571 extern const bfd_target bfd_elf32_i960_vec;
00572 extern const bfd_target bfd_elf32_ia64_big_vec;
00573 extern const bfd_target bfd_elf32_ia64_hpux_big_vec;
00574 extern const bfd_target bfd_elf32_ip2k_vec;
00575 extern const bfd_target bfd_elf32_iq2000_vec;
00576 extern const bfd_target bfd_elf32_little_generic_vec;
00577 extern const bfd_target bfd_elf32_littlearc_vec;
00578 extern const bfd_target bfd_elf32_littlearm_vec;
00579 extern const bfd_target bfd_elf32_littlearm_symbian_vec;
00580 extern const bfd_target bfd_elf32_littlearm_vxworks_vec;
00581 extern const bfd_target bfd_elf32_littlemips_vec;
00582 extern const bfd_target bfd_elf32_m32r_vec;
00583 extern const bfd_target bfd_elf32_m32rle_vec;
00584 extern const bfd_target bfd_elf32_m32rlin_vec;
00585 extern const bfd_target bfd_elf32_m32rlelin_vec;
00586 extern const bfd_target bfd_elf32_m68hc11_vec;
00587 extern const bfd_target bfd_elf32_m68hc12_vec;
00588 extern const bfd_target bfd_elf32_m68k_vec;
00589 extern const bfd_target bfd_elf32_m88k_vec;
00590 extern const bfd_target bfd_elf32_mcore_big_vec;
00591 extern const bfd_target bfd_elf32_mcore_little_vec;
00592 extern const bfd_target bfd_elf32_mn10200_vec;
00593 extern const bfd_target bfd_elf32_mn10300_vec;
00594 extern const bfd_target bfd_elf32_msp430_vec;
00595 extern const bfd_target bfd_elf32_nbigmips_vec;
00596 extern const bfd_target bfd_elf32_nlittlemips_vec;
00597 extern const bfd_target bfd_elf32_ntradbigmips_vec;
00598 extern const bfd_target bfd_elf32_ntradlittlemips_vec;
00599 extern const bfd_target bfd_elf32_openrisc_vec;
00600 extern const bfd_target bfd_elf32_or32_big_vec;
00601 extern const bfd_target bfd_elf32_pj_vec;
00602 extern const bfd_target bfd_elf32_pjl_vec;
00603 extern const bfd_target bfd_elf32_powerpc_vec;
00604 extern const bfd_target bfd_elf32_powerpcle_vec;
00605 extern const bfd_target bfd_elf32_s390_vec;
00606 extern const bfd_target bfd_elf32_sh64_vec;
00607 extern const bfd_target bfd_elf32_sh64l_vec;
00608 extern const bfd_target bfd_elf32_sh64lin_vec;
00609 extern const bfd_target bfd_elf32_sh64blin_vec;
00610 extern const bfd_target bfd_elf32_sh64lnbsd_vec;
00611 extern const bfd_target bfd_elf32_sh64nbsd_vec;
00612 extern const bfd_target bfd_elf32_sh_vec;
00613 extern const bfd_target bfd_elf32_shblin_vec;
00614 extern const bfd_target bfd_elf32_shl_vec;
00615 extern const bfd_target bfd_elf32_shl_symbian_vec;
00616 extern const bfd_target bfd_elf32_shlin_vec;
00617 extern const bfd_target bfd_elf32_shlnbsd_vec;
00618 extern const bfd_target bfd_elf32_shnbsd_vec;
00619 extern const bfd_target bfd_elf32_sparc_vec;
00620 extern const bfd_target bfd_elf32_tradbigmips_vec;
00621 extern const bfd_target bfd_elf32_tradlittlemips_vec;
00622 extern const bfd_target bfd_elf32_us_cris_vec;
00623 extern const bfd_target bfd_elf32_v850_vec;
00624 extern const bfd_target bfd_elf32_vax_vec;
00625 extern const bfd_target bfd_elf32_xstormy16_vec;
00626 extern const bfd_target bfd_elf32_xtensa_be_vec;
00627 extern const bfd_target bfd_elf32_xtensa_le_vec;
00628 extern const bfd_target bfd_elf64_alpha_freebsd_vec;
00629 extern const bfd_target bfd_elf64_alpha_vec;
00630 extern const bfd_target bfd_elf64_big_generic_vec;
00631 extern const bfd_target bfd_elf64_bigmips_vec;
00632 extern const bfd_target bfd_elf64_hppa_linux_vec;
00633 extern const bfd_target bfd_elf64_hppa_vec;
00634 extern const bfd_target bfd_elf64_ia64_big_vec;
00635 extern const bfd_target bfd_elf64_ia64_hpux_big_vec;
00636 extern const bfd_target bfd_elf64_ia64_little_vec;
00637 extern const bfd_target bfd_elf64_little_generic_vec;
00638 extern const bfd_target bfd_elf64_littlemips_vec;
00639 extern const bfd_target bfd_elf64_mmix_vec;
00640 extern const bfd_target bfd_elf64_powerpc_vec;
00641 extern const bfd_target bfd_elf64_powerpcle_vec;
00642 extern const bfd_target bfd_elf64_s390_vec;
00643 extern const bfd_target bfd_elf64_sh64_vec;
00644 extern const bfd_target bfd_elf64_sh64l_vec;
00645 extern const bfd_target bfd_elf64_sh64lin_vec;
00646 extern const bfd_target bfd_elf64_sh64blin_vec;
00647 extern const bfd_target bfd_elf64_sh64lnbsd_vec;
00648 extern const bfd_target bfd_elf64_sh64nbsd_vec;
00649 extern const bfd_target bfd_elf64_sparc_vec;
00650 extern const bfd_target bfd_elf64_tradbigmips_vec;
00651 extern const bfd_target bfd_elf64_tradlittlemips_vec;
00652 extern const bfd_target bfd_elf64_x86_64_vec;
00653 extern const bfd_target bfd_mmo_vec;
00654 extern const bfd_target bfd_powerpc_pe_vec;
00655 extern const bfd_target bfd_powerpc_pei_vec;
00656 extern const bfd_target bfd_powerpcle_pe_vec;
00657 extern const bfd_target bfd_powerpcle_pei_vec;
00658 extern const bfd_target cris_aout_vec;
00659 extern const bfd_target demo_64_vec;
00660 extern const bfd_target ecoff_big_vec;
00661 extern const bfd_target ecoff_biglittle_vec;
00662 extern const bfd_target ecoff_little_vec;
00663 extern const bfd_target ecoffalpha_little_vec;
00664 extern const bfd_target go32coff_vec;
00665 extern const bfd_target go32stubbedcoff_vec;
00666 extern const bfd_target h8300coff_vec;
00667 extern const bfd_target h8500coff_vec;
00668 extern const bfd_target host_aout_vec;
00669 extern const bfd_target hp300bsd_vec;
00670 extern const bfd_target hp300hpux_vec;
00671 extern const bfd_target i386aout_vec;
00672 extern const bfd_target i386bsd_vec;
00673 extern const bfd_target i386coff_vec;
00674 extern const bfd_target i386dynix_vec;
00675 extern const bfd_target i386freebsd_vec;
00676 extern const bfd_target i386linux_vec;
00677 extern const bfd_target i386lynx_aout_vec;
00678 extern const bfd_target i386lynx_coff_vec;
00679 extern const bfd_target i386mach3_vec;
00680 extern const bfd_target i386msdos_vec;
00681 extern const bfd_target i386netbsd_vec;
00682 extern const bfd_target i386os9k_vec;
00683 extern const bfd_target i386pe_vec;
00684 extern const bfd_target i386pei_vec;
00685 extern const bfd_target i860coff_vec;
00686 extern const bfd_target icoff_big_vec;
00687 extern const bfd_target icoff_little_vec;
00688 extern const bfd_target ieee_vec;
00689 extern const bfd_target m68k4knetbsd_vec;
00690 extern const bfd_target m68kaux_coff_vec;
00691 extern const bfd_target m68kcoff_vec;
00692 extern const bfd_target m68kcoffun_vec;
00693 extern const bfd_target m68klinux_vec;
00694 extern const bfd_target m68klynx_aout_vec;
00695 extern const bfd_target m68klynx_coff_vec;
00696 extern const bfd_target m68knetbsd_vec;
00697 extern const bfd_target m68ksysvcoff_vec;
00698 extern const bfd_target m88kbcs_vec;
00699 extern const bfd_target m88kmach3_vec;
00700 extern const bfd_target m88kopenbsd_vec;
00701 extern const bfd_target mach_o_be_vec;
00702 extern const bfd_target mach_o_le_vec;
00703 extern const bfd_target mach_o_fat_vec;
00704 extern const bfd_target maxqcoff_vec;
00705 extern const bfd_target mcore_pe_big_vec;
00706 extern const bfd_target mcore_pe_little_vec;
00707 extern const bfd_target mcore_pei_big_vec;
00708 extern const bfd_target mcore_pei_little_vec;
00709 extern const bfd_target mipslpe_vec;
00710 extern const bfd_target mipslpei_vec;
00711 extern const bfd_target newsos3_vec;
00712 extern const bfd_target nlm32_alpha_vec;
00713 extern const bfd_target nlm32_i386_vec;
00714 extern const bfd_target nlm32_powerpc_vec;
00715 extern const bfd_target nlm32_sparc_vec;
00716 extern const bfd_target oasys_vec;
00717 extern const bfd_target or32coff_big_vec;
00718 extern const bfd_target pc532machaout_vec;
00719 extern const bfd_target pc532netbsd_vec;
00720 extern const bfd_target pdp11_aout_vec;
00721 extern const bfd_target pef_vec;
00722 extern const bfd_target pef_xlib_vec;
00723 extern const bfd_target pmac_xcoff_vec;
00724 extern const bfd_target ppcboot_vec;
00725 extern const bfd_target riscix_vec;
00726 extern const bfd_target rs6000coff64_vec;
00727 extern const bfd_target rs6000coff_vec;
00728 extern const bfd_target shcoff_small_vec;
00729 extern const bfd_target shcoff_vec;
00730 extern const bfd_target shlcoff_small_vec;
00731 extern const bfd_target shlcoff_vec;
00732 extern const bfd_target shlpe_vec;
00733 extern const bfd_target shlpei_vec;
00734 extern const bfd_target som_vec;
00735 extern const bfd_target sparccoff_vec;
00736 extern const bfd_target sparcle_aout_vec;
00737 extern const bfd_target sparclinux_vec;
00738 extern const bfd_target sparclynx_aout_vec;
00739 extern const bfd_target sparclynx_coff_vec;
00740 extern const bfd_target sparcnetbsd_vec;
00741 extern const bfd_target sunos_big_vec;
00742 extern const bfd_target sym_vec;
00743 extern const bfd_target tic30_aout_vec;
00744 extern const bfd_target tic30_coff_vec;
00745 extern const bfd_target tic4x_coff0_beh_vec;
00746 extern const bfd_target tic4x_coff0_vec;
00747 extern const bfd_target tic4x_coff1_beh_vec;
00748 extern const bfd_target tic4x_coff1_vec;
00749 extern const bfd_target tic4x_coff2_beh_vec;
00750 extern const bfd_target tic4x_coff2_vec;
00751 extern const bfd_target tic54x_coff0_beh_vec;
00752 extern const bfd_target tic54x_coff0_vec;
00753 extern const bfd_target tic54x_coff1_beh_vec;
00754 extern const bfd_target tic54x_coff1_vec;
00755 extern const bfd_target tic54x_coff2_beh_vec;
00756 extern const bfd_target tic54x_coff2_vec;
00757 extern const bfd_target tic80coff_vec;
00758 extern const bfd_target vaxbsd_vec;
00759 extern const bfd_target vaxnetbsd_vec;
00760 extern const bfd_target vax1knetbsd_vec;
00761 extern const bfd_target versados_vec;
00762 extern const bfd_target vms_alpha_vec;
00763 extern const bfd_target vms_vax_vec;
00764 extern const bfd_target w65_vec;
00765 extern const bfd_target we32kcoff_vec;
00766 extern const bfd_target z8kcoff_vec;
00767
00768
00769 extern const bfd_target srec_vec;
00770 extern const bfd_target symbolsrec_vec;
00771 extern const bfd_target tekhex_vec;
00772 extern const bfd_target binary_vec;
00773 extern const bfd_target ihex_vec;
00774
00775
00776 extern const bfd_target aix386_core_vec;
00777 extern const bfd_target cisco_core_big_vec;
00778 extern const bfd_target cisco_core_little_vec;
00779 extern const bfd_target hppabsd_core_vec;
00780 extern const bfd_target hpux_core_vec;
00781 extern const bfd_target irix_core_vec;
00782 extern const bfd_target netbsd_core_vec;
00783 extern const bfd_target osf_core_vec;
00784 extern const bfd_target ptrace_core_vec;
00785 extern const bfd_target sco5_core_vec;
00786 extern const bfd_target trad_core_vec;
00787
00788 extern const bfd_target bfd_elf32_am33lin_vec;
00789 static const bfd_target * const _bfd_target_vector[] = {
00790
00791 #ifdef SELECT_VECS
00792
00793 SELECT_VECS,
00794
00795 #else
00796
00797 #ifdef DEFAULT_VECTOR
00798 &DEFAULT_VECTOR,
00799 #endif
00800
00801
00802
00803
00804
00805
00806 &a29kcoff_big_vec,
00807 &a_out_adobe_vec,
00808 #ifdef BFD64
00809 &aix5coff64_vec,
00810 #endif
00811 &aout0_big_vec,
00812 #if 0
00813
00814 &aout_arm_big_vec,
00815 &aout_arm_little_vec,
00816
00817 &aout_mips_big_vec,
00818 #endif
00819 &aout_mips_little_vec,
00820 #if 0
00821 &apollocoff_vec,
00822 #endif
00823 &arm_epoc_pe_big_vec,
00824 &arm_epoc_pe_little_vec,
00825 &arm_epoc_pei_big_vec,
00826 &arm_epoc_pei_little_vec,
00827 &armcoff_big_vec,
00828 &armcoff_little_vec,
00829 &armnetbsd_vec,
00830 &armpe_big_vec,
00831 &armpe_little_vec,
00832 &armpei_big_vec,
00833 &armpei_little_vec,
00834 &b_out_vec_big_host,
00835 &b_out_vec_little_host,
00836 &bfd_efi_app_ia32_vec,
00837 #ifdef BFD64
00838 &bfd_efi_app_ia64_vec,
00839 #endif
00840 &bfd_elf32_avr_vec,
00841
00842
00843
00844
00845
00846 &bfd_elf32_big_generic_vec,
00847 &bfd_elf32_bigarc_vec,
00848 &bfd_elf32_bigarm_vec,
00849 &bfd_elf32_bigarm_symbian_vec,
00850 &bfd_elf32_bigarm_vxworks_vec,
00851 &bfd_elf32_bigmips_vec,
00852 &bfd_elf32_cr16c_vec,
00853 &bfd_elf32_cris_vec,
00854 &bfd_elf32_crx_vec,
00855 &bfd_elf32_d10v_vec,
00856 &bfd_elf32_d30v_vec,
00857 &bfd_elf32_dlx_big_vec,
00858 &bfd_elf32_fr30_vec,
00859 &bfd_elf32_frv_vec,
00860 &bfd_elf32_frvfdpic_vec,
00861 &bfd_elf32_h8300_vec,
00862 &bfd_elf32_hppa_linux_vec,
00863 &bfd_elf32_hppa_nbsd_vec,
00864 &bfd_elf32_hppa_vec,
00865 &bfd_elf32_i370_vec,
00866 &bfd_elf32_i386_freebsd_vec,
00867 &bfd_elf32_i386_vec,
00868 &bfd_elf32_i860_little_vec,
00869 &bfd_elf32_i860_vec,
00870 &bfd_elf32_i960_vec,
00871 #if 0
00872 &bfd_elf32_ia64_big_vec,
00873 #endif
00874 &bfd_elf32_ia64_hpux_big_vec,
00875 &bfd_elf32_ip2k_vec,
00876 &bfd_elf32_iq2000_vec,
00877 &bfd_elf32_little_generic_vec,
00878 &bfd_elf32_littlearc_vec,
00879 &bfd_elf32_littlearm_vec,
00880 &bfd_elf32_littlearm_symbian_vec,
00881 &bfd_elf32_littlearm_vxworks_vec,
00882 &bfd_elf32_littlemips_vec,
00883 &bfd_elf32_m32r_vec,
00884 &bfd_elf32_m32rle_vec,
00885 &bfd_elf32_m32rlin_vec,
00886 &bfd_elf32_m32rlelin_vec,
00887 &bfd_elf32_m68hc11_vec,
00888 &bfd_elf32_m68hc12_vec,
00889 &bfd_elf32_m68k_vec,
00890 &bfd_elf32_m88k_vec,
00891 &bfd_elf32_mcore_big_vec,
00892 &bfd_elf32_mcore_little_vec,
00893 &bfd_elf32_mn10200_vec,
00894 &bfd_elf32_mn10300_vec,
00895 &bfd_elf32_msp430_vec,
00896 #ifdef BFD64
00897 &bfd_elf32_nbigmips_vec,
00898 &bfd_elf32_nlittlemips_vec,
00899 &bfd_elf32_ntradbigmips_vec,
00900 &bfd_elf32_ntradlittlemips_vec,
00901 #endif
00902 &bfd_elf32_openrisc_vec,
00903 &bfd_elf32_or32_big_vec,
00904 &bfd_elf32_pj_vec,
00905 &bfd_elf32_pjl_vec,
00906 &bfd_elf32_powerpc_vec,
00907 &bfd_elf32_powerpcle_vec,
00908 &bfd_elf32_s390_vec,
00909 &bfd_elf32_sh_vec,
00910 &bfd_elf32_shblin_vec,
00911 &bfd_elf32_shl_vec,
00912 &bfd_elf32_shl_symbian_vec,
00913 &bfd_elf32_shlin_vec,
00914 &bfd_elf32_shlnbsd_vec,
00915 &bfd_elf32_shnbsd_vec,
00916 #ifdef BFD64
00917 &bfd_elf32_sh64_vec,
00918 &bfd_elf32_sh64l_vec,
00919 &bfd_elf32_sh64lnbsd_vec,
00920 &bfd_elf32_sh64nbsd_vec,
00921 &bfd_elf32_sh64lin_vec,
00922 &bfd_elf32_sh64blin_vec,
00923 #endif
00924 &bfd_elf32_sparc_vec,
00925 &bfd_elf32_tradbigmips_vec,
00926 &bfd_elf32_tradlittlemips_vec,
00927 &bfd_elf32_us_cris_vec,
00928 &bfd_elf32_v850_vec,
00929 &bfd_elf32_vax_vec,
00930 &bfd_elf32_xstormy16_vec,
00931 &bfd_elf32_xtensa_be_vec,
00932 &bfd_elf32_xtensa_le_vec,
00933 #ifdef BFD64
00934 &bfd_elf64_alpha_freebsd_vec,
00935 &bfd_elf64_alpha_vec,
00936 &bfd_elf64_big_generic_vec,
00937 &bfd_elf64_bigmips_vec,
00938 &bfd_elf64_hppa_linux_vec,
00939 &bfd_elf64_hppa_vec,
00940 &bfd_elf64_ia64_big_vec,
00941 &bfd_elf64_ia64_hpux_big_vec,
00942 &bfd_elf64_ia64_little_vec,
00943 &bfd_elf64_little_generic_vec,
00944 &bfd_elf64_littlemips_vec,
00945 &bfd_elf64_mmix_vec,
00946 &bfd_elf64_powerpc_vec,
00947 &bfd_elf64_powerpcle_vec,
00948 &bfd_elf64_s390_vec,
00949 &bfd_elf64_sh64_vec,
00950 &bfd_elf64_sh64l_vec,
00951 &bfd_elf64_sh64lnbsd_vec,
00952 &bfd_elf64_sh64nbsd_vec,
00953 &bfd_elf64_sh64lin_vec,
00954 &bfd_elf64_sh64blin_vec,
00955 &bfd_elf64_sparc_vec,
00956 &bfd_elf64_tradbigmips_vec,
00957 &bfd_elf64_tradlittlemips_vec,
00958 &bfd_elf64_x86_64_vec,
00959 &bfd_mmo_vec,
00960 #endif
00961 &bfd_powerpc_pe_vec,
00962 &bfd_powerpc_pei_vec,
00963 &bfd_powerpcle_pe_vec,
00964 &bfd_powerpcle_pei_vec,
00965 &cris_aout_vec,
00966 #ifdef BFD64
00967 &demo_64_vec,
00968 #endif
00969 &ecoff_big_vec,
00970 &ecoff_biglittle_vec,
00971 &ecoff_little_vec,
00972 #ifdef BFD64
00973 &ecoffalpha_little_vec,
00974 #endif
00975 &go32coff_vec,
00976 &go32stubbedcoff_vec,
00977 &h8300coff_vec,
00978 &h8500coff_vec,
00979 #if 0
00980
00981
00982 &host_aout_vec,
00983
00984 &hp300bsd_vec,
00985 #endif
00986 &hp300hpux_vec,
00987 &i386aout_vec,
00988 &i386bsd_vec,
00989 &i386coff_vec,
00990 #if 0
00991 &i386dynix_vec,
00992 #endif
00993 &i386freebsd_vec,
00994 #if 0
00995
00996
00997 &i386linux_vec,
00998 #endif
00999 &i386lynx_aout_vec,
01000 &i386lynx_coff_vec,
01001 #if 0
01002
01003 &i386mach3_vec,
01004 #endif
01005 &i386msdos_vec,
01006 &i386netbsd_vec,
01007 &i386os9k_vec,
01008 &i386pe_vec,
01009 &i386pei_vec,
01010 &i860coff_vec,
01011 &icoff_big_vec,
01012 &icoff_little_vec,
01013 &ieee_vec,
01014 #if 0
01015 &m68k4knetbsd_vec,
01016 &m68kaux_coff_vec,
01017 #endif
01018 &m68kcoff_vec,
01019 &m68kcoffun_vec,
01020 #if 0
01021
01022
01023 &m68klinux_vec,
01024 #endif
01025 &m68klynx_aout_vec,
01026 &m68klynx_coff_vec,
01027 &m68knetbsd_vec,
01028 &m68ksysvcoff_vec,
01029 &m88kbcs_vec,
01030 &m88kmach3_vec,
01031 &m88kopenbsd_vec,
01032 &mach_o_be_vec,
01033 &mach_o_le_vec,
01034 &mach_o_fat_vec,
01035 &maxqcoff_vec,
01036 &mcore_pe_big_vec,
01037 &mcore_pe_little_vec,
01038 &mcore_pei_big_vec,
01039 &mcore_pei_little_vec,
01040 &mipslpe_vec,
01041 &mipslpei_vec,
01042 &newsos3_vec,
01043 #ifdef BFD64
01044 &nlm32_alpha_vec,
01045 #endif
01046 &nlm32_i386_vec,
01047 &nlm32_powerpc_vec,
01048 &nlm32_sparc_vec,
01049 #if 0
01050
01051
01052
01053
01054
01055 &oasys_vec,
01056 #endif
01057
01058 &or32coff_big_vec,
01059
01060 &pc532machaout_vec,
01061 &pc532netbsd_vec,
01062 &pdp11_aout_vec,
01063 &pef_vec,
01064 &pef_xlib_vec,
01065 #if 0
01066
01067 &pmac_xcoff_vec,
01068 #endif
01069 &ppcboot_vec,
01070 #if 0
01071
01072 &riscix_vec,
01073 #endif
01074 #ifdef BFD64
01075 &rs6000coff64_vec,
01076 #endif
01077 &rs6000coff_vec,
01078 &shcoff_small_vec,
01079 &shcoff_vec,
01080 &shlcoff_small_vec,
01081 &shlcoff_vec,
01082 &shlpe_vec,
01083 &shlpei_vec,
01084 #if defined (HOST_HPPAHPUX) || defined (HOST_HPPABSD) || defined (HOST_HPPAOSF)
01085 &som_vec,
01086 #endif
01087 &sparccoff_vec,
01088 &sparcle_aout_vec,
01089 &sparclinux_vec,
01090 &sparclynx_aout_vec,
01091 &sparclynx_coff_vec,
01092 &sparcnetbsd_vec,
01093 &sunos_big_vec,
01094 &sym_vec,
01095 &tic30_aout_vec,
01096 &tic30_coff_vec,
01097 &tic54x_coff0_beh_vec,
01098 &tic54x_coff0_vec,
01099 &tic54x_coff1_beh_vec,
01100 &tic54x_coff1_vec,
01101 &tic54x_coff2_beh_vec,
01102 &tic54x_coff2_vec,
01103 &tic80coff_vec,
01104 &vaxbsd_vec,
01105 &vaxnetbsd_vec,
01106 &vax1knetbsd_vec,
01107 &versados_vec,
01108 #ifdef BFD64
01109 &vms_alpha_vec,
01110 #endif
01111 &vms_vax_vec,
01112 &w65_vec,
01113 &we32kcoff_vec,
01114 &z8kcoff_vec,
01115 &bfd_elf32_am33lin_vec,
01116 #endif
01117
01118
01119 &srec_vec,
01120 &symbolsrec_vec,
01121
01122 &tekhex_vec,
01123
01124 &binary_vec,
01125
01126 &ihex_vec,
01127
01128
01129
01130 #ifdef AIX386_CORE
01131 &aix386_core_vec,
01132 #endif
01133 #if 0
01134
01135
01136
01137 &cisco_core_big_vec,
01138 &cisco_core_little_vec,
01139 #endif
01140 #ifdef HPPABSD_CORE
01141 &hppabsd_core_vec,
01142 #endif
01143 #ifdef HPUX_CORE
01144 &hpux_core_vec,
01145 #endif
01146 #ifdef IRIX_CORE
01147 &irix_core_vec,
01148 #endif
01149 #ifdef NETBSD_CORE
01150 &netbsd_core_vec,
01151 #endif
01152 #ifdef OSF_CORE
01153 &osf_core_vec,
01154 #endif
01155 #ifdef PTRACE_CORE
01156 &ptrace_core_vec,
01157 #endif
01158 #ifdef SCO5_CORE
01159 &sco5_core_vec,
01160 #endif
01161 #ifdef TRAD_CORE
01162 &trad_core_vec,
01163 #endif
01164
01165 NULL
01166 };
01167 const bfd_target * const *bfd_target_vector = _bfd_target_vector;
01168
01169
01170
01171
01172 const bfd_target *bfd_default_vector[] = {
01173 #ifdef DEFAULT_VECTOR
01174 &DEFAULT_VECTOR,
01175 #endif
01176 NULL
01177 };
01178
01179
01180
01181
01182 static const bfd_target *_bfd_associated_vector[] = {
01183 #ifdef ASSOCIATED_VECS
01184 ASSOCIATED_VECS,
01185 #endif
01186 NULL
01187 };
01188 const bfd_target * const *bfd_associated_vector = _bfd_associated_vector;
01189
01190
01191
01192
01193 const size_t _bfd_target_vector_entries = sizeof (_bfd_target_vector)/sizeof (*_bfd_target_vector);
01194
01195
01196
01197 struct targmatch
01198 {
01199
01200 const char *triplet;
01201
01202
01203
01204 const bfd_target *vector;
01205 };
01206
01207
01208 static const struct targmatch bfd_target_match[] = {
01209 #include "targmatch.h"
01210 { NULL, NULL }
01211 };
01212
01213
01214
01215 static const bfd_target *
01216 find_target (const char *name)
01217 {
01218 const bfd_target * const *target;
01219 const struct targmatch *match;
01220
01221 for (target = &bfd_target_vector[0]; *target != NULL; target++)
01222 if (strcmp (name, (*target)->name) == 0)
01223 return *target;
01224
01225
01226
01227
01228 for (match = &bfd_target_match[0]; match->triplet != NULL; match++)
01229 {
01230 if (fnmatch (match->triplet, name, 0) == 0)
01231 {
01232 while (match->vector == NULL)
01233 ++match;
01234 return match->vector;
01235 break;
01236 }
01237 }
01238
01239 bfd_set_error (bfd_error_invalid_target);
01240 return NULL;
01241 }
01242
01243
01244
01245
01246
01247
01248
01249
01250
01251
01252
01253
01254
01255
01256 bfd_boolean
01257 bfd_set_default_target (const char *name)
01258 {
01259 const bfd_target *target;
01260
01261 if (bfd_default_vector[0] != NULL
01262 && strcmp (name, bfd_default_vector[0]->name) == 0)
01263 return TRUE;
01264
01265 target = find_target (name);
01266 if (target == NULL)
01267 return FALSE;
01268
01269 bfd_default_vector[0] = target;
01270 return TRUE;
01271 }
01272
01273
01274
01275
01276
01277
01278
01279
01280
01281
01282
01283
01284
01285
01286
01287
01288
01289
01290
01291
01292 const bfd_target *
01293 bfd_find_target (const char *target_name, bfd *abfd)
01294 {
01295 const char *targname;
01296 const bfd_target *target;
01297
01298 if (target_name != NULL)
01299 targname = target_name;
01300 else
01301 targname = getenv ("GNUTARGET");
01302
01303
01304 if (targname == NULL || strcmp (targname, "default") == 0)
01305 {
01306 abfd->target_defaulted = TRUE;
01307 if (bfd_default_vector[0] != NULL)
01308 abfd->xvec = bfd_default_vector[0];
01309 else
01310 abfd->xvec = bfd_target_vector[0];
01311 return abfd->xvec;
01312 }
01313
01314 abfd->target_defaulted = FALSE;
01315
01316 target = find_target (targname);
01317 if (target == NULL)
01318 return NULL;
01319
01320 abfd->xvec = target;
01321 return target;
01322 }
01323
01324
01325
01326
01327
01328
01329
01330
01331
01332
01333
01334
01335
01336
01337
01338 const char **
01339 bfd_target_list (void)
01340 {
01341 int vec_length = 0;
01342 bfd_size_type amt;
01343 #if defined (HOST_HPPAHPUX) && ! defined (__STDC__)
01344
01345
01346 volatile
01347 #endif
01348 const bfd_target * const *target;
01349 const char **name_list, **name_ptr;
01350
01351 for (target = &bfd_target_vector[0]; *target != NULL; target++)
01352 vec_length++;
01353
01354 amt = (vec_length + 1) * sizeof (char **);
01355 name_ptr = name_list = bfd_malloc (amt);
01356
01357 if (name_list == NULL)
01358 return NULL;
01359
01360 for (target = &bfd_target_vector[0]; *target != NULL; target++)
01361 if (target == &bfd_target_vector[0]
01362 || *target != bfd_target_vector[0])
01363 *name_ptr++ = (*target)->name;
01364
01365 *name_ptr = NULL;
01366 return name_list;
01367 }
01368
01369
01370
01371
01372
01373
01374
01375
01376
01377
01378
01379
01380
01381
01382
01383
01384
01385
01386 const bfd_target *
01387 bfd_search_for_target (int (*search_func) (const bfd_target *, void *),
01388 void *data)
01389 {
01390 const bfd_target * const *target;
01391
01392 for (target = bfd_target_vector; *target != NULL; target ++)
01393 if (search_func (*target, data))
01394 return *target;
01395
01396 return NULL;
01397 }