This is the mail archive of the libc-alpha@sources.redhat.com mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

"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.  */


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]