From: Ulrich Drepper Date: Mon, 18 Aug 2003 17:15:52 +0000 (+0000) Subject: (ELF_MACHINE_LOAD_ADDRESS): Support loading big binaries where @gprel(sym) cannot... X-Git-Tag: cvs/glibc-2_3_3~354 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=333b24d3219afed944f2c9d38c8c33076c700b23;p=thirdparty%2Fglibc.git (ELF_MACHINE_LOAD_ADDRESS): Support loading big binaries where @gprel(sym) cannot be handled in 'add' but instead has to be used with 'movl'. --- diff --git a/sysdeps/ia64/dl-fptr.h b/sysdeps/ia64/dl-fptr.h index de6771305e9..43907b9bf79 100644 --- a/sysdeps/ia64/dl-fptr.h +++ b/sysdeps/ia64/dl-fptr.h @@ -23,14 +23,14 @@ #include #include -#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 */