diff options
author | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2018-02-15 15:55:11 +0100 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2018-02-15 15:57:50 +0100 |
commit | e513bd38a6b91401947d90ba5f301f01d3991b8e (patch) | |
tree | eda7320cc1ac81684d26c0c5d9ab24f19c80effb /bfd/elfxx-sparc.c | |
parent | 85046ae23f853bfd01db6b4a840e80220487bffd (diff) | |
download | fsf-binutils-gdb-e513bd38a6b91401947d90ba5f301f01d3991b8e.zip fsf-binutils-gdb-e513bd38a6b91401947d90ba5f301f01d3991b8e.tar.gz fsf-binutils-gdb-e513bd38a6b91401947d90ba5f301f01d3991b8e.tar.bz2 |
PR ld/22832 on SPARC.
The fix for PR ld/22727 on SPARC passed TRUE as the 'create' argument
in the call to bfd_link_hash_lookup. It turns out this was a bad idea
because, if the symbol is created at this point, the link will abort
later in elf_link_output_extsym. This changes the TRUE into a FALSE
and puts an assertion on the result of the call, making it easier to
debug the issue; that's exactly in keeping with what Gold does.
bfd/
* elfxx-sparc.c (_bfd_sparc_elf_check_relocs) <R_SPARC_TLS_GD_CALL>:
Pass FALSE instead of TRUE as 'create' argument to bfd_link_hash_lookup
and assert that the result of the call is not NULL.
Diffstat (limited to 'bfd/elfxx-sparc.c')
-rw-r--r-- | bfd/elfxx-sparc.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/bfd/elfxx-sparc.c b/bfd/elfxx-sparc.c index 83ead75..10c5acd 100644 --- a/bfd/elfxx-sparc.c +++ b/bfd/elfxx-sparc.c @@ -1604,8 +1604,9 @@ _bfd_sparc_elf_check_relocs (bfd *abfd, struct bfd_link_info *info, /* Essentially R_SPARC_WPLT30 relocs against __tls_get_addr. */ h = (struct elf_link_hash_entry *) - bfd_link_hash_lookup (info->hash, "__tls_get_addr", TRUE, + bfd_link_hash_lookup (info->hash, "__tls_get_addr", FALSE, FALSE, TRUE); + BFD_ASSERT (h != NULL); /* Fall through */ case R_SPARC_WPLT30: |