about summary refs log tree commit diff
path: root/sysdeps/arm/dl-machine.h
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1999-06-06 09:23:32 +0000
committerUlrich Drepper <drepper@redhat.com>1999-06-06 09:23:32 +0000
commitb3864d70e74192455c8db5ff7e32574f2a8fca6e (patch)
tree1e122ba6039856876f0c6803ecf4146110c27abe /sysdeps/arm/dl-machine.h
parent908c3d5b5ab4623951d14add3af5708c429aeb29 (diff)
downloadglibc-b3864d70e74192455c8db5ff7e32574f2a8fca6e.tar.gz
glibc-b3864d70e74192455c8db5ff7e32574f2a8fca6e.tar.xz
glibc-b3864d70e74192455c8db5ff7e32574f2a8fca6e.zip
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/dl-machine.h')
-rw-r--r--sysdeps/arm/dl-machine.h18
1 files changed, 5 insertions, 13 deletions
diff --git a/sysdeps/arm/dl-machine.h b/sysdeps/arm/dl-machine.h
index aff8df2238..754a6caa13 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;
 }