summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2016-12-23 23:28:38 +1030
committerAlan Modra <amodra@gmail.com>2016-12-24 00:15:58 +1030
commitb9fc2576a13367070c741c7ea1d364a483eed0e4 (patch)
treef1c929b042a8fb0767322dd277909ec4c8f65c9d
parent865422fafaf387745b2979d47b6f448d28e0edb8 (diff)
downloadbinutils-gdb-b9fc2576a13367070c741c7ea1d364a483eed0e4.tar.gz
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.
-rw-r--r--bfd/ChangeLog14
-rw-r--r--bfd/libbfd-in.h6
-rw-r--r--bfd/libbfd.h6
-rw-r--r--bfd/linker.c107
4 files changed, 31 insertions, 102 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index b7afc73786f..ecab2705caa 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,19 @@
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
PR binutils/14625
* configure.ac: Revert 2016-05-25 configure change setting
diff --git a/bfd/libbfd-in.h b/bfd/libbfd-in.h
index fec1b891493..db2f143ff5d 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 ee8516340e1..30be5ddd7e5 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 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;