diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2017-10-20 03:36:34 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2017-10-20 03:36:47 -0700 |
commit | 9ba7e81028b3313d9aeb97a98d2e37626694d442 (patch) | |
tree | dd07a362a5dcdbf64780757d49179faa22487b00 | |
parent | 4027a4fda011c4431bdc3a063963de0b6fd6c07e (diff) | |
download | glibc-9ba7e81028b3313d9aeb97a98d2e37626694d442.zip glibc-9ba7e81028b3313d9aeb97a98d2e37626694d442.tar.gz glibc-9ba7e81028b3313d9aeb97a98d2e37626694d442.tar.bz2 |
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.
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | sysdeps/m68k/dl-machine.h | 6 |
2 files changed, 12 insertions, 0 deletions
@@ -1,5 +1,11 @@ 2017-10-20 H.J. Lu <hongjiu.lu@intel.com> + * 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 <hongjiu.lu@intel.com> + * sysdeps/m68k/start.S (_start): Check PIC instead of SHARED. 2017-10-20 Mike FABIAN <mfabian@redhat.com> diff --git a/sysdeps/m68k/dl-machine.h b/sysdeps/m68k/dl-machine.h index fd8fb00..33a5f76 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; } |