From b9fc2576a13367070c741c7ea1d364a483eed0e4 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Fri, 23 Dec 2016 23:28:38 +1030 Subject: [PATCH] Remove "collect" forms of generic linker add symbols functions Nothing calls them and they were in the way of a bug fix. * linker.c (generic_link_add_symbols): Delete. Merge into.. (_bfd_generic_link_add_symbols): ..here. (generic_link_check_archive_element_no_collect): Delete. (generic_link_check_archive_element_collect): Likewise. (generic_link_add_object_symbols): Remove "collect" param. Update callers. (generic_link_add_symbol_list): Likewise. (generic_link_check_archive_element): Likewise. Call bfd_link_add_symbols rather than generic_link_add_object_symbols. * libbfd-in.h (_bfd_generic_link_add_symbols_collect): Delete. * libbfd.h: Regenerate. --- bfd/ChangeLog | 14 +++++++ bfd/libbfd-in.h | 6 --- bfd/libbfd.h | 6 --- bfd/linker.c | 107 ++++++++---------------------------------------- 4 files changed, 31 insertions(+), 102 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index b7afc73786..ecab2705ca 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,17 @@ +2016-12-23 Alan Modra + + * linker.c (generic_link_add_symbols): Delete. Merge into.. + (_bfd_generic_link_add_symbols): ..here. + (generic_link_check_archive_element_no_collect): Delete. + (generic_link_check_archive_element_collect): Likewise. + (generic_link_add_object_symbols): Remove "collect" param. Update + callers. + (generic_link_add_symbol_list): Likewise. + (generic_link_check_archive_element): Likewise. Call + bfd_link_add_symbols rather than generic_link_add_object_symbols. + * libbfd-in.h (_bfd_generic_link_add_symbols_collect): Delete. + * libbfd.h: Regenerate. + 2016-12-23 Alan Modra PR binutils/20464 diff --git a/bfd/libbfd-in.h b/bfd/libbfd-in.h index fec1b89149..db2f143ff5 100644 --- a/bfd/libbfd-in.h +++ b/bfd/libbfd-in.h @@ -613,12 +613,6 @@ extern void _bfd_generic_link_hash_table_free extern bfd_boolean _bfd_generic_link_add_symbols (bfd *, struct bfd_link_info *); -/* Generic add symbol routine. This version is used by targets for - which the linker must collect constructors and destructors by name, - as the collect2 program does. */ -extern bfd_boolean _bfd_generic_link_add_symbols_collect - (bfd *, struct bfd_link_info *); - /* Generic archive add symbol routine. */ extern bfd_boolean _bfd_generic_link_add_archive_symbols (bfd *, struct bfd_link_info *, diff --git a/bfd/libbfd.h b/bfd/libbfd.h index ee8516340e..30be5ddd7e 100644 --- a/bfd/libbfd.h +++ b/bfd/libbfd.h @@ -618,12 +618,6 @@ extern void _bfd_generic_link_hash_table_free extern bfd_boolean _bfd_generic_link_add_symbols (bfd *, struct bfd_link_info *); -/* Generic add symbol routine. This version is used by targets for - which the linker must collect constructors and destructors by name, - as the collect2 program does. */ -extern bfd_boolean _bfd_generic_link_add_symbols_collect - (bfd *, struct bfd_link_info *); - /* Generic archive add symbol routine. */ extern bfd_boolean _bfd_generic_link_add_archive_symbols (bfd *, struct bfd_link_info *, diff --git a/bfd/linker.c b/bfd/linker.c index 067ea9cb09..9763b84fb8 100644 --- a/bfd/linker.c +++ b/bfd/linker.c @@ -403,21 +403,12 @@ SUBSUBSECTION */ static bfd_boolean generic_link_add_object_symbols - (bfd *, struct bfd_link_info *, bfd_boolean collect); -static bfd_boolean generic_link_add_symbols - (bfd *, struct bfd_link_info *, bfd_boolean); -static bfd_boolean generic_link_check_archive_element_no_collect - (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, const char *, - bfd_boolean *); -static bfd_boolean generic_link_check_archive_element_collect - (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, const char *, - bfd_boolean *); + (bfd *, struct bfd_link_info *); static bfd_boolean generic_link_check_archive_element (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, const char *, - bfd_boolean *, bfd_boolean); + bfd_boolean *); static bfd_boolean generic_link_add_symbol_list - (bfd *, struct bfd_link_info *, bfd_size_type count, asymbol **, - bfd_boolean); + (bfd *, struct bfd_link_info *, bfd_size_type count, asymbol **); static bfd_boolean generic_add_output_symbol (bfd *, size_t *psymalloc, asymbol *); static bfd_boolean default_data_link_order @@ -816,29 +807,6 @@ bfd_generic_link_read_symbols (bfd *abfd) return TRUE; } -/* Generic function to add symbols to from an object file to the - global hash table. This version does not automatically collect - constructors by name. */ - -bfd_boolean -_bfd_generic_link_add_symbols (bfd *abfd, struct bfd_link_info *info) -{ - return generic_link_add_symbols (abfd, info, FALSE); -} - -/* Generic function to add symbols from an object file to the global - hash table. This version automatically collects constructors by - name, as the collect2 program does. It should be used for any - target which does not provide some other mechanism for setting up - constructors and destructors; these are approximately those targets - for which gcc uses collect2 and do not support stabs. */ - -bfd_boolean -_bfd_generic_link_add_symbols_collect (bfd *abfd, struct bfd_link_info *info) -{ - return generic_link_add_symbols (abfd, info, TRUE); -} - /* Indicate that we are only retrieving symbol values from this section. We want the symbols to act as though the values in the file are absolute. */ @@ -862,26 +830,22 @@ _bfd_generic_copy_link_hash_symbol_type (bfd *abfd ATTRIBUTE_UNUSED, { } -/* Add symbols from an object file to the global hash table. */ +/* Generic function to add symbols from an object file to the + global hash table. */ -static bfd_boolean -generic_link_add_symbols (bfd *abfd, - struct bfd_link_info *info, - bfd_boolean collect) +bfd_boolean +_bfd_generic_link_add_symbols (bfd *abfd, struct bfd_link_info *info) { bfd_boolean ret; switch (bfd_get_format (abfd)) { case bfd_object: - ret = generic_link_add_object_symbols (abfd, info, collect); + ret = generic_link_add_object_symbols (abfd, info); break; case bfd_archive: ret = (_bfd_generic_link_add_archive_symbols - (abfd, info, - (collect - ? generic_link_check_archive_element_collect - : generic_link_check_archive_element_no_collect))); + (abfd, info, generic_link_check_archive_element)); break; default: bfd_set_error (bfd_error_wrong_format); @@ -895,8 +859,7 @@ generic_link_add_symbols (bfd *abfd, static bfd_boolean generic_link_add_object_symbols (bfd *abfd, - struct bfd_link_info *info, - bfd_boolean collect) + struct bfd_link_info *info) { bfd_size_type symcount; struct bfd_symbol **outsyms; @@ -905,7 +868,7 @@ generic_link_add_object_symbols (bfd *abfd, return FALSE; symcount = _bfd_generic_link_get_symcount (abfd); outsyms = _bfd_generic_link_get_symbols (abfd); - return generic_link_add_symbol_list (abfd, info, symcount, outsyms, collect); + return generic_link_add_symbol_list (abfd, info, symcount, outsyms); } /* Generic function to add symbols from an archive file to the global @@ -1044,47 +1007,14 @@ _bfd_generic_link_add_archive_symbols return FALSE; } -/* See if we should include an archive element. This version is used - when we do not want to automatically collect constructors based on - the symbol name, presumably because we have some other mechanism - for finding them. */ - -static bfd_boolean -generic_link_check_archive_element_no_collect (bfd *abfd, - struct bfd_link_info *info, - struct bfd_link_hash_entry *h, - const char *name, - bfd_boolean *pneeded) -{ - return generic_link_check_archive_element (abfd, info, h, name, pneeded, - FALSE); -} - -/* See if we should include an archive element. This version is used - when we want to automatically collect constructors based on the - symbol name, as collect2 does. */ - -static bfd_boolean -generic_link_check_archive_element_collect (bfd *abfd, - struct bfd_link_info *info, - struct bfd_link_hash_entry *h, - const char *name, - bfd_boolean *pneeded) -{ - return generic_link_check_archive_element (abfd, info, h, name, pneeded, - TRUE); -} - -/* See if we should include an archive element. Optionally collect - constructors. */ +/* See if we should include an archive element. */ static bfd_boolean generic_link_check_archive_element (bfd *abfd, struct bfd_link_info *info, struct bfd_link_hash_entry *h, const char *name ATTRIBUTE_UNUSED, - bfd_boolean *pneeded, - bfd_boolean collect) + bfd_boolean *pneeded) { asymbol **pp, **ppend; @@ -1134,7 +1064,7 @@ generic_link_check_archive_element (bfd *abfd, return FALSE; /* Potentially, the add_archive_element hook may have set a substitute BFD for us. */ - return generic_link_add_object_symbols (abfd, info, collect); + return generic_link_add_object_symbols (abfd, info); } /* P is a common symbol. */ @@ -1192,16 +1122,13 @@ generic_link_check_archive_element (bfd *abfd, /* Add the symbols from an object file to the global hash table. ABFD is the object file. INFO is the linker information. SYMBOL_COUNT - is the number of symbols. SYMBOLS is the list of symbols. COLLECT - is TRUE if constructors should be automatically collected by name - as is done by collect2. */ + is the number of symbols. SYMBOLS is the list of symbols. */ static bfd_boolean generic_link_add_symbol_list (bfd *abfd, struct bfd_link_info *info, bfd_size_type symbol_count, - asymbol **symbols, - bfd_boolean collect) + asymbol **symbols) { asymbol **pp, **ppend; @@ -1247,7 +1174,7 @@ generic_link_add_symbol_list (bfd *abfd, bh = NULL; if (! (_bfd_generic_link_add_one_symbol (info, abfd, name, p->flags, bfd_get_section (p), - p->value, string, FALSE, collect, &bh))) + p->value, string, FALSE, FALSE, &bh))) return FALSE; h = (struct generic_link_hash_entry *) bh; -- 2.34.1