This is the mail archive of the binutils-cvs@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb/binutils-2_25-branch] Import fix for PR 18481 which corrects the generation of relocs for R_ARM_TLS_LE32.


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=d2ffcbd7f75eea32d67dde90e773c7b6d13a685b

commit d2ffcbd7f75eea32d67dde90e773c7b6d13a685b
Author: Nick Clifton <nickc@redhat.com>
Date:   Fri Jun 19 12:14:33 2015 +0100

    Import fix for PR 18481 which corrects the generation of relocs for R_ARM_TLS_LE32.
    
    	PR 18481
    bfd	* elf32-arm.c (R_ARM_TLS_LE32): Set the special function to NULL.
    
    gas	* config/tc-arm.c (md_apply_fix): Add support for ADR in thumb
    	mode against a nearby symbol.
    
    tests	* gas/arm/tls.s: Add tests of the tpoff pseudo with a local
    	symbol.
    	* gas/arm/tls.d: Update expected output.

Diff:
---
 bfd/ChangeLog               |  5 +++++
 bfd/elf32-arm.c             |  2 +-
 gas/ChangeLog               |  8 +++++++-
 gas/config/tc-arm.c         |  2 +-
 gas/testsuite/ChangeLog     |  7 +++++++
 gas/testsuite/gas/arm/tls.d | 18 ++++++++++++++++++
 gas/testsuite/gas/arm/tls.s | 23 +++++++++++++++++++++++
 7 files changed, 62 insertions(+), 3 deletions(-)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 90f6570..d39fddd 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2015-06-19  Nick Clifton  <nickc@redhat.com>
+
+	PR 18481
+	* elf32-arm.c (R_ARM_TLS_LE32): Set the special function to NULL.
+
 2015-05-05  Jiong Wang  <jiong.wang@arm.com>
 
 	Apply from master:
diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
index 7690251..9fd5720 100644
--- a/bfd/elf32-arm.c
+++ b/bfd/elf32-arm.c
@@ -1606,7 +1606,7 @@ static reloc_howto_type elf32_arm_howto_table_1[] =
 	 FALSE,                 /* pc_relative */
 	 0,                     /* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
-	 bfd_elf_generic_reloc, /* special_function */
+	 NULL, 			/* special_function */
 	 "R_ARM_TLS_LE32",	/* name */
 	 TRUE,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 75a2531..8aea852 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,9 @@
+2015-06-19  Nick Clifton  <nickc@redhat.com>
+
+	PR gas/18541
+	* config/tc-arm.c (md_apply_fix): Add support for ADR in thumb
+	mode against a nearby symbol.
+
 2015-06-17  Renlin Li  <renlin.li@arm.com>
 
 	Applied from master.
@@ -12,7 +18,7 @@
 	2015-05-05  Renlin Li  <renlin.li@arm.com>
 
 	* config/tc-aarch64.c (aarch64_init_frag): Always generate mapping
-	symbols. 
+	symbols.
 
 2015-06-04  Matthew Wahab  <matthew.wahab@arm.com>
 
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
index 1714ec8..2ab8bbea 100644
--- a/gas/config/tc-arm.c
+++ b/gas/config/tc-arm.c
@@ -23247,7 +23247,6 @@ tc_gen_reloc (asection *section, fixS *fixp)
     case BFD_RELOC_ARM_SBREL32:
     case BFD_RELOC_ARM_PREL31:
     case BFD_RELOC_ARM_TARGET2:
-    case BFD_RELOC_ARM_TLS_LE32:
     case BFD_RELOC_ARM_TLS_LDO32:
     case BFD_RELOC_ARM_PCREL_CALL:
     case BFD_RELOC_ARM_PCREL_JUMP:
@@ -23285,6 +23284,7 @@ tc_gen_reloc (asection *section, fixS *fixp)
 
     case BFD_RELOC_ARM_TLS_GOTDESC:
     case BFD_RELOC_ARM_TLS_GD32:
+    case BFD_RELOC_ARM_TLS_LE32:
     case BFD_RELOC_ARM_TLS_IE32:
     case BFD_RELOC_ARM_TLS_LDM32:
       /* BFD will include the symbol's address in the addend.
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 0cc4294..173630b 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2015-06-19  Nick Clifton  <nickc@redhat.com>
+
+	PR gas/18481
+	* gas/arm/tls.s: Add tests of the tpoff pseudo with a local
+	symbol.
+	* gas/arm/tls.d: Update expected output.
+
 2015-06-17  Renlin Li  <renlin.li@arm.com>
 
 	Applied from master.
diff --git a/gas/testsuite/gas/arm/tls.d b/gas/testsuite/gas/arm/tls.d
index 727f8e4..4d7e724 100644
--- a/gas/testsuite/gas/arm/tls.d
+++ b/gas/testsuite/gas/arm/tls.d
@@ -47,3 +47,21 @@ Disassembly of section .text:
 			3c: R_ARM_TLS_LE32	td
   40:	00000017 	.word	0x00000017
 			40: R_ARM_TLS_GOTDESC	te
+0+44 <foo>:
+  44:	fffffff4 	.word	0xfffffff4
+			44: R_ARM_TLS_LE32	tbase
+  48:	fffffff8 	.word	0xfffffff8
+			48: R_ARM_TLS_LE32	tbase
+  4c:	fffffffc 	.word	0xfffffffc
+			4c: R_ARM_TLS_LE32	tbase
+  50:	00000000 	.word	0x00000000
+			50: R_ARM_TLS_LE32	tbase
+  54:	00000004 	.word	0x00000004
+			54: R_ARM_TLS_LE32	tbase
+  58:	00000008 	.word	0x00000008
+			58: R_ARM_TLS_LE32	tbase
+  5c:	0000000c 	.word	0x0000000c
+			5c: R_ARM_TLS_LE32	tbase
+  60:	00000000 	.word	0x00000000
+			60: R_ARM_TLS_LE32	tbase
+#pass
diff --git a/gas/testsuite/gas/arm/tls.s b/gas/testsuite/gas/arm/tls.s
index 96a25f5..346ac98 100644
--- a/gas/testsuite/gas/arm/tls.s
+++ b/gas/testsuite/gas/arm/tls.s
@@ -36,3 +36,26 @@ thumb_fn:
 	.word	tc(gottpoff) + (. - 1b - 8)
 	.word	td(tpoff)
 1:	.word	te(tlsdesc) + (. - 2b + 1)
+
+	@ PR 18481
+	.text
+foo:
+	.word tbase(tpoff)-12
+	.word tbase(tpoff)-8
+	.word tbase(tpoff)-4
+	.word tbase(tpoff)+0
+	.word tbase(tpoff)+4
+	.word tbase(tpoff)+8
+	.word tbase(tpoff)+12
+	.word tbase(tpoff)
+
+	.section        .tdata,"awT",%progbits
+tbase = . + 12
+	.word -12
+	.word -8
+	.word -4
+	.word 0
+	.word 4
+	.word 8
+	.word 12
+	.word 0


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]