Automatic date update in version.in
[external/binutils.git] / bfd / targets.c
index 883398a..6b85c62 100644 (file)
@@ -1,5 +1,5 @@
 /* Generic target-file-type support for the BFD library.
-   Copyright (C) 1990-2018 Free Software Foundation, Inc.
+   Copyright (C) 1990-2019 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -151,7 +151,6 @@ DESCRIPTION
 .  bfd_target_ecoff_flavour,
 .  bfd_target_xcoff_flavour,
 .  bfd_target_elf_flavour,
-.  bfd_target_oasys_flavour,
 .  bfd_target_tekhex_flavour,
 .  bfd_target_srec_flavour,
 .  bfd_target_verilog_flavour,
@@ -466,6 +465,7 @@ BFD_JUMP_TABLE macros.
 .  NAME##_bfd_discard_group, \
 .  NAME##_section_already_linked, \
 .  NAME##_bfd_define_common_symbol, \
+.  NAME##_bfd_link_hide_symbol, \
 .  NAME##_bfd_define_start_stop
 .
 .  int        (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
@@ -532,6 +532,10 @@ BFD_JUMP_TABLE macros.
 .  bfd_boolean (*_bfd_define_common_symbol) (bfd *, struct bfd_link_info *,
 .                                           struct bfd_link_hash_entry *);
 .
+.  {* Hide a symbol.  *}
+.  void (*_bfd_link_hide_symbol) (bfd *, struct bfd_link_info *,
+.                                struct bfd_link_hash_entry *);
+.
 .  {* Define a __start, __stop, .startof. or .sizeof. symbol.  *}
 .  struct bfd_link_hash_entry *
 .             (*_bfd_define_start_stop) (struct bfd_link_info *, const char *,
@@ -595,19 +599,13 @@ extern const bfd_target alpha_elf64_fbsd_vec;
 extern const bfd_target alpha_vms_vec;
 extern const bfd_target alpha_vms_lib_txt_vec;
 extern const bfd_target am33_elf32_linux_vec;
-extern const bfd_target aout0_be_vec;
-extern const bfd_target aout64_vec;
 extern const bfd_target aout_vec;
 extern const bfd_target arc_elf32_be_vec;
 extern const bfd_target arc_elf32_le_vec;
-extern const bfd_target arm_aout_be_vec;
-extern const bfd_target arm_aout_le_vec;
-extern const bfd_target arm_aout_nbsd_vec;
-extern const bfd_target arm_aout_riscix_vec;
-extern const bfd_target arm_coff_be_vec;
-extern const bfd_target arm_coff_le_vec;
 extern const bfd_target arm_elf32_be_vec;
 extern const bfd_target arm_elf32_le_vec;
+extern const bfd_target arm_elf32_fdpic_be_vec;
+extern const bfd_target arm_elf32_fdpic_le_vec;
 extern const bfd_target arm_elf32_nacl_be_vec;
 extern const bfd_target arm_elf32_nacl_le_vec;
 extern const bfd_target arm_elf32_symbian_be_vec;
@@ -617,14 +615,10 @@ extern const bfd_target arm_elf32_vxworks_le_vec;
 extern const bfd_target arm_mach_o_vec;
 extern const bfd_target arm_pe_be_vec;
 extern const bfd_target arm_pe_le_vec;
-extern const bfd_target arm_pe_epoc_be_vec;
-extern const bfd_target arm_pe_epoc_le_vec;
 extern const bfd_target arm_pe_wince_be_vec;
 extern const bfd_target arm_pe_wince_le_vec;
 extern const bfd_target arm_pei_be_vec;
 extern const bfd_target arm_pei_le_vec;
-extern const bfd_target arm_pei_epoc_be_vec;
-extern const bfd_target arm_pei_epoc_le_vec;
 extern const bfd_target arm_pei_wince_be_vec;
 extern const bfd_target arm_pei_wince_le_vec;
 extern const bfd_target avr_elf32_vec;
@@ -636,6 +630,8 @@ extern const bfd_target cris_aout_vec;
 extern const bfd_target cris_elf32_vec;
 extern const bfd_target cris_elf32_us_vec;
 extern const bfd_target crx_elf32_vec;
+extern const bfd_target csky_elf32_be_vec;
+extern const bfd_target csky_elf32_le_vec;
 extern const bfd_target d10v_elf32_vec;
 extern const bfd_target d30v_elf32_vec;
 extern const bfd_target dlx_elf32_be_vec;
@@ -643,6 +639,8 @@ extern const bfd_target elf32_be_vec;
 extern const bfd_target elf32_le_vec;
 extern const bfd_target elf64_be_vec;
 extern const bfd_target elf64_le_vec;
+extern const bfd_target bpf_elf64_le_vec;
+extern const bfd_target bpf_elf64_be_vec;
 extern const bfd_target epiphany_elf32_vec;
 extern const bfd_target fr30_elf32_vec;
 extern const bfd_target frv_elf32_vec;
@@ -657,13 +655,7 @@ extern const bfd_target hppa_elf64_linux_vec;
 extern const bfd_target hppa_som_vec;
 extern const bfd_target i386_aout_vec;
 extern const bfd_target i386_aout_bsd_vec;
-extern const bfd_target i386_aout_dynix_vec;
-extern const bfd_target i386_aout_fbsd_vec;
-extern const bfd_target i386_aout_linux_vec;
 extern const bfd_target i386_aout_lynx_vec;
-extern const bfd_target i386_aout_mach3_vec;
-extern const bfd_target i386_aout_nbsd_vec;
-extern const bfd_target i386_aout_os9k_vec;
 extern const bfd_target i386_coff_vec;
 extern const bfd_target i386_coff_go32_vec;
 extern const bfd_target i386_coff_go32stubbed_vec;
@@ -700,18 +692,8 @@ extern const bfd_target m32r_elf32_linux_vec;
 extern const bfd_target m32r_elf32_linux_le_vec;
 extern const bfd_target m68hc11_elf32_vec;
 extern const bfd_target m68hc12_elf32_vec;
-extern const bfd_target m68k_aout_4knbsd_vec;
-extern const bfd_target m68k_aout_hp300bsd_vec;
-extern const bfd_target m68k_aout_hp300hpux_vec;
-extern const bfd_target m68k_aout_linux_vec;
-extern const bfd_target m68k_aout_nbsd_vec;
-extern const bfd_target m68k_coff_vec;
-extern const bfd_target m68k_coff_apollo_vec;
-extern const bfd_target m68k_coff_aux_vec;
-extern const bfd_target m68k_coff_sysv_vec;
-extern const bfd_target m68k_coff_un_vec;
 extern const bfd_target m68k_elf32_vec;
-extern const bfd_target m68k_versados_vec;
+extern const bfd_target s12z_elf32_vec;
 extern const bfd_target mach_o_be_vec;
 extern const bfd_target mach_o_le_vec;
 extern const bfd_target mach_o_fat_vec;
@@ -726,8 +708,6 @@ extern const bfd_target mep_elf32_le_vec;
 extern const bfd_target metag_elf32_vec;
 extern const bfd_target microblaze_elf32_vec;
 extern const bfd_target microblaze_elf32_le_vec;
-extern const bfd_target mips_aout_be_vec;
-extern const bfd_target mips_aout_le_vec;
 extern const bfd_target mips_ecoff_be_vec;
 extern const bfd_target mips_ecoff_le_vec;
 extern const bfd_target mips_ecoff_bele_vec;
@@ -751,8 +731,6 @@ extern const bfd_target mips_elf64_trad_be_vec;
 extern const bfd_target mips_elf64_trad_le_vec;
 extern const bfd_target mips_elf64_tradfbsd_be_vec;
 extern const bfd_target mips_elf64_tradfbsd_le_vec;
-extern const bfd_target mips_pe_le_vec;
-extern const bfd_target mips_pei_le_vec;
 extern const bfd_target mmix_elf64_vec;
 extern const bfd_target mmix_mmo_vec;
 extern const bfd_target mn10200_elf32_vec;
@@ -766,11 +744,11 @@ extern const bfd_target nds32_elf32_be_vec;
 extern const bfd_target nds32_elf32_le_vec;
 extern const bfd_target nds32_elf32_linux_be_vec;
 extern const bfd_target nds32_elf32_linux_le_vec;
+extern const bfd_target nfp_elf64_vec;
 extern const bfd_target nios2_elf32_be_vec;
 extern const bfd_target nios2_elf32_le_vec;
 extern const bfd_target ns32k_aout_pc532mach_vec;
 extern const bfd_target ns32k_aout_pc532nbsd_vec;
-extern const bfd_target oasys_vec;
 extern const bfd_target or1k_elf32_vec;
 extern const bfd_target pdp11_aout_vec;
 extern const bfd_target pef_vec;
@@ -801,22 +779,11 @@ extern const bfd_target rs6000_xcoff_vec;
 extern const bfd_target rx_elf32_be_vec;
 extern const bfd_target rx_elf32_be_ns_vec;
 extern const bfd_target rx_elf32_le_vec;
+extern const bfd_target rx_elf32_linux_le_vec;
 extern const bfd_target s390_elf32_vec;
 extern const bfd_target s390_elf64_vec;
 extern const bfd_target score_elf32_be_vec;
 extern const bfd_target score_elf32_le_vec;
-extern const bfd_target sh64_elf32_vec;
-extern const bfd_target sh64_elf32_le_vec;
-extern const bfd_target sh64_elf32_linux_vec;
-extern const bfd_target sh64_elf32_linux_be_vec;
-extern const bfd_target sh64_elf32_nbsd_vec;
-extern const bfd_target sh64_elf32_nbsd_le_vec;
-extern const bfd_target sh64_elf64_vec;
-extern const bfd_target sh64_elf64_le_vec;
-extern const bfd_target sh64_elf64_linux_vec;
-extern const bfd_target sh64_elf64_linux_be_vec;
-extern const bfd_target sh64_elf64_nbsd_vec;
-extern const bfd_target sh64_elf64_nbsd_le_vec;
 extern const bfd_target sh_coff_vec;
 extern const bfd_target sh_coff_le_vec;
 extern const bfd_target sh_coff_small_vec;
@@ -829,18 +796,10 @@ extern const bfd_target sh_elf32_linux_vec;
 extern const bfd_target sh_elf32_linux_be_vec;
 extern const bfd_target sh_elf32_nbsd_vec;
 extern const bfd_target sh_elf32_nbsd_le_vec;
-extern const bfd_target sh_elf32_symbian_le_vec;
 extern const bfd_target sh_elf32_vxworks_vec;
 extern const bfd_target sh_elf32_vxworks_le_vec;
 extern const bfd_target sh_pe_le_vec;
 extern const bfd_target sh_pei_le_vec;
-extern const bfd_target sparc_aout_le_vec;
-extern const bfd_target sparc_aout_linux_vec;
-extern const bfd_target sparc_aout_lynx_vec;
-extern const bfd_target sparc_aout_nbsd_vec;
-extern const bfd_target sparc_aout_sunos_be_vec;
-extern const bfd_target sparc_coff_vec;
-extern const bfd_target sparc_coff_lynx_vec;
 extern const bfd_target sparc_elf32_vec;
 extern const bfd_target sparc_elf32_sol2_vec;
 extern const bfd_target sparc_elf32_vxworks_vec;
@@ -965,10 +924,6 @@ static const bfd_target * const _bfd_target_vector[] =
 
        &am33_elf32_linux_vec,
 
-       &aout0_be_vec,
-#ifdef BFD64
-       &aout64_vec,    /* Only compiled if host has long-long support.  */
-#endif
 #if 0
        /* Since a.out files lack decent magic numbers, no way to recognize
           which kind of a.out file it is.  */
