about summary refs log tree commit diff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-08-18 17:15:52 +0000
committerUlrich Drepper <drepper@redhat.com>2003-08-18 17:15:52 +0000
commit333b24d3219afed944f2c9d38c8c33076c700b23 (patch)
treefb8c05e5f670779e806e1b64725def601e550c26
parent8269c5f1c9efdd3bbe903148bf06186bff0a25cf (diff)
downloadglibc-333b24d3219afed944f2c9d38c8c33076c700b23.tar.gz
glibc-333b24d3219afed944f2c9d38c8c33076c700b23.tar.xz
glibc-333b24d3219afed944f2c9d38c8c33076c700b23.zip
(ELF_MACHINE_LOAD_ADDRESS): Support loading big binaries where @gprel(sym) cannot be handled in 'add' but instead has to be used with 'movl'.
-rw-r--r--sysdeps/ia64/dl-fptr.h8
1 files changed, 4 insertions, 4 deletions
diff --git a/sysdeps/ia64/dl-fptr.h b/sysdeps/ia64/dl-fptr.h
index de6771305e..43907b9bf7 100644
--- a/sysdeps/ia64/dl-fptr.h
+++ b/sysdeps/ia64/dl-fptr.h
@@ -23,14 +23,14 @@
 #include <ia64intrin.h>
 #include <sysdeps/generic/dl-fptr.h>
 
-#define COMPARE_AND_SWAP(ptr,old,new)	\
-  __sync_bool_compare_and_swap ((ptr), (old), (new))
+#define COMPARE_AND_SWAP(ptr, old, new)	\
+  __sync_bool_compare_and_swap (ptr, old, new)
 
 /* There are currently 123 dynamic symbols in ld.so.
    ELF_MACHINE_BOOT_FPTR_TABLE_LEN needs to be at least that big.  */
 #define ELF_MACHINE_BOOT_FPTR_TABLE_LEN	200
 
-#define ELF_MACHINE_LOAD_ADDRESS(var,symbol)	\
-  asm ("addl %0 = @gprel (" #symbol "), gp" : "=r" (var));
+#define ELF_MACHINE_LOAD_ADDRESS(var, symbol)	\
+  asm ("movl %0 = @gprel (" #symbol ");; add %0 = %0, gp" : "=&r" (var));
 
 #endif /* !dl_ia64_fptr_h */