diff options
author | Ulrich Drepper <drepper@redhat.com> | 1999-06-06 09:23:32 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1999-06-06 09:23:32 +0000 |
commit | b3864d70e74192455c8db5ff7e32574f2a8fca6e (patch) | |
tree | 1e122ba6039856876f0c6803ecf4146110c27abe /sysdeps/arm | |
parent | 908c3d5b5ab4623951d14add3af5708c429aeb29 (diff) | |
download | glibc-b3864d70e74192455c8db5ff7e32574f2a8fca6e.zip glibc-b3864d70e74192455c8db5ff7e32574f2a8fca6e.tar.gz glibc-b3864d70e74192455c8db5ff7e32574f2a8fca6e.tar.bz2 |
Update.
1999-06-06 Ulrich Drepper <drepper@cygnus.com>
* malloc/malloc.c: Introduce local variable __libc_getpagesize to
avoid multiple calls to getpagesize() which might be a syscall.
1999-06-06 Philip Blundell <philb@gnu.org>
* stdio-common/tstscanf.c (main): Test the half-word format "%hd".
1999-06-06 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* manual/install.texi (Running make install): Correct typo in
dynamic linker invocation.
1999-06-05 Philip Blundell <philb@gnu.org>
* sysdeps/arm/dl-machine.h (elf_machine_load_address): Fix
problems with GOT addressing.
1999-06-05 Wolfram Gloger <wmglo@dent.med.uni-muenchen.de>
* malloc/malloc.c (check_action): Change into bitmap so that both
diagnostic and abort can be requested by setting it to 3.
(mALLOC_SET_STATe): Disable malloc checking if necessary.
Diffstat (limited to 'sysdeps/arm')
-rw-r--r-- | sysdeps/arm/dl-machine.h | 18 |
1 files changed, 5 insertions, 13 deletions
diff --git a/sysdeps/arm/dl-machine.h b/sysdeps/arm/dl-machine.h index aff8df2..754a6ca 100644 --- a/sysdeps/arm/dl-machine.h +++ b/sysdeps/arm/dl-machine.h @@ -52,22 +52,14 @@ elf_machine_dynamic (void) /* Return the run-time load address of the shared object. */ -// patb static inline Elf32_Addr __attribute__ ((unused)) elf_machine_load_address (void) { - Elf32_Addr addr; - asm (" ldr ip,.L1 - ldr r3,.L3 - add r3, r3, sl - ldr ip,[sl, ip] - sub ip, r3, ip - b .L2 - .L1: .word _dl_start(GOT) - .L3: .word _dl_start(GOTOFF) - .L2: mov %0, ip" - : "=r" (addr) : : "ip", "r3"); - return addr; + extern void __dl_start asm ("_dl_start"); + Elf32_Addr got_addr = (Elf32_Addr) &__dl_start; + Elf32_Addr pcrel_addr; + asm ("adr %0, _dl_start" : "=r" (pcrel_addr)); + return pcrel_addr - got_addr; } |