From: H.J. Lu Date: Fri, 20 Oct 2017 10:36:34 +0000 (-0700) Subject: m68k: Update elf_machine_load_address for static PIE X-Git-Tag: glibc-2.27~650 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9ba7e81028b3313d9aeb97a98d2e37626694d442;p=thirdparty%2Fglibc.git m68k: Update elf_machine_load_address for static PIE When --enable-static-pie is used to configure glibc, we need to use _dl_relocate_static_pie to compute load address in static PIE. * sysdeps/m68k/dl-machine.h (elf_machine_load_address): Use _dl_relocate_static_pie instead of _dl_start to compute load address in static PIE. --- diff --git a/ChangeLog b/ChangeLog index 138eea5ffd4..e5e89cec187 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2017-10-20 H.J. Lu + + * sysdeps/m68k/dl-machine.h (elf_machine_load_address): Use + _dl_relocate_static_pie instead of _dl_start to compute load + address in static PIE. + 2017-10-20 H.J. Lu * sysdeps/m68k/start.S (_start): Check PIC instead of SHARED. diff --git a/sysdeps/m68k/dl-machine.h b/sysdeps/m68k/dl-machine.h index fd8fb001031..33a5f765242 100644 --- a/sysdeps/m68k/dl-machine.h +++ b/sysdeps/m68k/dl-machine.h @@ -51,9 +51,15 @@ static inline Elf32_Addr elf_machine_load_address (void) { Elf32_Addr addr; +#ifdef SHARED asm (PCREL_OP ("lea", "_dl_start", "%0", "%0", "%%pc") "\n\t" "sub.l _dl_start@GOT.w(%%a5), %0" : "=a" (addr)); +#else + asm (PCREL_OP ("lea", "_dl_relocate_static_pie", "%0", "%0", "%%pc") "\n\t" + "sub.l _dl_relocate_static_pie@GOT.w(%%a5), %0" + : "=a" (addr)); +#endif return addr; }