Relax ppc64_elf_tls_optimize assertion
The code in ppc64_elf_tls_optimize looking at the .toc is only interested in .toc entries that are addresses. .toc can contain more than just an array of addresses, so if we have items that aren't 8-byte aligned, ignore them. * elf64-ppc.c (ppc64_elf_tls_optimize): Ignore relocs against toc entries that aren't a multiple of 8 rather than failing assertion.
This commit is contained in:
parent
e74211b660
commit
7324227506
@ -1,3 +1,8 @@
|
||||
2014-10-21 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* elf64-ppc.c (ppc64_elf_tls_optimize): Ignore relocs against toc
|
||||
entries that aren't a multiple of 8 rather than failing assertion.
|
||||
|
||||
2014-10-21 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* elf64-ppc.c (ppc64_elf_size_stubs): Add gcc-4.9 libgomp functions
|
||||
|
@ -8343,7 +8343,10 @@ ppc64_elf_tls_optimize (struct bfd_link_info *info)
|
||||
else
|
||||
value = sym->st_value;
|
||||
value += rel->r_addend;
|
||||
BFD_ASSERT (value < toc->size && value % 8 == 0);
|
||||
if (value % 8 != 0)
|
||||
continue;
|
||||
BFD_ASSERT (value < toc->size
|
||||
&& toc->output_offset % 8 == 0);
|
||||
toc_ref_index = (value + toc->output_offset) / 8;
|
||||
if (r_type == R_PPC64_TLS
|
||||
|| r_type == R_PPC64_TLSGD
|
||||
|
Loading…
x
Reference in New Issue
Block a user