[binutils-gdb] [ARM] PR ld/21402, only override the symbol dynamic decision on undefined weak symbol.

Renlin Li renlin@sourceware.org
Tue Oct 10 15:43:00 GMT 2017


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

commit 6c699715f68be7d8c468e965fbefce997f7ed937
Author: Renlin Li <renlin.li@arm.com>
Date:   Mon Sep 25 11:41:54 2017 +0100

    [ARM] PR ld/21402, only override the symbol dynamic decision on undefined weak symbol.
    
    Similar as aarch64 backend, arm backend only overrides the decision on undefined
    weak symbols. arm backend part already emits necessary relative relocation for
    this case.
    
    bfd/
    
    	PR ld/21402
    	* elf32-arm.c (allocate_dynrelocs_for_symbol): Only make undefined weak
    	symbols into dynamic.
    
    ld/
    
    	PR ld/21402
    	* testsuite/ld-arm/tls-app.d: Update address.
    	* testsuite/ld-arm/tls-app.r: Remove relocations.
    	* testsuite/ld-arm/unresolved-1-dyn.d: Update.

Diff:
---
 bfd/ChangeLog                          |  6 ++++++
 bfd/elf32-arm.c                        | 12 ++++++------
 ld/ChangeLog                           |  7 +++++++
 ld/testsuite/ld-arm/tls-app.d          | 22 +++++++++++-----------
 ld/testsuite/ld-arm/tls-app.r          |  3 ---
 ld/testsuite/ld-arm/unresolved-1-dyn.d |  2 +-
 6 files changed, 31 insertions(+), 21 deletions(-)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index f988812..bf400a9 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2017-10-10  Renlin Li  <renlin.li@arm.com>
+
+	PR ld/21402
+	* elf32-arm.c (allocate_dynrelocs_for_symbol): Only make undefined weak
+	 symbols into dynamic.
+
 2017-10-09  H.J. Lu  <hongjiu.lu@intel.com>
 
 	PR ld/22274
diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
index bad8540..f841da7 100644
--- a/bfd/elf32-arm.c
+++ b/bfd/elf32-arm.c
@@ -15443,8 +15443,8 @@ allocate_dynrelocs_for_symbol (struct elf_link_hash_entry *h, void * inf)
     {
       /* Make sure this symbol is output as a dynamic symbol.
 	 Undefined weak syms won't yet be marked as dynamic.  */
-      if (h->dynindx == -1
-	  && !h->forced_local)
+      if (h->dynindx == -1 && !h->forced_local
+	  && h->root.type == bfd_link_hash_undefweak)
 	{
 	  if (! bfd_elf_link_record_dynamic_symbol (info, h))
 	    return FALSE;
@@ -15531,8 +15531,8 @@ allocate_dynrelocs_for_symbol (struct elf_link_hash_entry *h, void * inf)
 
       /* Make sure this symbol is output as a dynamic symbol.
 	 Undefined weak syms won't yet be marked as dynamic.  */
-      if (h->dynindx == -1
-	  && !h->forced_local)
+      if (h->dynindx == -1 && !h->forced_local
+	  && h->root.type == bfd_link_hash_undefweak)
 	{
 	  if (! bfd_elf_link_record_dynamic_symbol (info, h))
 	    return FALSE;
@@ -15755,8 +15755,8 @@ allocate_dynrelocs_for_symbol (struct elf_link_hash_entry *h, void * inf)
 	{
 	  /* Make sure this symbol is output as a dynamic symbol.
 	     Undefined weak syms won't yet be marked as dynamic.  */
-	  if (h->dynindx == -1
-	      && !h->forced_local)
+	  if (h->dynindx == -1 && !h->forced_local
+	      && h->root.type == bfd_link_hash_undefweak)
 	    {
 	      if (! bfd_elf_link_record_dynamic_symbol (info, h))
 		return FALSE;
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 58f6420..2a7f7bc 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,10 @@
+2017-10-10  Renlin Li  <renlin.li@arm.com>
+
+	PR ld/21402
+	* testsuite/ld-arm/tls-app.d: Update address.
+	* testsuite/ld-arm/tls-app.r: Remove relocations.
+	* testsuite/ld-arm/unresolved-1-dyn.d: Update.
+
 2017-10-10  Alan Modra  <amodra@gmail.com>
 
 	* Makefile.am (earmelfb_fuchsia.c): Rename rule from earmelf_fuchsia.c.
diff --git a/ld/testsuite/ld-arm/tls-app.d b/ld/testsuite/ld-arm/tls-app.d
index de0cbab..454adcd 100644
--- a/ld/testsuite/ld-arm/tls-app.d
+++ b/ld/testsuite/ld-arm/tls-app.d
@@ -2,17 +2,17 @@
 .*:     file format elf32-.*arm.*
 architecture: arm.*, flags 0x00000112:
 EXEC_P, HAS_SYMS, D_PAGED
-start address 0x000081c8
+start address 0x00008[0-9a-f]+
 
 Disassembly of section .text:
 
-000081c8 <foo>:
-    81c8:	e1a00000 	nop			; \(mov r0, r0\)
-    81cc:	e1a00000 	nop			; \(mov r0, r0\)
-    81d0:	e1a0f00e 	mov	pc, lr
-    81d4:	000080bc 	.word	0x000080bc
-    81d8:	000080b4 	.word	0x000080b4
-    81dc:	000080ac 	.word	0x000080ac
-    81e0:	00000004 	.word	0x00000004
-    81e4:	000080c4 	.word	0x000080c4
-    81e8:	00000014 	.word	0x00000014
+00008[0-9a-f]+ <foo>:
+    8[0-9a-f]+:	e1a00000 	nop			; \(mov r0, r0\)
+    8[0-9a-f]+:	e1a00000 	nop			; \(mov r0, r0\)
+    8[0-9a-f]+:	e1a0f00e 	mov	pc, lr
+    8[0-9a-f]+:	000080bc 	.word	0x000080bc
+    8[0-9a-f]+:	000080b4 	.word	0x000080b4
+    8[0-9a-f]+:	000080ac 	.word	0x000080ac
+    8[0-9a-f]+:	00000004 	.word	0x00000004
+    8[0-9a-f]+:	000080c4 	.word	0x000080c4
+    8[0-9a-f]+:	00000014 	.word	0x00000014
diff --git a/ld/testsuite/ld-arm/tls-app.r b/ld/testsuite/ld-arm/tls-app.r
index b156d52..518c18c 100644
--- a/ld/testsuite/ld-arm/tls-app.r
+++ b/ld/testsuite/ld-arm/tls-app.r
@@ -3,8 +3,5 @@
 
 DYNAMIC RELOCATION RECORDS
 OFFSET   TYPE              VALUE 
-[0-9a-f]+ R_ARM_TLS_DTPMOD32  app_gd
-[0-9a-f]+ R_ARM_TLS_DTPOFF32  app_gd
 [0-9a-f]+ R_ARM_TLS_DTPMOD32  lib_gd
 [0-9a-f]+ R_ARM_TLS_DTPOFF32  lib_gd
-[0-9a-f]+ R_ARM_TLS_TPOFF32  app_ie
diff --git a/ld/testsuite/ld-arm/unresolved-1-dyn.d b/ld/testsuite/ld-arm/unresolved-1-dyn.d
index 21cd959..529da37 100644
--- a/ld/testsuite/ld-arm/unresolved-1-dyn.d
+++ b/ld/testsuite/ld-arm/unresolved-1-dyn.d
@@ -5,4 +5,4 @@
 
 Relocation section '\.rel\.dyn' .*
  Offset .*
-.* R_ARM_GLOB_DAT +00000000 +foo
+^.*  00000000 R_ARM_NONE.+



More information about the Binutils-cvs mailing list