@@ -978,20 +933,10 @@ static const bfd_target * const _bfd_target_vector[] =
        &arc_elf32_be_vec,
        &arc_elf32_le_vec,
 
-#if 0
-       /* We have no way of distinguishing these from other a.out variants.  */
-       &arm_aout_be_vec,
-       &arm_aout_le_vec,
-#endif
-       &arm_aout_nbsd_vec,
-#if 0
-       /* We have no way of distinguishing these from other a.out variants.  */
-       &arm_aout_riscix_vec,
-#endif
-       &arm_coff_be_vec,
-       &arm_coff_le_vec,
        &arm_elf32_be_vec,
        &arm_elf32_le_vec,
+       &arm_elf32_fdpic_be_vec,
+       &arm_elf32_fdpic_le_vec,
        &arm_elf32_symbian_be_vec,
        &arm_elf32_symbian_le_vec,
        &arm_elf32_vxworks_be_vec,
@@ -999,14 +944,10 @@ static const bfd_target * const _bfd_target_vector[] =
        &arm_mach_o_vec,
        &arm_pe_be_vec,
        &arm_pe_le_vec,
-       &arm_pe_epoc_be_vec,
-       &arm_pe_epoc_le_vec,
        &arm_pe_wince_be_vec,
        &arm_pe_wince_le_vec,
        &arm_pei_be_vec,
        &arm_pei_le_vec,
