[binutils-gdb] x86-64: Skip protected check on symbol defined by linker

H.J.Lu hjl@sourceware.org
Wed Feb 27 19:54:00 GMT 2019


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

commit 5cfe428cd1788be52a0af540f02b8f2705354d50
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Wed Feb 27 11:53:16 2019 -0800

    x86-64: Skip protected check on symbol defined by linker
    
    Skip symbol defined by linker when checking copy reloc on protected
    symbol.
    
    bfd/
    
    	PR ld/24276
    	* elf64-x86-64.c (elf_x86_64_check_relocs): Skip symbol defined
    	by linker when checking copy reloc on protected symbol.
    
    ld/
    
    	PR ld/24276
    	* testsuite/ld-i386/i386.exp: Run PR ld/24276 test.
    	* testsuite/ld-x86-64/x86-64.exp: Likewise.
    	* testsuite/ld-i386/pr24276.dso: New file.
    	* testsuite/ld-i386/pr24276.warn: Likewise.
    	* testsuite/ld-x86-64/pr24276.dso: Likewise.
    	* testsuite/ld-x86-64/pr24276.warn: Likewise.

Diff:
---
 bfd/ChangeLog                       |  6 ++++++
 bfd/elf64-x86-64.c                  |  2 ++
 ld/ChangeLog                        | 10 ++++++++++
 ld/testsuite/ld-i386/i386.exp       |  9 +++++++++
 ld/testsuite/ld-i386/pr24276.dso    |  9 +++++++++
 ld/testsuite/ld-i386/pr24276.warn   |  1 +
 ld/testsuite/ld-x86-64/pr24276.dso  |  9 +++++++++
 ld/testsuite/ld-x86-64/pr24276.warn |  1 +
 ld/testsuite/ld-x86-64/x86-64.exp   |  9 +++++++++
 9 files changed, 56 insertions(+)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index e206629..f0aec1f 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2019-02-27  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/24276
+	* elf64-x86-64.c (elf_x86_64_check_relocs): Skip symbol defined
+	by linker when checking copy reloc on protected symbol.
+
 2019-02-24  Alan Modra  <amodra@gmail.com>
 
 	PR 24144
diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c
index 6a4b366..e193f44 100644
--- a/bfd/elf64-x86-64.c
+++ b/bfd/elf64-x86-64.c
@@ -2238,6 +2238,8 @@ check_pic:
 	      bfd_boolean no_copyreloc_p
 		= (info->nocopyreloc
 		   || (h != NULL
+		       && !h->root.linker_def
+		       && !h->root.ldscript_def
 		       && eh->def_protected
 		       && elf_has_no_copy_on_protected (h->root.u.def.section->owner)));
 	      if ((sec->flags & SEC_ALLOC) != 0
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 0e00e41..cd368bd 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,13 @@
+2019-02-27  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/24276
+	* testsuite/ld-i386/i386.exp: Run PR ld/24276 test.
+	* testsuite/ld-x86-64/x86-64.exp: Likewise.
+	* testsuite/ld-i386/pr24276.dso: New file.
+	* testsuite/ld-i386/pr24276.warn: Likewise.
+	* testsuite/ld-x86-64/pr24276.dso: Likewise.
+	* testsuite/ld-x86-64/pr24276.warn: Likewise.
+
 2019-02-20  Eric Tsai  <erictsai@cadence.com>
 
 	* testsuite/ld-xtensa/call_overflow.d: New test definition.
diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp
index 5b90362..e51a4c3 100644
--- a/ld/testsuite/ld-i386/i386.exp
+++ b/ld/testsuite/ld-i386/i386.exp
@@ -805,6 +805,15 @@ if { [isnative]
 	    "pr19319" \
 	] \
 	[list \
+	    "Build pr24276.so" \
+	    "-shared -nostdlib -nostartfiles \
+	     -Ltmpdir $srcdir/$subdir/pr24276.dso" \
+	    "-Wa,-mx86-used-note=yes" \
+	    { pr19319b.S } \
+	    {{warning_output pr24276.warn}} \
+	    "pr24276.so" \
+	] \
+	[list \
 	    "Build property 1" \
 	    "" \
 	    "-Wa,-mx86-used-note=no" \
diff --git a/ld/testsuite/ld-i386/pr24276.dso b/ld/testsuite/ld-i386/pr24276.dso
new file mode 100644
index 0000000..9add115
--- /dev/null
+++ b/ld/testsuite/ld-i386/pr24276.dso
@@ -0,0 +1,9 @@
+INPUT(pr19319.so)
+SECTIONS {
+  my_section : {
+    __start_my_section = .;
+    *(my_section);
+    __stop_my_section = .;
+
+  }
+}
diff --git a/ld/testsuite/ld-i386/pr24276.warn b/ld/testsuite/ld-i386/pr24276.warn
new file mode 100644
index 0000000..5fcfa34
--- /dev/null
+++ b/ld/testsuite/ld-i386/pr24276.warn
@@ -0,0 +1 @@
+.*contains output sections.*
diff --git a/ld/testsuite/ld-x86-64/pr24276.dso b/ld/testsuite/ld-x86-64/pr24276.dso
new file mode 100644
index 0000000..9add115
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pr24276.dso
@@ -0,0 +1,9 @@
+INPUT(pr19319.so)
+SECTIONS {
+  my_section : {
+    __start_my_section = .;
+    *(my_section);
+    __stop_my_section = .;
+
+  }
+}
diff --git a/ld/testsuite/ld-x86-64/pr24276.warn b/ld/testsuite/ld-x86-64/pr24276.warn
new file mode 100644
index 0000000..5fcfa34
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pr24276.warn
@@ -0,0 +1 @@
+.*contains output sections.*
diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp
index 5eb5565..b03aace 100644
--- a/ld/testsuite/ld-x86-64/x86-64.exp
+++ b/ld/testsuite/ld-x86-64/x86-64.exp
@@ -941,6 +941,15 @@ if { [isnative] && [which $CC] != 0 } {
 	    "pr19319" \
 	] \
 	[list \
+	    "Build pr24276.so" \
+	    "-shared -nostdlib -nostartfiles \
+	     -Ltmpdir $srcdir/$subdir/pr24276.dso" \
+	    "-Wa,-mx86-used-note=yes" \
+	    { pr19319b.S } \
+	    {{warning_output pr24276.warn}} \
+	    "pr24276.so" \
+	] \
+	[list \
 	    "Build property 1" \
 	    "" \
 	    "-Wa,-mx86-used-note=no" \



More information about the Binutils-cvs mailing list