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.
This commit is contained in:
Alan Modra 2016-12-23 23:28:38 +10:30
parent 865422fafa
commit b9fc2576a1
4 changed files with 31 additions and 102 deletions

View File

@ -1,3 +1,17 @@
2016-12-23 Alan Modra <amodra@gmail.com>
* 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 <amodra@gmail.com>
PR binutils/20464

View File

@ -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 *,

View File

@ -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 *,

View File

@ -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;