diff options
Diffstat (limited to 'bfd/linker.c')
-rw-r--r-- | bfd/linker.c | 107 |
1 files changed, 17 insertions, 90 deletions
diff --git a/bfd/linker.c b/bfd/linker.c index 067ea9cb09c..9763b84fb85 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; |