From 54464e749d91401ccf20a5dc1c7af86b752c9e0c Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Fri, 29 Sep 2017 16:21:49 -0700 Subject: [PATCH] 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. --- ChangeLog | 5 +++++ sysdeps/mips/dl-machine.h | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/ChangeLog b/ChangeLog index 728df95d05..efd567ce34 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2017-09-29 H.J. Lu + + * sysdeps/mips/dl-machine.h (elf_machine_dynamic): Return 0 if + _DYNAMIC is undefined for static executable. + 2017-09-29 H.J. Lu * sysdeps/arm/start.S (_start): Check PIC instead of SHARED. 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" -- 2.43.5