-       &arm_pei_epoc_be_vec,
-       &arm_pei_epoc_le_vec,
        &arm_pei_wince_be_vec,
        &arm_pei_wince_le_vec,
 
@@ -1024,6 +965,9 @@ static const bfd_target * const _bfd_target_vector[] =
 
        &crx_elf32_vec,
 
+       &csky_elf32_be_vec,
+       &csky_elf32_le_vec,
+
        &d10v_elf32_vec,
        &d30v_elf32_vec,
 
@@ -1061,22 +1005,7 @@ static const bfd_target * const _bfd_target_vector[] =
 
        &i386_aout_vec,
        &i386_aout_bsd_vec,
-#if 0
-       &i386_aout_dynix_vec,
-#endif
-       &i386_aout_fbsd_vec,
-#if 0
-       /* Since a.out files lack decent magic numbers, no way to recognize
-          which kind of a.out file it is.  */
-       &i386_aout_linux_vec,
-#endif
        &i386_aout_lynx_vec,
-#if 0
-       /* No distinguishing features for Mach 3 executables.  */
-       &i386_aout_mach3_vec,
-#endif
-       &i386_aout_nbsd_vec,
-       &i386_aout_os9k_vec,
        &i386_coff_vec,
        &i386_coff_go32_vec,
        &i386_coff_go32stubbed_vec,
@@ -1094,6 +1023,11 @@ static const bfd_target * const _bfd_target_vector[] =
        &iamcu_elf32_vec,
 
 #ifdef BFD64
+       &bpf_elf64_be_vec,
+       &bpf_elf64_le_vec,
+#endif
+
+#ifdef BFD64
 #if 0
        &ia64_elf32_be_vec,
 #endif
@@ -1127,27 +1061,9 @@ static const bfd_target * const _bfd_target_vector[] =
        &m68hc11_elf32_vec,
        &m68hc12_elf32_vec,
 
-#if 0
-       &m68k_aout_4knbsd_vec,
-       /* Clashes with sparc_aout_sunos_be_vec magic no.  */
-       &m68k_aout_hp300bsd_vec,
-#endif
-       &m68k_aout_hp300hpux_vec,
-#if 0
-       /* Since a.out files lack decent magic numbers, no way to recognize
-          which kind of a.out file it is.  */
-       &m68k_aout_linux_vec,
-#endif
-       &m68k_aout_nbsd_vec,
-       &m68k_coff_vec,
-#if 0
-       &m68k_coff_apollo_vec,
-       &m68k_coff_aux_vec,
-#endif
-       &m68k_coff_sysv_vec,
-       &m68k_coff_un_vec,
        &m68k_elf32_vec,
-       &m68k_versados_vec,
+
+       &s12z_elf32_vec,
 
        &mach_o_be_vec,
        &mach_o_le_vec,
@@ -1166,11 +1082,6 @@ static const bfd_target * const _bfd_target_vector[] =
 
        &microblaze_elf32_vec,
 
-#if 0
-       /* No one seems to use this.  */
-       &mips_aout_be_vec,
-#endif
-       &mips_aout_le_vec,
        &mips_ecoff_be_vec,
        &mips_ecoff_le_vec,
        &mips_ecoff_bele_vec,
@@ -1196,8 +1107,6 @@ static const bfd_target * const _bfd_target_vector[] =
        &mips_elf64_tradfbsd_be_vec,
        &mips_elf64_tradfbsd_le_vec,
 #endif
