FYI. can we please pick this up from cvs for the next glibc upload? thx randolph
----- Forwarded message from David Mosberger <[EMAIL PROTECTED]> ----- Date: Thu, 27 Mar 2003 17:04:33 -0800 From: David Mosberger <[EMAIL PROTECTED]> To: [EMAIL PROTECTED], [email protected] Subject: IMPORTANT glibc fix Reply-To: [EMAIL PROTECTED] X-Mailing-List: <[email protected]> archive/latest/891 The patch below was just applied to the CVS glibc. Since it fixes an important bug, I'd highly recommend for distributors to also apply the patch to their currently shipping version of glibc. --david -------------------------------------------------------------------- From: David Mosberger <[EMAIL PROTECTED]> Sender: [EMAIL PROTECTED] To: [EMAIL PROTECTED] Subject: ia64: unat restoration fixes for setjmp() & getcontext() Date: Thu, 27 Mar 2003 11:40:03 -0800 Reply-To: [EMAIL PROTECTED] The ia64 versions of __sigsetjmp() and getcontext() failed to restore ar.unat before returning. Patch below should fix that. --david 2003-03-27 David Mosberger <[EMAIL PROTECTED]> * sysdeps/unix/sysv/linux/ia64/getcontext.S: Restore caller's ar.unat before returning. Add missing .mem.offset directives to ensure file gets assembled without warnings. * sysdeps/unix/sysv/linux/ia64/setjmp.S: Ditto. Index: sysdeps/unix/sysv/linux/ia64/setjmp.S =================================================================== RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/ia64/setjmp.S,v retrieving revision 1.7 diff -u -r1.7 setjmp.S --- sysdeps/unix/sysv/linux/ia64/setjmp.S 31 Dec 2002 20:37:30 -0000 1.7 +++ sysdeps/unix/sysv/linux/ia64/setjmp.S 27 Mar 2003 18:05:14 -0000 @@ -87,21 +87,22 @@ ENTRY(__sigsetjmp) .prologue ASM_UNW_PRLG_RP|ASM_UNW_PRLG_PFS, ASM_UNW_PRLG_GRSAVE(2) alloc loc1=ar.pfs,2,2,2,0 + .save ar.unat, r16 mov r16=ar.unat ;; mov r17=ar.fpsr mov r2=in0 add r3=8,in0 ;; - st8.spill.nta [r2]=sp,16 // r12 (sp) - st8.spill.nta [r3]=gp,16 // r1 (gp) +.mem.offset 8,0; st8.spill.nta [r2]=sp,16 // r12 (sp) +.mem.offset 0,0; st8.spill.nta [r3]=gp,16 // r1 (gp) ;; st8.nta [r2]=r16,16 // save caller's unat st8.nta [r3]=r17,16 // save fpsr add r8=0xa0,in0 ;; - st8.spill.nta [r2]=r4,16 // r4 - st8.spill.nta [r3]=r5,16 // r5 +.mem.offset 8,0; st8.spill.nta [r2]=r4,16 // r4 +.mem.offset 0,0; st8.spill.nta [r3]=r5,16 // r5 add r9=0xb0,in0 ;; stf.spill.nta [r8]=f2,32 @@ -143,8 +144,8 @@ stf.spill.nta [r8]=f30 stf.spill.nta [r9]=f31 - st8.spill.nta [r2]=r6,16 // r6 - st8.spill.nta [r3]=r7,16 // r7 +.mem.offset 8,0; st8.spill.nta [r2]=r6,16 // r6 +.mem.offset 0,0; st8.spill.nta [r3]=r7,16 // r7 ;; mov r23=ar.bsp mov r25=ar.unat @@ -170,9 +171,10 @@ st8.nta [r3]=in0 // &__jmp_buf br.call.dpnt.few rp=__sigjmp_save .ret0: // force a new bundle ::q - mov r8=0 + mov.m ar.unat=r16 // restore caller's unat mov rp=loc0 mov ar.pfs=loc1 + mov r8=0 ret END(__sigsetjmp) Index: sysdeps/unix/sysv/linux/ia64/getcontext.S =================================================================== RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/ia64/getcontext.S,v retrieving revision 1.6 diff -u -r1.6 getcontext.S --- sysdeps/unix/sysv/linux/ia64/getcontext.S 9 Oct 2002 09:57:46 -0000 1.6 +++ sysdeps/unix/sysv/linux/ia64/getcontext.S 27 Mar 2003 19:33:04 -0000 @@ -34,6 +34,7 @@ other than the PRESERVED state. */ ENTRY(__getcontext) + .prologue alloc r16 = ar.pfs, 1, 0, 3, 0 // sigprocmask (SIG_BLOCK, NULL, &sc->sc_mask): @@ -53,7 +54,9 @@ add r2 = SC_GR+1*8, r32 ;; mov.m rBSP = ar.bsp + .save ar.unat, rUNAT mov.m rUNAT = ar.unat + .body add r3 = SC_GR+4*8, r32 ;; @@ -65,8 +68,8 @@ .mem.offset 8,0; st8.spill [r3] = r6, 48 and rTMP = ~0x3, rRSC ;; - st8.spill [r2] = r7, (SC_FR+2*16-(SC_GR+7*8)) - st8.spill [r3] = sp, (SC_FR+3*16-(SC_GR+12*8)) +.mem.offset 0,0; st8.spill [r2] = r7, (SC_FR+2*16-(SC_GR+7*8)) +.mem.offset 8,0; st8.spill [r3] = sp, (SC_FR+3*16-(SC_GR+12*8)) ;; mov.m ar.rsc = rTMP // put RSE into enforced lazy mode mov.m rNAT = ar.unat @@ -119,8 +122,8 @@ stf.spill [r3] = f31, 32 mov rB1 = b1 ;; + mov ar.unat = rUNAT // we're done spilling integer regs; restore caller's UNaT add r2 = SC_NAT, r32 - nop 0 add r3 = SC_BSP, r32 ;; st8 [r2] = rNAT, (SC_RNAT-SC_NAT) -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED] ----- End forwarded message -----

