mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-15 04:31:49 +08:00
Fix powerpc64 segfault caused by zero r_symndx relocs.
Fixes a segfault in ppc64_elf_tls_optimize found when testing R_PPC64_ENTRY, and potential for trouble in other places found by code inspection. * elf64-ppc.c (ppc64_elf_tls_optimize): Don't segfault on NULL symbol section or output section. (ppc64_elf_edit_toc): Similarly for ld -R objects. (ppc64_elf_size_stubs): Likewise.
This commit is contained in:
parent
3395762edd
commit
c27b8c2aeb
@ -1,3 +1,10 @@
|
||||
2015-12-02 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* elf64-ppc.c (ppc64_elf_tls_optimize): Don't segfault on NULL
|
||||
symbol section or output section.
|
||||
(ppc64_elf_edit_toc): Similarly for ld -R objects.
|
||||
(ppc64_elf_size_stubs): Likewise.
|
||||
|
||||
2015-12-01 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/19319
|
||||
|
@ -8391,7 +8391,8 @@ ppc64_elf_tls_optimize (struct bfd_link_info *info)
|
||||
if (h != NULL
|
||||
&& h->root.type == bfd_link_hash_undefweak)
|
||||
ok_tprel = TRUE;
|
||||
else
|
||||
else if (sym_sec != NULL
|
||||
&& sym_sec->output_section != NULL)
|
||||
{
|
||||
value += sym_sec->output_offset;
|
||||
value += sym_sec->output_section->vma;
|
||||
@ -8952,6 +8953,7 @@ ppc64_elf_edit_toc (struct bfd_link_info *info)
|
||||
goto error_ret;
|
||||
|
||||
if (sym_sec == NULL
|
||||
|| sym_sec->output_section == NULL
|
||||
|| discarded_section (sym_sec))
|
||||
continue;
|
||||
|
||||
@ -12275,7 +12277,9 @@ ppc64_elf_size_stubs (struct bfd_link_info *info)
|
||||
if (hash == NULL)
|
||||
{
|
||||
sym_value = sym->st_value;
|
||||
ok_dest = TRUE;
|
||||
if (sym_sec != NULL
|
||||
&& sym_sec->output_section != NULL)
|
||||
ok_dest = TRUE;
|
||||
}
|
||||
else if (hash->elf.root.type == bfd_link_hash_defined
|
||||
|| hash->elf.root.type == bfd_link_hash_defweak)
|
||||
|
Loading…
Reference in New Issue
Block a user