Provide __executable_start for PIE
authorH.J. Lu <hjl.tools@gmail.com>
Fri, 31 Aug 2012 02:52:14 +0000 (02:52 +0000)
committerH.J. Lu <hjl.tools@gmail.com>
Fri, 31 Aug 2012 02:52:14 +0000 (02:52 +0000)
ld/

PR ld/14525
* scripttempl/elf.sc: Also provide __executable_start for PIE.

ld/testsuite/

PR ld/14525
* ld-elf/elf.exp: Run pr14525.

* ld-elf/pr14525.c: New.
* ld-elf/pr14525.out: Likewise.

ld/ChangeLog
ld/scripttempl/elf.sc
ld/testsuite/ChangeLog
ld/testsuite/ld-elf/elf.exp
ld/testsuite/ld-elf/pr14525.c [new file with mode: 0644]
ld/testsuite/ld-elf/pr14525.out [new file with mode: 0644]

index ab233cc..22f7c69 100644 (file)
@@ -1,3 +1,8 @@
+2012-08-30  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR ld/14525
+       * scripttempl/elf.sc: Also provide __executable_start for PIE.
+
 2012-08-17  Kai Tietz  <ktietz@redhat.com>
 
        PR ld/14326
        * po/uk.po: New Ukranian translation.
 
 2012-08-13  Ian Bolton  <ian.bolton@arm.com>
-            Laurent Desnogues  <laurent.desnogues@arm.com>
-            Jim MacArthur  <jim.macarthur@arm.com>
-            Marcus Shawcroft  <marcus.shawcroft@arm.com>
-            Nigel Stephens  <nigel.stephens@arm.com>
-            Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
-            Richard Earnshaw  <rearnsha@arm.com>
-            Sofiane Naci  <sofiane.naci@arm.com>
-            Tejas Belagod  <tejas.belagod@arm.com>
-            Yufeng Zhang  <yufeng.zhang@arm.com>
+           Laurent Desnogues  <laurent.desnogues@arm.com>
+           Jim MacArthur  <jim.macarthur@arm.com>
+           Marcus Shawcroft  <marcus.shawcroft@arm.com>
+           Nigel Stephens  <nigel.stephens@arm.com>
+           Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
+           Richard Earnshaw  <rearnsha@arm.com>
+           Sofiane Naci  <sofiane.naci@arm.com>
+           Tejas Belagod  <tejas.belagod@arm.com>
+           Yufeng Zhang  <yufeng.zhang@arm.com>
 
        * Makefile.am: Add AArch64.
        * Makefile.in: Regenerate.
index 51a655e..72d2af7 100644 (file)
@@ -335,7 +335,7 @@ SECTIONS
   /* Read-only sections, merged into text segment: */
   ${CREATE_SHLIB-${CREATE_PIE-${RELOCATING+PROVIDE (__executable_start = ${TEXT_START_ADDR}); . = ${TEXT_BASE_ADDRESS};}}}
   ${CREATE_SHLIB+${RELOCATING+. = ${SHLIB_TEXT_START_ADDR}${SIZEOF_HEADERS_CODE};}}
-  ${CREATE_PIE+${RELOCATING+. = ${SHLIB_TEXT_START_ADDR}${SIZEOF_HEADERS_CODE};}}
+  ${CREATE_PIE+${RELOCATING+PROVIDE (__executable_start = ${SHLIB_TEXT_START_ADDR}); . = ${SHLIB_TEXT_START_ADDR}${SIZEOF_HEADERS_CODE};}}
 EOF
 
 emit_early_ro()
index eca4181..5537d0a 100644 (file)
@@ -1,3 +1,11 @@
+2012-08-30  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR ld/14525
+       * ld-elf/elf.exp: Run pr14525.
+
+       * ld-elf/pr14525.c: New.
+       * ld-elf/pr14525.out: Likewise.
+
 2012-08-28  Maciej W. Rozycki  <macro@codesourcery.com>
 
        * ld-elf/export-class.sd: New test.
        * ld-mips-elf/mips-elf.exp: Run the new tests.
 
 2012-08-13  Ian Bolton  <ian.bolton@arm.com>
-            Laurent Desnogues  <laurent.desnogues@arm.com>
-            Jim MacArthur  <jim.macarthur@arm.com>
-            Marcus Shawcroft  <marcus.shawcroft@arm.com>
-            Nigel Stephens  <nigel.stephens@arm.com>
-            Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
-            Richard Earnshaw  <rearnsha@arm.com>
-            Sofiane Naci  <sofiane.naci@arm.com>
-            Tejas Belagod  <tejas.belagod@arm.com>
-            Yufeng Zhang  <yufeng.zhang@arm.com>
+           Laurent Desnogues  <laurent.desnogues@arm.com>
+           Jim MacArthur  <jim.macarthur@arm.com>
+           Marcus Shawcroft  <marcus.shawcroft@arm.com>
+           Nigel Stephens  <nigel.stephens@arm.com>
+           Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
+           Richard Earnshaw  <rearnsha@arm.com>
+           Sofiane Naci  <sofiane.naci@arm.com>
+           Tejas Belagod  <tejas.belagod@arm.com>
+           Yufeng Zhang  <yufeng.zhang@arm.com>
 
        * ld-aarch64/aarch64-elf.exp: New file.
        * ld-aarch64/aarch64.ld: New file.
index 1780b50..a97e3df 100644 (file)
@@ -151,6 +151,7 @@ set array_tests_pie {
     {"PIE init array" "-pie" "" {init.c} "init" "init.out" "-fPIE"}
     {"PIE fini array" "-pie" "" {fini.c} "fini" "fini.out" "-fPIE"}
     {"PIE init array mixed" "-pie" "" {init-mixed.c} "init-mixed" "init-mixed.out" "-I. -fPIE"}
+    {"PIE PR ld/14525" "-pie" "" {pr14525.c} "pr14525" "pr14525.out" "-fPIE"}
 }
 set array_tests_static {
     {"static preinit array" "-static" "" {preinit.c} "preinit" "preinit.out"}
diff --git a/ld/testsuite/ld-elf/pr14525.c b/ld/testsuite/ld-elf/pr14525.c
new file mode 100644 (file)
index 0000000..082eb87
--- /dev/null
@@ -0,0 +1,11 @@
+#include <stdio.h>
+
+extern void *__executable_start;
+int
+main()
+{
+  if ((void **) &main >= &__executable_start)
+    printf ("OK\n");
+  return 0;
+}
diff --git a/ld/testsuite/ld-elf/pr14525.out b/ld/testsuite/ld-elf/pr14525.out
new file mode 100644 (file)
index 0000000..d86bac9
--- /dev/null
@@ -0,0 +1 @@
+OK