From 55ef6584ca8466e293e9f1b310c0bf44500c11b6 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Sat, 5 Aug 2017 23:28:21 +0930 Subject: [PATCH] Don't fail in elf32_hppa_set_gp The base bfd_link_hash_table works fine here, the only thing to watch out for is to only set elf_gp if the output is ELF. bfd/ * elf32-hppa.c (elf32_hppa_set_gp): Don't require an hppa_link_hash_table. ld/ * testsuite/ld-unique/pr21529.d: Don't xfail hppa. --- bfd/ChangeLog | 5 +++++ bfd/elf32-hppa.c | 16 +++++++--------- ld/ChangeLog | 4 ++++ ld/testsuite/ld-unique/pr21529.d | 2 +- 4 files changed, 17 insertions(+), 10 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index fd93c306b6..63813e47f7 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2017-08-05 Alan Modra + + * elf32-hppa.c (elf32_hppa_set_gp): Don't require an + hppa_link_hash_table. + 2017-08-02 Max Filippov * xtensa-isa.c (xtensa_isa_init): Don't update lookup table diff --git a/bfd/elf32-hppa.c b/bfd/elf32-hppa.c index 1f2466e398..f63ff3f862 100644 --- a/bfd/elf32-hppa.c +++ b/bfd/elf32-hppa.c @@ -3090,13 +3090,8 @@ elf32_hppa_set_gp (bfd *abfd, struct bfd_link_info *info) struct bfd_link_hash_entry *h; asection *sec = NULL; bfd_vma gp_val = 0; - struct elf32_hppa_link_hash_table *htab; - htab = hppa_link_hash_table (info); - if (htab == NULL) - return FALSE; - - h = bfd_link_hash_lookup (&htab->etab.root, "$global$", FALSE, FALSE, FALSE); + h = bfd_link_hash_lookup (info->hash, "$global$", FALSE, FALSE, FALSE); if (h != NULL && (h->type == bfd_link_hash_defined @@ -3159,10 +3154,13 @@ elf32_hppa_set_gp (bfd *abfd, struct bfd_link_info *info) } } - if (sec != NULL && sec->output_section != NULL) - gp_val += sec->output_section->vma + sec->output_offset; + if (bfd_get_flavour (abfd) == bfd_target_elf_flavour) + { + if (sec != NULL && sec->output_section != NULL) + gp_val += sec->output_section->vma + sec->output_offset; - elf_gp (abfd) = gp_val; + elf_gp (abfd) = gp_val; + } return TRUE; } diff --git a/ld/ChangeLog b/ld/ChangeLog index 2cf0d4994b..eb002e9942 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,7 @@ +2017-08-05 Alan Modra + + * testsuite/ld-unique/pr21529.d: Don't xfail hppa. + 2017-08-04 H.J. Lu PR ld/21904 diff --git a/ld/testsuite/ld-unique/pr21529.d b/ld/testsuite/ld-unique/pr21529.d index 5d3436badb..ffc1a72440 100644 --- a/ld/testsuite/ld-unique/pr21529.d +++ b/ld/testsuite/ld-unique/pr21529.d @@ -1,6 +1,6 @@ #ld: --oformat binary -T pr21529.ld -e main #objdump: -s -b binary -#notarget: aarch64*-*-* arm*-*-* avr-*-* hppa-*-* ia64-*-* m68hc1*-*-* nds32*-*-* score-*-* +#notarget: aarch64*-*-* arm*-*-* avr-*-* ia64-*-* m68hc1*-*-* nds32*-*-* score-*-* # Skip targets which can't change output format to binary. #pass