about summary refs log tree commit diff
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2017-09-29 16:21:49 -0700
committerH.J. Lu <hjl.tools@gmail.com>2017-09-29 16:22:00 -0700
commit54464e749d91401ccf20a5dc1c7af86b752c9e0c (patch)
tree736d5f116a642f60d6cce0a27eda48bba6bbab31
parentf6c5e5bce0a71680f90a4d6983b7233d461b5f86 (diff)
downloadglibc-54464e749d91401ccf20a5dc1c7af86b752c9e0c.tar.gz
glibc-54464e749d91401ccf20a5dc1c7af86b752c9e0c.tar.xz
glibc-54464e749d91401ccf20a5dc1c7af86b752c9e0c.zip
mips: Update elf_machine_load_address for static PIE
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.
-rw-r--r--ChangeLog5
-rw-r--r--sysdeps/mips/dl-machine.h5
2 files changed, 10 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 728df95d05..efd567ce34 100644
--- 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>
diff --git a/sysdeps/mips/dl-machine.h b/sysdeps/mips/dl-machine.h
index 74ead7f524..8e9f6858cd 100644
--- a/sysdeps/mips/dl-machine.h
+++ b/sysdeps/mips/dl-machine.h
@@ -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"