about summary refs log tree commit diff
path: root/sysdeps/mips/dl-machine.h
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 /sysdeps/mips/dl-machine.h
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.
Diffstat (limited to 'sysdeps/mips/dl-machine.h')
-rw-r--r--sysdeps/mips/dl-machine.h5
1 files changed, 5 insertions, 0 deletions
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"