This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.
Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
The ia64 version of dl-fptr.c has a bug in that it incorrectly assumes
that the "local" variable will be within a 22-bit offset of gp. The
fix is to use "movl" instead so that "local" can be anywhere in the
64-bit address space.
Thanks to Asit Mallick for reporting this bug.
--david
2002-09-19 David Mosberger <davidm@hpl.hp.com>
* sysdeps/ia64/dl-fptr.c (make_fdesc): Load address of "local" via
a 64-bit gp-relative address to enable binaries with large data
sections.
Index: sysdeps/ia64/dl-fptr.c
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/ia64/dl-fptr.c,v
retrieving revision 1.6
diff -u -r1.6 dl-fptr.c
--- sysdeps/ia64/dl-fptr.c 31 Jan 2002 03:39:21 -0000 1.6
+++ sysdeps/ia64/dl-fptr.c 20 Sep 2002 01:38:17 -0000
@@ -127,7 +127,7 @@
unsigned int old;
struct local *l;
- asm ("addl %0 = @gprel (local), gp" : "=r" (l));
+ asm ("movl %0 = @gprel (local);; add %0 = %0, gp" : "=&r"(l));
t = l->root;
while (1)
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |