From: Jan Beulich Date: Mon, 7 Apr 2025 10:46:16 +0000 (+0200) Subject: bfd/COFF: drop link_add_one_symbol() hook X-Git-Tag: binutils-2_45~957 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0b4a7d8c8a037a671e588db9a190c0194dd1ec43;p=thirdparty%2Fbinutils-gdb.git bfd/COFF: drop link_add_one_symbol() hook The need for this has disappeared with dc12032bca08 ("Remove m68k-aout and m68k-coff support"); avoid the unnecessary indirection. Sadly, with ld/pe-dll.c using the wrapper, the removal requires moving the declaration out of libcoff.h, to properly export the underlying BFD function. --- diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h index 7a8318e19af..ec60f23f61b 100644 --- a/bfd/bfd-in2.h +++ b/bfd/bfd-in2.h @@ -2913,6 +2913,18 @@ const char *bfd_format_string (bfd_format format); && bfd_is_abs_section ((H)->u.def.section) \ && !(H)->rel_from_abs) +bool _bfd_generic_link_add_one_symbol + (struct bfd_link_info *info, + bfd *abfd, + const char *name, + flagword flags, + asection *section, + bfd_vma value, + const char *string, + bool copy, + bool collect, + struct bfd_link_hash_entry **hashp); + bool bfd_link_align_section (asection *, unsigned int); bool bfd_link_split_section (bfd *abfd, asection *sec); diff --git a/bfd/coff-alpha.c b/bfd/coff-alpha.c index 2798efd299a..e2f1a4d2808 100644 --- a/bfd/coff-alpha.c +++ b/bfd/coff-alpha.c @@ -2359,7 +2359,7 @@ static const struct ecoff_backend_data alpha_ecoff_backend_data = alpha_ecoff_mkobject_hook, _bfd_ecoff_styp_to_sec_flags, _bfd_ecoff_set_alignment_hook, _bfd_ecoff_slurp_symbol_table, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL + NULL, NULL, NULL, }, /* Supported architecture. */ bfd_arch_alpha, diff --git a/bfd/coff-arm.c b/bfd/coff-arm.c index ab5f7b0663f..ee574518b77 100644 --- a/bfd/coff-arm.c +++ b/bfd/coff-arm.c @@ -1876,8 +1876,8 @@ record_arm_to_thumb_glue (struct bfd_link_info * info, it. */ bh = NULL; val = globals->arm_glue_size + 1; - bfd_coff_link_add_one_symbol (info, globals->bfd_of_glue_owner, tmp_name, - BSF_GLOBAL, s, val, NULL, true, false, &bh); + _bfd_generic_link_add_one_symbol (info, globals->bfd_of_glue_owner, tmp_name, + BSF_GLOBAL, s, val, NULL, true, false, &bh); free (tmp_name); @@ -1929,8 +1929,8 @@ record_thumb_to_arm_glue (struct bfd_link_info * info, bh = NULL; val = globals->thumb_glue_size + 1; - bfd_coff_link_add_one_symbol (info, globals->bfd_of_glue_owner, tmp_name, - BSF_GLOBAL, s, val, NULL, true, false, &bh); + _bfd_generic_link_add_one_symbol (info, globals->bfd_of_glue_owner, tmp_name, + BSF_GLOBAL, s, val, NULL, true, false, &bh); /* If we mark it 'thumb', the disassembler will do a better job. */ myh = (struct coff_link_hash_entry *) bh; @@ -1952,8 +1952,8 @@ record_thumb_to_arm_glue (struct bfd_link_info * info, bh = NULL; val = globals->thumb_glue_size + (globals->support_old_code ? 8 : 4); - bfd_coff_link_add_one_symbol (info, globals->bfd_of_glue_owner, tmp_name, - BSF_LOCAL, s, val, NULL, true, false, &bh); + _bfd_generic_link_add_one_symbol (info, globals->bfd_of_glue_owner, tmp_name, + BSF_LOCAL, s, val, NULL, true, false, &bh); free (tmp_name); diff --git a/bfd/coff-mips.c b/bfd/coff-mips.c index e2c632c8a0b..8c4d4f7bf73 100644 --- a/bfd/coff-mips.c +++ b/bfd/coff-mips.c @@ -1316,7 +1316,7 @@ static const struct ecoff_backend_data mips_ecoff_backend_data = _bfd_ecoff_mkobject_hook, _bfd_ecoff_styp_to_sec_flags, _bfd_ecoff_set_alignment_hook, _bfd_ecoff_slurp_symbol_table, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL + NULL, NULL, }, /* Supported architecture. */ bfd_arch_mips, diff --git a/bfd/coff-rs6000.c b/bfd/coff-rs6000.c index 7a20dba5d9c..ae9a0f613ab 100644 --- a/bfd/coff-rs6000.c +++ b/bfd/coff-rs6000.c @@ -4584,7 +4584,6 @@ static const struct xcoff_backend_data_rec bfd_xcoff_backend_data = xcoff_ppc_relocate_section, coff_rtype_to_howto, NULL, /* _bfd_coff_adjust_symndx */ - _bfd_generic_link_add_one_symbol, coff_link_output_has_begun, coff_final_link_postscript, NULL /* print_pdata. */ @@ -4774,7 +4773,6 @@ static const struct xcoff_backend_data_rec bfd_pmac_xcoff_backend_data = xcoff_ppc_relocate_section, coff_rtype_to_howto, NULL, /* _bfd_coff_adjust_symndx */ - _bfd_generic_link_add_one_symbol, coff_link_output_has_begun, coff_final_link_postscript, NULL /* print_pdata. */ diff --git a/bfd/coff-sh.c b/bfd/coff-sh.c index 275c4f5c2b5..c3e0e420230 100644 --- a/bfd/coff-sh.c +++ b/bfd/coff-sh.c @@ -3108,7 +3108,7 @@ static const bfd_coff_backend_data bfd_coff_small_swap_table = coff_print_aux, coff_reloc16_extra_cases, coff_reloc16_estimate, coff_classify_symbol, coff_compute_section_file_positions, coff_start_final_link, coff_relocate_section, coff_rtype_to_howto, - coff_adjust_symndx, coff_link_add_one_symbol, + coff_adjust_symndx, coff_link_output_has_begun, coff_final_link_postscript, bfd_pe_print_pdata }; diff --git a/bfd/coff64-rs6000.c b/bfd/coff64-rs6000.c index 5a4bcbf206a..ec7ed08d3d0 100644 --- a/bfd/coff64-rs6000.c +++ b/bfd/coff64-rs6000.c @@ -2495,7 +2495,6 @@ static const struct xcoff_backend_data_rec bfd_xcoff_backend_data = xcoff64_ppc_relocate_section, coff_rtype_to_howto, NULL, /* _bfd_coff_adjust_symndx */ - _bfd_generic_link_add_one_symbol, coff_link_output_has_begun, coff_final_link_postscript, NULL /* print_pdata. */ @@ -2768,7 +2767,6 @@ static const struct xcoff_backend_data_rec bfd_xcoff_aix5_backend_data = xcoff64_ppc_relocate_section, coff_rtype_to_howto, NULL, /* _bfd_coff_adjust_symndx */ - _bfd_generic_link_add_one_symbol, coff_link_output_has_begun, coff_final_link_postscript, NULL /* print_pdata. */ diff --git a/bfd/coffcode.h b/bfd/coffcode.h index 325a8ab1b2f..bd0374fbfdd 100644 --- a/bfd/coffcode.h +++ b/bfd/coffcode.h @@ -1516,11 +1516,6 @@ CODE_FRAGMENT . (bfd *, struct bfd_link_info *, bfd *, asection *, . struct internal_reloc *, bool *); . -. bool (*_bfd_coff_link_add_one_symbol) -. (struct bfd_link_info *, bfd *, const char *, flagword, -. asection *, bfd_vma, const char *, bool, bool, -. struct bfd_link_hash_entry **); -. . bool (*_bfd_coff_link_output_has_begun) . (bfd *, struct coff_final_link_info *); . @@ -1659,10 +1654,6 @@ INTERNAL .#define bfd_coff_adjust_symndx(obfd, info, ibfd, sec, rel, adjustedp)\ . ((coff_backend_info (abfd)->_bfd_coff_adjust_symndx)\ . (obfd, info, ibfd, sec, rel, adjustedp)) -.#define bfd_coff_link_add_one_symbol(info, abfd, name, flags, section,\ -. value, string, cp, coll, hashp)\ -. ((coff_backend_info (abfd)->_bfd_coff_link_add_one_symbol)\ -. (info, abfd, name, flags, section, value, string, cp, coll, hashp)) . .#define bfd_coff_link_output_has_begun(a,p) \ . ((coff_backend_info (a)->_bfd_coff_link_output_has_begun) (a, p)) @@ -5513,10 +5504,6 @@ dummy_reloc16_extra_cases (bfd *abfd ATTRIBUTE_UNUSED, #define coff_adjust_symndx NULL #endif -#ifndef coff_link_add_one_symbol -#define coff_link_add_one_symbol _bfd_generic_link_add_one_symbol -#endif - #ifndef coff_link_output_has_begun static bool @@ -5615,7 +5602,7 @@ static const bfd_coff_backend_data bfd_coff_std_swap_table ATTRIBUTE_UNUSED = coff_print_aux, coff_reloc16_extra_cases, coff_reloc16_estimate, coff_classify_symbol, coff_compute_section_file_positions, coff_start_final_link, coff_relocate_section, coff_rtype_to_howto, - coff_adjust_symndx, coff_link_add_one_symbol, + coff_adjust_symndx, coff_link_output_has_begun, coff_final_link_postscript, bfd_pe_print_pdata }; @@ -5656,7 +5643,7 @@ static const bfd_coff_backend_data ticoff0_swap_table = coff_print_aux, coff_reloc16_extra_cases, coff_reloc16_estimate, coff_classify_symbol, coff_compute_section_file_positions, coff_start_final_link, coff_relocate_section, coff_rtype_to_howto, - coff_adjust_symndx, coff_link_add_one_symbol, + coff_adjust_symndx, coff_link_output_has_begun, coff_final_link_postscript, bfd_pe_print_pdata }; @@ -5698,7 +5685,7 @@ static const bfd_coff_backend_data ticoff1_swap_table = coff_print_aux, coff_reloc16_extra_cases, coff_reloc16_estimate, coff_classify_symbol, coff_compute_section_file_positions, coff_start_final_link, coff_relocate_section, coff_rtype_to_howto, - coff_adjust_symndx, coff_link_add_one_symbol, + coff_adjust_symndx, coff_link_output_has_begun, coff_final_link_postscript, bfd_pe_print_pdata /* huh */ }; @@ -5941,7 +5928,7 @@ static const bfd_coff_backend_data bigobj_swap_table = coff_print_aux, coff_reloc16_extra_cases, coff_reloc16_estimate, coff_classify_symbol, coff_compute_section_file_positions, coff_start_final_link, coff_relocate_section, coff_rtype_to_howto, - coff_adjust_symndx, coff_link_add_one_symbol, + coff_adjust_symndx, coff_link_output_has_begun, coff_final_link_postscript, bfd_pe_print_pdata /* huh */ }; diff --git a/bfd/cofflink.c b/bfd/cofflink.c index 876aed7a0d2..501731bd811 100644 --- a/bfd/cofflink.c +++ b/bfd/cofflink.c @@ -445,7 +445,7 @@ coff_link_add_symbols (bfd *abfd, if (addit) { - if (! (bfd_coff_link_add_one_symbol + if (! (_bfd_generic_link_add_one_symbol (info, abfd, name, flags, section, value, (const char *) NULL, copy, false, (struct bfd_link_hash_entry **) sym_hash))) diff --git a/bfd/libbfd-in.h b/bfd/libbfd-in.h index b2f70fbfdac..ae6d3039017 100644 --- a/bfd/libbfd-in.h +++ b/bfd/libbfd-in.h @@ -645,12 +645,6 @@ extern bool _bfd_generic_link_add_archive_symbols /* Forward declaration to avoid prototype errors. */ typedef struct bfd_link_hash_entry _bfd_link_hash_entry; -/* Generic routine to add a single symbol. */ -extern bool _bfd_generic_link_add_one_symbol - (struct bfd_link_info *, bfd *, const char *name, flagword, - asection *, bfd_vma, const char *, bool copy, - bool constructor, struct bfd_link_hash_entry **) ATTRIBUTE_HIDDEN; - /* Generic routine to mark section as supplying symbols only. */ extern void _bfd_generic_link_just_syms (asection *, struct bfd_link_info *) ATTRIBUTE_HIDDEN; diff --git a/bfd/libbfd.h b/bfd/libbfd.h index 4f6f5ea2f8a..d367fea33d3 100644 --- a/bfd/libbfd.h +++ b/bfd/libbfd.h @@ -651,12 +651,6 @@ extern bool _bfd_generic_link_add_archive_symbols /* Forward declaration to avoid prototype errors. */ typedef struct bfd_link_hash_entry _bfd_link_hash_entry; -/* Generic routine to add a single symbol. */ -extern bool _bfd_generic_link_add_one_symbol - (struct bfd_link_info *, bfd *, const char *name, flagword, - asection *, bfd_vma, const char *, bool copy, - bool constructor, struct bfd_link_hash_entry **) ATTRIBUTE_HIDDEN; - /* Generic routine to mark section as supplying symbols only. */ extern void _bfd_generic_link_just_syms (asection *, struct bfd_link_info *) ATTRIBUTE_HIDDEN; diff --git a/bfd/libcoff.h b/bfd/libcoff.h index d0cfd09709a..05ebe358363 100644 --- a/bfd/libcoff.h +++ b/bfd/libcoff.h @@ -864,11 +864,6 @@ typedef struct (bfd *, struct bfd_link_info *, bfd *, asection *, struct internal_reloc *, bool *); - bool (*_bfd_coff_link_add_one_symbol) - (struct bfd_link_info *, bfd *, const char *, flagword, - asection *, bfd_vma, const char *, bool, bool, - struct bfd_link_hash_entry **); - bool (*_bfd_coff_link_output_has_begun) (bfd *, struct coff_final_link_info *); @@ -1005,10 +1000,6 @@ typedef struct #define bfd_coff_adjust_symndx(obfd, info, ibfd, sec, rel, adjustedp)\ ((coff_backend_info (abfd)->_bfd_coff_adjust_symndx)\ (obfd, info, ibfd, sec, rel, adjustedp)) -#define bfd_coff_link_add_one_symbol(info, abfd, name, flags, section,\ - value, string, cp, coll, hashp)\ - ((coff_backend_info (abfd)->_bfd_coff_link_add_one_symbol)\ - (info, abfd, name, flags, section, value, string, cp, coll, hashp)) #define bfd_coff_link_output_has_begun(a,p) \ ((coff_backend_info (a)->_bfd_coff_link_output_has_begun) (a, p)) diff --git a/bfd/linker.c b/bfd/linker.c index 2a4b8f02fe6..a9a23e5b9de 100644 --- a/bfd/linker.c +++ b/bfd/linker.c @@ -1378,7 +1378,25 @@ hash_entry_bfd (struct bfd_link_hash_entry *h) /*NOTREACHED*/ } -/* Add a symbol to the global hash table. +/* +FUNCTION + _bfd_generic_link_add_one_symbol + +SYNOPSIS + bool _bfd_generic_link_add_one_symbol + (struct bfd_link_info *info, + bfd *abfd, + const char *name, + flagword flags, + asection *section, + bfd_vma value, + const char *string, + bool copy, + bool collect, + struct bfd_link_hash_entry **hashp); + +DESCRIPTION + Add a symbol to the global hash table. ABFD is the BFD the symbol comes from. NAME is the name of the symbol. FLAGS is the BSF_* bits associated with the symbol. diff --git a/ld/pe-dll.c b/ld/pe-dll.c index de1cfafb65b..4a2ea036518 100644 --- a/ld/pe-dll.c +++ b/ld/pe-dll.c @@ -2639,9 +2639,9 @@ make_import_fixup_mark (arelent *rel, char *name) memcpy (fixup_name, buf, prefix_len); bh = NULL; - bfd_coff_link_add_one_symbol (&link_info, abfd, fixup_name, BSF_GLOBAL, - current_sec, /* sym->section, */ - rel->address, NULL, true, false, &bh); + _bfd_generic_link_add_one_symbol (&link_info, abfd, fixup_name, BSF_GLOBAL, + current_sec, /* sym->section, */ + rel->address, NULL, true, false, &bh); return bh->root.string; }