2009-07-23  H.J. Lu  <hongjiu.lu@intel.com>

	PR ld/10434
	* elf64-x86-64.c (elf64_x86_64_check_relocs): Check executable
	instead of shared for R_X86_64_TPOFF32.
	(elf64_x86_64_relocate_section): Likewise.

ld/testsuite/

2009-07-23  H.J. Lu  <hongjiu.lu@intel.com>

	PR ld/10434
	* ld-x86-64/tlsle1.d: New.
	* ld-x86-64/tlsle1.s: Likewise.

	* ld-x86-64/x86-64.exp: Run tlsle1.
This commit is contained in:
H.J. Lu 2009-07-23 21:22:20 +00:00
parent 89295b4d6f
commit 9b769489c6
6 changed files with 35 additions and 3 deletions

View File

@ -1,3 +1,10 @@
2009-07-23 H.J. Lu <hongjiu.lu@intel.com>
PR ld/10434
* elf64-x86-64.c (elf64_x86_64_check_relocs): Check executable
instead of shared for R_X86_64_TPOFF32.
(elf64_x86_64_relocate_section): Likewise.
2009-07-23 Ulrich Drepper <drepper@redhat.com>
* elf-bfd.h (struct elf_link_hash_entry): Add unique_global field.

View File

@ -1231,7 +1231,7 @@ elf64_x86_64_check_relocs (bfd *abfd, struct bfd_link_info *info,
goto create_got;
case R_X86_64_TPOFF32:
if (info->shared)
if (!info->executable)
{
if (h)
name = h->root.root.string;
@ -3639,7 +3639,7 @@ elf64_x86_64_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
break;
case R_X86_64_TPOFF32:
BFD_ASSERT (! info->shared);
BFD_ASSERT (info->executable);
relocation = elf64_x86_64_tpoff (info, relocation);
break;

View File

@ -1,3 +1,11 @@
2009-07-23 H.J. Lu <hongjiu.lu@intel.com>
PR ld/10434
* ld-x86-64/tlsle1.d: New.
* ld-x86-64/tlsle1.s: Likewise.
* ld-x86-64/x86-64.exp: Run tlsle1.
2009-07-21 H.J. Lu <hongjiu.lu@intel.com>
PR ld/10426

View File

@ -0,0 +1,6 @@
#name: TLS LE with PIE
#as: --64
#ld: -melf_x86_64 -pie
#readelf: -r
There are no relocations in this file.

View File

@ -0,0 +1,11 @@
.text
.globl _start
_start:
movl $0, %fs:foo@TPOFF
.globl foo
.section .tdata,"awT",@progbits
.align 4
.type foo, @object
.size foo, 4
foo:
.long 100

View File

@ -92,4 +92,4 @@ run_dump_test "hidden3"
run_dump_test "protected1"
run_dump_test "protected2"
run_dump_test "protected3"
run_dump_test "tlsle1"