mips: Update elf_machine_load_address for static PIE
authorH.J. Lu <hjl.tools@gmail.com>
Fri, 29 Sep 2017 23:21:49 +0000 (16:21 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Fri, 29 Sep 2017 23:22:00 +0000 (16:22 -0700)
mips uses a local label to compute load address, which works with static
PIE.  We just need to return 0 if _DYNAMIC is undefined for static
executable.

* sysdeps/mips/dl-machine.h (elf_machine_dynamic): Return 0 if
_DYNAMIC is undefined for static executable.

ChangeLog
sysdeps/mips/dl-machine.h

index 728df95..efd567c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2017-09-29  H.J. Lu  <hongjiu.lu@intel.com>
 
+       * sysdeps/mips/dl-machine.h (elf_machine_dynamic): Return 0 if
+       _DYNAMIC is undefined for static executable.
+
+2017-09-29  H.J. Lu  <hongjiu.lu@intel.com>
+
        * sysdeps/arm/start.S (_start): Check PIC instead of SHARED.
 
 2017-09-29  Joseph Myers  <joseph@codesourcery.com>
index 74ead7f..8e9f685 100644 (file)
@@ -147,6 +147,11 @@ elf_machine_dynamic (void)
 static inline ElfW(Addr)
 elf_machine_load_address (void)
 {
+#ifndef SHARED
+  extern ElfW(Dyn) _DYNAMIC[] __attribute__((weak, visibility ("hidden")));
+  if (!_DYNAMIC)
+    return 0;
+#endif
   ElfW(Addr) addr;
 #ifndef __mips16
   asm ("       .set noreorder\n"