This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
GNU C Library master sources branch master updated. glibc-2.18-709-ge646a16
- From: vapier at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 30 Dec 2013 15:24:55 -0000
- Subject: GNU C Library master sources branch master updated. glibc-2.18-709-ge646a16
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".
The branch, master has been updated
via e646a161cef3069fe1a6c92b750a87350630c62d (commit)
from 030a4976b81de991f53d0d3c4d049f7903bd407c (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=e646a161cef3069fe1a6c92b750a87350630c62d
commit e646a161cef3069fe1a6c92b750a87350630c62d
Author: Mike Frysinger <vapier@gentoo.org>
Date: Mon Dec 30 09:40:38 2013 +0000
ia64: setjmp/longjmp: stop saving/restoring fpsr [BZ #16379]
The new tst-setjmp-fp test has been failing on IA64 because the setjmp
and longjmp helpers take care of saving/restoring the fpsr register.
Per the C standards, this is incorrect, so disable that logic.
URL: https://sourceware.org/bugzilla/show_bug.cgi?id=16379
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
diff --git a/ports/ChangeLog.ia64 b/ports/ChangeLog.ia64
index b5c426e..d5e1924 100644
--- a/ports/ChangeLog.ia64
+++ b/ports/ChangeLog.ia64
@@ -1,5 +1,14 @@
2013-12-30 Mike Frysinger <vapier@gentoo.org>
+ [BZ #16379]
+ * sysdeps/unix/sysv/linux/ia64/__longjmp.S: Comment out loading of
+ fpsr. Update offsets accordingly.
+ * sysdeps/unix/sysv/linux/ia64/nptl/__ia64_longjmp.S: Likewise.
+ * sysdeps/unix/sysv/linux/ia64/setjmp.S: Comment out saving of
+ fpsr. Update offsets accordingly.
+
+2013-12-30 Mike Frysinger <vapier@gentoo.org>
+
* sysdeps/unix/sysv/linux/ia64/setjmp.S (setjmp): Call __sigsetjmp
via HIDDEN_JUMPTARGET.
(_setjmp): Likewise.
@@ -304,9 +313,9 @@
2012-09-24 Mike Frysinger <vapier@gentoo.org>
- * ports/sysdeps/ia64/fpu/fegetround.c (fegetround): Move contents
+ * sysdeps/ia64/fpu/fegetround.c (fegetround): Move contents
of function to ...
- * ports/sysdeps/ia64/fpu/get-rounding-mode.h: ... here.
+ * sysdeps/ia64/fpu/get-rounding-mode.h: ... here.
2012-09-24 Mike Frysinger <vapier@gentoo.org>
diff --git a/ports/sysdeps/unix/sysv/linux/ia64/__longjmp.S b/ports/sysdeps/unix/sysv/linux/ia64/__longjmp.S
index 8a70ae2..4860a8c 100644
--- a/ports/sysdeps/unix/sysv/linux/ia64/__longjmp.S
+++ b/ports/sysdeps/unix/sysv/linux/ia64/__longjmp.S
@@ -82,12 +82,12 @@ LEAF(__longjmp)
#ifdef CHECK_RSP
CHECK_RSP (r28)
#endif
- ld8.fill.nta gp=[r3],16 // r1 (gp)
+ ld8.fill.nta gp=[r3],32 // r1 (gp)
dep r11=-1,r23,3,6 // r11 <- ia64_rse_rnat_addr(jmpbuf.ar_bsp)
mov sp=r28 // r12 (sp)
;;
ld8.nta r16=[r2],16 // caller's unat
- ld8.nta r17=[r3],16 // fpsr
+// ld8.nta r17=[r3],16 // fpsr
;;
ld8.fill.nta r4=[r2],16 // r4
ld8.fill.nta r5=[r3],16 // r5 (gp)
@@ -97,7 +97,7 @@ LEAF(__longjmp)
ld8.fill.nta r7=[r3],16 // r7
;;
mov ar.unat=r16 // restore caller's unat
- mov ar.fpsr=r17 // restore fpsr
+// mov ar.fpsr=r17 // restore fpsr
;;
ld8.nta r16=[r2],16 // b0
ld8.nta r17=[r3],16 // b1
diff --git a/ports/sysdeps/unix/sysv/linux/ia64/nptl/__ia64_longjmp.S b/ports/sysdeps/unix/sysv/linux/ia64/nptl/__ia64_longjmp.S
index 41cc303..db61a2c 100644
--- a/ports/sysdeps/unix/sysv/linux/ia64/nptl/__ia64_longjmp.S
+++ b/ports/sysdeps/unix/sysv/linux/ia64/nptl/__ia64_longjmp.S
@@ -75,11 +75,11 @@ LEAF(__ia64_longjmp)
mov ar.unat=r25 // setup ar.unat (NaT bits for r1, r4-r7, and r12)
;;
ld8.fill.nta sp=[r2],16 // r12 (sp)
- ld8.fill.nta gp=[r3],16 // r1 (gp)
+ ld8.fill.nta gp=[r3],32 // r1 (gp)
dep r11=-1,r23,3,6 // r11 <- ia64_rse_rnat_addr(jmpbuf.ar_bsp)
;;
ld8.nta r16=[r2],16 // caller's unat
- ld8.nta r17=[r3],16 // fpsr
+// ld8.nta r17=[r3],16 // fpsr
;;
ld8.fill.nta r4=[r2],16 // r4
ld8.fill.nta r5=[r3],16 // r5 (gp)
@@ -88,7 +88,7 @@ LEAF(__ia64_longjmp)
ld8.fill.nta r7=[r3],16 // r7
;;
mov ar.unat=r16 // restore caller's unat
- mov ar.fpsr=r17 // restore fpsr
+// mov ar.fpsr=r17 // restore fpsr
;;
ld8.nta r16=[r2],16 // b0
ld8.nta r17=[r3],16 // b1
diff --git a/ports/sysdeps/unix/sysv/linux/ia64/setjmp.S b/ports/sysdeps/unix/sysv/linux/ia64/setjmp.S
index bf1b980..1be53cc 100644
--- a/ports/sysdeps/unix/sysv/linux/ia64/setjmp.S
+++ b/ports/sysdeps/unix/sysv/linux/ia64/setjmp.S
@@ -25,7 +25,7 @@
0x000 stack pointer (r12) ; unchangeable (see _JMPBUF_UNWINDS)
0x008 r1 (gp)
0x010 caller's unat
- 0x018 fpsr
+ 0x018 fpsr ; disabled per the C standard; BZ 16379
0x020 r4
0x028 r5
0x030 r6
@@ -89,15 +89,15 @@ ENTRY(__sigsetjmp)
.save ar.unat, loc2
mov loc2=ar.unat
;;
- mov r17=ar.fpsr
+// mov r17=ar.fpsr
mov r2=in0
add r3=8,in0
;;
.mem.offset 8,0; st8.spill.nta [r2]=sp,16 // r12 (sp)
-.mem.offset 0,0; st8.spill.nta [r3]=gp,16 // r1 (gp)
+.mem.offset 0,0; st8.spill.nta [r3]=gp,32 // r1 (gp)
;;
st8.nta [r2]=loc2,16 // save caller's unat
- st8.nta [r3]=r17,16 // save fpsr
+// st8.nta [r3]=r17,16 // save fpsr
add r8=0xa0,in0
;;
.mem.offset 8,0; st8.spill.nta [r2]=r4,16 // r4
-----------------------------------------------------------------------
Summary of changes:
ports/ChangeLog.ia64 | 13 +++++++++++--
ports/sysdeps/unix/sysv/linux/ia64/__longjmp.S | 6 +++---
.../unix/sysv/linux/ia64/nptl/__ia64_longjmp.S | 6 +++---
ports/sysdeps/unix/sysv/linux/ia64/setjmp.S | 8 ++++----
4 files changed, 21 insertions(+), 12 deletions(-)
hooks/post-receive
--
GNU C Library master sources