Fix segfault in ARC linker when generating got entries for local symbols.

bfd	* arc-got.h (relocate_fix_got_relocs_for_got_info): Handle the case
	where there's no elf_link_hash_entry while processing GOT_NORMAL got
	entries.

ld	* testsuite/ld-arc/got-01.d: New file.
	* testsuite/ld-arc/got-01.s: New file.
This commit is contained in:
Cupertino Miranda 2016-07-22 15:10:31 +01:00 committed by Nick Clifton
parent 70ad8739d8
commit c02d11a585
5 changed files with 34 additions and 13 deletions

View File

@ -1,3 +1,9 @@
2016-07-22 Cupertino Miranda <cmiranda@synopsys.com>
* arc-got.h (relocate_fix_got_relocs_for_got_info): Handle the
case where there's no elf_link_hash_entry while processing
GOT_NORMAL got entries.
2016-07-21 H.J. Lu <hongjiu.lu@intel.com>
* version.m4 (BFD_VERSION): Set to 2.27.51.

View File

@ -369,12 +369,21 @@ relocate_fix_got_relocs_for_got_info (struct got_entry ** list_p,
= reloc_data->sym_section->output_section->vma
+ reloc_data->sym_section->output_offset;
if (h->root.type != bfd_link_hash_undefweak)
if (h != NULL
&& h->root.type == bfd_link_hash_undefweak)
ARC_DEBUG ("arc_info: PATCHED: NOT_PATCHED "
"@ %#08lx for sym %s in got offset %#lx "
"(is undefweak)\n",
(long) (htab->sgot->output_section->vma
+ htab->sgot->output_offset
+ entry->offset),
symbol_name,
(long) entry->offset);
else
{
bfd_put_32 (output_bfd,
reloc_data->sym_value + sec_vma,
htab->sgot->contents + entry->offset);
ARC_DEBUG ("arc_info: PATCHED: %#08lx "
"@ %#08lx for sym %s in got offset %#lx\n",
(long) (reloc_data->sym_value + sec_vma),
@ -383,17 +392,6 @@ relocate_fix_got_relocs_for_got_info (struct got_entry ** list_p,
symbol_name,
(long) entry->offset);
}
else
{
ARC_DEBUG ("arc_info: PATCHED: NOT_PATCHED "
"@ %#08lx for sym %s in got offset %#lx "
"(is undefweak)\n",
(long) (htab->sgot->output_section->vma
+ htab->sgot->output_offset
+ entry->offset),
symbol_name,
(long) entry->offset);
}
}
break;
default:

View File

@ -1,3 +1,8 @@
2016-07-22 Cupertino Miranda <cmiranda@synopsys.com>
* testsuite/ld-arc/got-01.d: New file.
* testsuite/ld-arc/got-01.s: New file.
2016-07-21 H.J. Lu <hongjiu.lu@intel.com>
* configure: Regenerated.

View File

@ -0,0 +1,7 @@
#source: got-01.s
#as: -mcpu=arc700
#ld:
#readelf: -S
There are . section headers, starting at offset 0x[0-9a-f]+:
#...

View File

@ -0,0 +1,5 @@
.text
.global __start
__start:
foo:
ld r0, [pcl, foo@gotpc]