This is the mail archive of the
libc-alpha@sources.redhat.com
mailing list for the glibc project.
"fix" alpha unwinding
- From: Richard Henderson <rth at twiddle dot net>
- To: libc-alpha at sources dot redhat dot com
- Date: Wed, 25 Aug 2004 13:02:01 -0700
- Subject: "fix" alpha unwinding
Some versions of the unwinder can't deal with $31 as the always zero
register. Rather than deal with that pain, it seems much easier to
just always claim we have a normal frame pointer and set it to zero.
Committed.
r~
* sysdeps/alpha/elf/start.S (_start): Use $15 as frame unwind
instead of $31. Zero $15.
* sysdeps/unix/sysv/linux/alpha/clone.S (thread_start): Likewise.
Index: sysdeps/alpha/elf/start.S
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/alpha/elf/start.S,v
retrieving revision 1.14
diff -c -p -d -r1.14 start.S
*** sysdeps/alpha/elf/start.S 16 Aug 2004 04:51:02 -0000 1.14
--- sysdeps/alpha/elf/start.S 25 Aug 2004 19:55:21 -0000
***************
*** 44,53 ****
.ent _start, 0
.type _start,@function
_start:
! .frame $31, 0, $31
br gp, 1f
1: ldgp gp, 0(gp)
subq sp, 16, sp
.prologue 0
/* Load address of the user's main function. */
--- 44,54 ----
.ent _start, 0
.type _start,@function
_start:
! .frame $15, 0, $15
br gp, 1f
1: ldgp gp, 0(gp)
subq sp, 16, sp
+ mov 0, $15
.prologue 0
/* Load address of the user's main function. */
Index: sysdeps/unix/sysv/linux/alpha/clone.S
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/alpha/clone.S,v
retrieving revision 1.15
diff -c -p -d -r1.15 clone.S
*** sysdeps/unix/sysv/linux/alpha/clone.S 30 Jun 2003 23:21:49 -0000 1.15
--- sysdeps/unix/sysv/linux/alpha/clone.S 25 Aug 2004 19:55:29 -0000
*************** $error:
*** 89,95 ****
.ent thread_start
thread_start:
! .frame zero,0,zero,0
.prologue 0
/* Load up the arguments. */
--- 89,96 ----
.ent thread_start
thread_start:
! .frame fp,0,fp,0
! mov 0, fp
.prologue 0
/* Load up the arguments. */