From 959b0961c9c714aa735ebb59e925fdf6f5117d99 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Fri, 8 Apr 2011 16:14:49 +0000 Subject: Properly handle R_386_TLS_LDO_32 for PIE. bfd/ 2011-04-08 H.J. Lu PR ld/12654 * elf32-i386.c (elf_i386_relocate_section): Check !executable instead of shared for R_386_TLS_LDO_32. ld/testsuite/ 2011-04-08 H.J. Lu PR ld/12654 * ld-i386/i386.exp: Run tlspie2. * ld-i386/tlspie2.d: New. * ld-i386/tlspie2.s: Likewise. --- bfd/ChangeLog | 6 ++++++ bfd/elf32-i386.c | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'bfd') diff --git a/bfd/ChangeLog b/bfd/ChangeLog index ebc5e18..7d65340 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2011-04-08 H.J. Lu + + PR ld/12654 + * elf32-i386.c (elf_i386_relocate_section): Check !executable + instead of shared for R_386_TLS_LDO_32. + 2011-04-08 Tristan Gingold * Makefile.am (SOURCE_HFILES): Remove xcoff-target.h diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c index 693c8e8..1b76cb4 100644 --- a/bfd/elf32-i386.c +++ b/bfd/elf32-i386.c @@ -4025,7 +4025,7 @@ elf_i386_relocate_section (bfd *output_bfd, break; case R_386_TLS_LDO_32: - if (info->shared || (input_section->flags & SEC_CODE) == 0) + if (!info->executable || (input_section->flags & SEC_CODE) == 0) relocation -= elf_i386_dtpoff_base (info); else /* When converting LDO to LE, we must negate. */ -- cgit v1.1