From: Andreas Schwab Date: Fri, 28 Mar 2008 12:23:06 +0000 (+0000) Subject: 2008-03-28 Maxim Kuvyrkov X-Git-Tag: upstream/2.20~3636^2~719 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=04d6ca32f128f2d5571bdeb36e34e306ec71e9f9;p=platform%2Fupstream%2Flinaro-glibc.git 2008-03-28 Maxim Kuvyrkov Explicitly get address of _DYNAMIC. * sysdeps/m68k/dl-machine.h (elf_machine_dynamic): Retrieve _DYNAMIC from GOT instead of assuming value at GOT pointer. --- diff --git a/ChangeLog.m68k b/ChangeLog.m68k index 33323c6..b6aa316 100644 --- a/ChangeLog.m68k +++ b/ChangeLog.m68k @@ -1,3 +1,9 @@ +2008-03-28 Maxim Kuvyrkov + + Explicitly get address of _DYNAMIC. + * sysdeps/m68k/dl-machine.h (elf_machine_dynamic): Retrieve _DYNAMIC + from GOT instead of assuming value at GOT pointer. + 2007-10-22 Daniel Jacobowitz * sysdeps/unix/sysv/linux/m68k/bits/fcntl.h (F_DUPFD_CLOEXEC): Define. diff --git a/sysdeps/m68k/dl-machine.h b/sysdeps/m68k/dl-machine.h index fad1ef9..08a4396 100644 --- a/sysdeps/m68k/dl-machine.h +++ b/sysdeps/m68k/dl-machine.h @@ -33,14 +33,16 @@ elf_machine_matches_host (const Elf32_Ehdr *ehdr) } -/* Return the link-time address of _DYNAMIC. Conveniently, this is the - first element of the GOT. This must be inlined in a function which - uses global data. */ +/* Return the link-time address of _DYNAMIC. + This must be inlined in a function which uses global data. */ static inline Elf32_Addr elf_machine_dynamic (void) { - register Elf32_Addr *got asm ("%a5"); - return *got; + Elf32_Addr addr; + + asm ("move.l _DYNAMIC@GOT.w(%%a5), %0" + : "=a" (addr)); + return addr; }