-       &mips_pe_le_vec,
-       &mips_pei_le_vec,
 
 #ifdef BFD64
        &mmix_elf64_vec,
@@ -1220,21 +1129,16 @@ static const bfd_target * const _bfd_target_vector[] =
        &nds32_elf32_linux_be_vec,
        &nds32_elf32_linux_le_vec,
 
+#ifdef BFD64
+       &nfp_elf64_vec,
+#endif
+
        &nios2_elf32_be_vec,
        &nios2_elf32_le_vec,
 
        &ns32k_aout_pc532mach_vec,
        &ns32k_aout_pc532nbsd_vec,
 
-#if 0
-       /* We have no oasys tools anymore, so we can't test any of this
-          anymore. If you want to test the stuff yourself, go ahead...
-          steve@cygnus.com
-          Worse, since there is no magic number for archives, there
-          can be annoying target mis-matches.  */
-       &oasys_vec,
-#endif
-
        &or1k_elf32_vec,
 
        &pdp11_aout_vec,
@@ -1245,10 +1149,6 @@ static const bfd_target * const _bfd_target_vector[] =
        &pj_elf32_vec,
        &pj_elf32_le_vec,
 
-#if BFD_SUPPORTS_PLUGINS
-       &plugin_vec,
-#endif
-
        &powerpc_boot_vec,
        &powerpc_elf32_vec,
        &powerpc_elf32_le_vec,
@@ -1296,20 +1196,6 @@ static const bfd_target * const _bfd_target_vector[] =
        &score_elf32_le_vec,
 #endif
 
-#ifdef BFD64
-       &sh64_elf32_vec,
-       &sh64_elf32_le_vec,
-       &sh64_elf32_linux_vec,
-       &sh64_elf32_linux_be_vec,
-       &sh64_elf32_nbsd_vec,
-       &sh64_elf32_nbsd_le_vec,
-       &sh64_elf64_vec,
-       &sh64_elf64_le_vec,
-       &sh64_elf64_linux_vec,
-       &sh64_elf64_linux_be_vec,
-       &sh64_elf64_nbsd_vec,
-       &sh64_elf64_nbsd_le_vec,
-#endif
        &sh_coff_vec,
        &sh_coff_le_vec,
        &sh_coff_small_vec,
@@ -1322,19 +1208,11 @@ static const bfd_target * const _bfd_target_vector[] =
        &sh_elf32_linux_be_vec,
        &sh_elf32_nbsd_vec,
        &sh_elf32_nbsd_le_vec,
-       &sh_elf32_symbian_le_vec,
        &sh_elf32_vxworks_vec,
        &sh_elf32_vxworks_le_vec,
        &sh_pe_le_vec,
        &sh_pei_le_vec,
 
-       &sparc_aout_le_vec,
-       &sparc_aout_linux_vec,
-       &sparc_aout_lynx_vec,
-       &sparc_aout_nbsd_vec,
-       &sparc_aout_sunos_be_vec,
-       &sparc_coff_vec,
-       &sparc_coff_lynx_vec,
        &sparc_elf32_vec,
        &sparc_elf32_sol2_vec,
        &sparc_elf32_vxworks_vec,
@@ -1423,6 +1301,10 @@ static const bfd_target * const _bfd_target_vector[] =
 /* Likewise for ihex.  */
        &ihex_vec,
 
+#if BFD_SUPPORTS_PLUGINS
+       &plugin_vec,
+#endif
+
 /* Add any required traditional-core-file-handler.  */
 
 #ifdef AIX386_CORE
@@ -1832,7 +1714,6 @@ bfd_flavour_name (enum bfd_flavour flavour)
     case bfd_target_ecoff_flavour: return "ECOFF";
     case bfd_target_xcoff_flavour: return "XCOFF";
     case bfd_target_elf_flavour: return "ELF";
-    case bfd_target_oasys_flavour: return "Oasys";
     case bfd_target_tekhex_flavour: return "Tekhex";
     case bfd_target_srec_flavour: return "Srec";
     case bfd_target_verilog_flavour: return "Verilog";