]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
x86-64: Limit PIC check to shared library build
authorH.J. Lu <hjl.tools@gmail.com>
Mon, 17 Jul 2017 19:17:59 +0000 (12:17 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Mon, 17 Jul 2017 19:51:04 +0000 (12:51 -0700)
When building an executable, undefined symbols are error and undefined
weak symbols are resolved to zero.  We only need to check PIC for
building a shared library.

bfd/

PR ld/21782
* elf64-x86-64.c (elf_x86_64_relocate_section): Limit PIC check
to shared library.

ld/

PR ld/21782
* testsuite/ld-x86-64/pie3-nacl.d: New file.
* testsuite/ld-x86-64/pie3.d: Likewise.
* testsuite/ld-x86-64/pie3.s: Likewise.
* testsuite/ld-x86-64/x86-64.exp: Run pie3 and pie3-nacl.

(cherry picked from commit c5bb8910e80c6cd80c63541f86471c18375c8198)

bfd/ChangeLog
bfd/elf64-x86-64.c
ld/ChangeLog
ld/testsuite/ld-x86-64/pie3-nacl.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/pie3.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/pie3.s [new file with mode: 0644]
ld/testsuite/ld-x86-64/x86-64.exp

index 571edd177047ae363b83cf2e275174e83c2f4734..e1e71e1af36a851e557d8ecf4c4c2f666f46ab7d 100644 (file)
@@ -1,3 +1,9 @@
+2017-07-17  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR ld/21782
+       * elf64-x86-64.c (elf_x86_64_relocate_section): Limit PIC check
+       to shared library.
+
 2017-07-16  Alan Modra  <amodra@gmail.com>
 
        * elf64-ppc.c (ppc64_elf_relocate_section): Don't optimize
index 8cef9f5e742b2a4bf379f679385e1e3e0537eca5..c80a9caaa6dcea8e6e6f0f92a6b3f209804bc477 100644 (file)
@@ -4969,9 +4969,7 @@ do_ifunc_pointer:
              && ((bfd_link_executable (info)
                  && h->root.type == bfd_link_hash_undefweak
                  && !resolved_to_zero)
-                 || (bfd_link_pic (info)
-                     && !(bfd_link_pie (info)
-                          && h->root.type == bfd_link_hash_undefined))))
+                 || bfd_link_dll (info)))
            {
              bfd_boolean fail = FALSE;
              bfd_boolean branch
index 165dee962f9b0a271c79f40097e22d40a129d55c..2fb8c79de92dd6cd675192de7d01c20aa1ae54e5 100644 (file)
@@ -1,3 +1,11 @@
+2017-07-17  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR ld/21782
+       * testsuite/ld-x86-64/pie3-nacl.d: New file.
+       * testsuite/ld-x86-64/pie3.d: Likewise.
+       * testsuite/ld-x86-64/pie3.s: Likewise.
+       * testsuite/ld-x86-64/x86-64.exp: Run pie3 and pie3-nacl.
+
 2016-07-14  Maciej W. Rozycki  <macro@imgtec.com>
 
        * testsuite/ld-unique/pr21529.ld: New test linker script.
diff --git a/ld/testsuite/ld-x86-64/pie3-nacl.d b/ld/testsuite/ld-x86-64/pie3-nacl.d
new file mode 100644 (file)
index 0000000..59f5e3e
--- /dev/null
@@ -0,0 +1,14 @@
+#source: pie3.s
+#as: --64
+#ld: -pie -melf_x86_64
+#objdump: -dw
+#target: x86_64-*-nacl*
+
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+0+ <_start>:
+ +0:   48 8d 05 f9 ff ff ff    lea    -0x7\(%rip\),%rax        # 0 <_start>
+#pass
diff --git a/ld/testsuite/ld-x86-64/pie3.d b/ld/testsuite/ld-x86-64/pie3.d
new file mode 100644 (file)
index 0000000..a200deb
--- /dev/null
@@ -0,0 +1,13 @@
+#as: --64
+#ld: -pie -melf_x86_64
+#objdump: -dw
+#notarget: x86_64-*-nacl*
+
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+0+191 <_start>:
+ +191: 48 8d 05 68 fe ff ff    lea    -0x198\(%rip\),%rax        # 0 <_start-0x191>
+#pass
diff --git a/ld/testsuite/ld-x86-64/pie3.s b/ld/testsuite/ld-x86-64/pie3.s
new file mode 100644 (file)
index 0000000..72914d9
--- /dev/null
@@ -0,0 +1,5 @@
+       .text
+       .global _start
+       .weak foo
+_start:
+       leaq    foo(%rip), %rax
index 9b83e1c5ce8d84fd111ec40c9a7b60371f53ef43..c582582297862de40954c7a6e0931a51e98ed0ac 100644 (file)
@@ -310,6 +310,8 @@ run_dump_test "pr14207"
 run_dump_test "gotplt1"
 run_dump_test "pie1"
 run_dump_test "pie2"
+run_dump_test "pie3"
+run_dump_test "pie3-nacl"
 run_dump_test "pic1"
 run_dump_test "largecomm-1a"
 run_dump_test "largecomm-1b"