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.
This commit is contained in:
Alan Modra 2017-08-05 23:28:21 +09:30
parent a66930b357
commit 55ef6584ca
4 changed files with 17 additions and 10 deletions

View File

@ -1,3 +1,8 @@
2017-08-05 Alan Modra <amodra@gmail.com>
* elf32-hppa.c (elf32_hppa_set_gp): Don't require an
hppa_link_hash_table.
2017-08-02 Max Filippov <jcmvbkbc@gmail.com>
* xtensa-isa.c (xtensa_isa_init): Don't update lookup table

View File

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

View File

@ -1,3 +1,7 @@
2017-08-05 Alan Modra <amodra@gmail.com>
* testsuite/ld-unique/pr21529.d: Don't xfail hppa.
2017-08-04 H.J. Lu <hongjiu.lu@intel.com>
PR ld/21904

View File

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