about summary refs log tree commit diff
path: root/sysdeps
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2004-12-17 10:09:19 +0000
committerJakub Jelinek <jakub@redhat.com>2004-12-17 10:09:19 +0000
commit337cd636a17559b7fba33c480759a4e6187e0647 (patch)
tree6195524bb75b92e28500e9c4153265a409ede509 /sysdeps
parent6ec2d7443853bce3f0957712540be6b296c1a672 (diff)
downloadglibc-337cd636a17559b7fba33c480759a4e6187e0647.tar.gz
glibc-337cd636a17559b7fba33c480759a4e6187e0647.tar.xz
glibc-337cd636a17559b7fba33c480759a4e6187e0647.zip
Updated to fedora-glibc-20041217T0906 cvs/fedora-glibc-2_3_3-97
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/alpha/fpu/libm-test-ulps2
-rw-r--r--sysdeps/ieee754/ldbl-128/e_expl.c1
-rw-r--r--sysdeps/powerpc/fpu/libm-test-ulps2
-rw-r--r--sysdeps/s390/fpu/libm-test-ulps2
-rw-r--r--sysdeps/sparc/sparc32/fpu/libm-test-ulps2
-rw-r--r--sysdeps/sparc/sparc64/fpu/libm-test-ulps74
-rw-r--r--sysdeps/unix/sysv/linux/dl-osinfo.h2
-rw-r--r--sysdeps/unix/sysv/linux/gethostid.c18
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S12
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S10
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc32/clone.S20
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/socket.S36
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h4
-rw-r--r--sysdeps/x86_64/fpu/libm-test-ulps32
14 files changed, 177 insertions, 40 deletions
diff --git a/sysdeps/alpha/fpu/libm-test-ulps b/sysdeps/alpha/fpu/libm-test-ulps
index 80942e98ec..7e8140cddc 100644
--- a/sysdeps/alpha/fpu/libm-test-ulps
+++ b/sysdeps/alpha/fpu/libm-test-ulps
@@ -1,7 +1,7 @@
 # Begin of automatic generation
 
 # atan2
-Test "atan2 (-0.00756827042671106339, -.001792735857538728036) == -1.80338464113663849327153994380":
+Test "atan2 (-0.00756827042671106339, -.001792735857538728036) == -1.80338464113663849327153994379639112":
 float: 6
 ifloat: 6
 Test "atan2 (-0.75, -1.0) == -2.49809154479650885165983415456218025":
diff --git a/sysdeps/ieee754/ldbl-128/e_expl.c b/sysdeps/ieee754/ldbl-128/e_expl.c
index e4cf8564bf..31ff16f8c0 100644
--- a/sysdeps/ieee754/ldbl-128/e_expl.c
+++ b/sysdeps/ieee754/ldbl-128/e_expl.c
@@ -66,6 +66,7 @@
 #include <fenv.h>
 #include <inttypes.h>
 #include <math_private.h>
+#include <stdlib.h>
 #include "t_expl.h"
 
 static const long double C[] = {
diff --git a/sysdeps/powerpc/fpu/libm-test-ulps b/sysdeps/powerpc/fpu/libm-test-ulps
index 72c27265b4..6dd3940d22 100644
--- a/sysdeps/powerpc/fpu/libm-test-ulps
+++ b/sysdeps/powerpc/fpu/libm-test-ulps
@@ -10,7 +10,7 @@ ifloat: 3
 Test "atan2 (1.390625, 0.9296875) == 0.981498387184244311516296577615519772":
 float: 1
 ifloat: 1
-Test "atan2 (-0.00756827042671106339, -.001792735857538728036) == -1.80338464113663849327153994380":
+Test "atan2 (-0.00756827042671106339, -.001792735857538728036) == -1.80338464113663849327153994379639112":
 float: 6
 ifloat: 6
 
diff --git a/sysdeps/s390/fpu/libm-test-ulps b/sysdeps/s390/fpu/libm-test-ulps
index e5f388e947..cfade822a3 100644
--- a/sysdeps/s390/fpu/libm-test-ulps
+++ b/sysdeps/s390/fpu/libm-test-ulps
@@ -10,7 +10,7 @@ ifloat: 3
 Test "atan2 (1.390625, 0.9296875) == 0.981498387184244311516296577615519772":
 float: 1
 ifloat: 1
-Test "atan2 (-0.00756827042671106339, -.001792735857538728036) == -1.80338464113663849327153994380":
+Test "atan2 (-0.00756827042671106339, -.001792735857538728036) == -1.80338464113663849327153994379639112":
 float: 6
 ifloat: 6
 
diff --git a/sysdeps/sparc/sparc32/fpu/libm-test-ulps b/sysdeps/sparc/sparc32/fpu/libm-test-ulps
index 765ddc5572..979e0e2c91 100644
--- a/sysdeps/sparc/sparc32/fpu/libm-test-ulps
+++ b/sysdeps/sparc/sparc32/fpu/libm-test-ulps
@@ -10,7 +10,7 @@ ifloat: 3
 Test "atan2 (1.390625, 0.9296875) == 0.981498387184244311516296577615519772":
 float: 1
 ifloat: 1
-Test "atan2 (-0.00756827042671106339, -.001792735857538728036) == -1.80338464113663849327153994380":
+Test "atan2 (-0.00756827042671106339, -.001792735857538728036) == -1.80338464113663849327153994379639112":
 float: 6
 ifloat: 6
 
diff --git a/sysdeps/sparc/sparc64/fpu/libm-test-ulps b/sysdeps/sparc/sparc64/fpu/libm-test-ulps
index d9e60f5e4c..4888dd2149 100644
--- a/sysdeps/sparc/sparc64/fpu/libm-test-ulps
+++ b/sysdeps/sparc/sparc64/fpu/libm-test-ulps
@@ -1,6 +1,11 @@
 # Begin of automatic generation
 
 # atan2
+Test "atan2 (-0.00756827042671106339, -.001792735857538728036) == -1.80338464113663849327153994379639112":
+float: 6
+ifloat: 6
+ildouble: 1
+ldouble: 1
 Test "atan2 (-0.75, -1.0) == -2.49809154479650885165983415456218025":
 float: 3
 ifloat: 3
@@ -130,9 +135,14 @@ double: 1
 idouble: 1
 
 # ccos
+Test "Real part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
+ildouble: 1
+ldouble: 1
 Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
 float: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
 double: 1
 float: 1
@@ -146,9 +156,13 @@ ifloat: 1
 Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
 float: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
 float: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "Real part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
 double: 1
 float: 1
@@ -195,11 +209,16 @@ double: 1
 float: 1
 idouble: 1
 ifloat: 1
+Test "Real part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
+ildouble: 1
+ldouble: 1
 Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
 double: 1
 float: 5
 idouble: 1
 ifloat: 5
+ildouble: 1
+ldouble: 1
 Test "Imaginary part of: clog10 (-3 + inf i) == inf + pi/2*log10(e) i":
 double: 1
 float: 1
@@ -318,8 +337,8 @@ double: 2
 float: 3
 idouble: 2
 ifloat: 3
-ildouble: 1
-ldouble: 1
+ildouble: 10
+ldouble: 10
 Test "Real part of: cpow (2 + 0 i, 10 + 0 i) == 1024.0 + 0.0 i":
 ildouble: 2
 ldouble: 2
@@ -342,11 +361,17 @@ ildouble: 1
 ldouble: 1
 
 # csin
+Test "Imaginary part of: csin (-2 - 3 i) == -9.15449914691142957346729954460983256 + 4.16890695996656435075481305885375484 i":
+ildouble: 1
+ldouble: 1
 Test "Real part of: csin (0.75 + 1.25 i) == 1.28722291002649188575873510790565441 + 1.17210635989270256101081285116138863 i":
 ildouble: 1
 ldouble: 1
 
 # csinh
+Test "Real part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
+ildouble: 1
+ldouble: 1
 Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
 double: 1
 idouble: 1
@@ -376,6 +401,11 @@ ldouble: 1
 Test "Real part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
 double: 1
 idouble: 1
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: ctan (-2 - 3 i) == 0.376402564150424829275122113032269084e-2 - 1.00323862735360980144635859782192726 i":
+ildouble: 1
+ldouble: 1
 Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
 double: 1
 idouble: 1
@@ -388,6 +418,11 @@ double: 1
 float: 2
 idouble: 1
 ifloat: 2
+ildouble: 1
+ldouble: 1
+Test "Imaginary part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
+ildouble: 1
+ldouble: 1
 Test "Imaginary part of: ctanh (0 + pi/4 i) == 0.0 + 1.0 i":
 float: 1
 ifloat: 1
@@ -644,11 +679,15 @@ double: 1
 float: 1
 idouble: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
 double: 1
 float: 2
 idouble: 1
 ifloat: 2
+ildouble: 1
+ldouble: 1
 
 # log10
 Test "log10 (0.75) == -0.124938736608299953132449886193870744":
@@ -906,8 +945,8 @@ idouble: 1
 
 # Maximal error of functions:
 Function: "atan2":
-float: 3
-ifloat: 3
+float: 6
+ifloat: 6
 ildouble: 1
 ldouble: 1
 
@@ -996,20 +1035,28 @@ double: 1
 float: 1
 idouble: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 
 Function: Imaginary part of "ccos":
 float: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 
 Function: Real part of "ccosh":
 double: 1
 float: 1
 idouble: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 
 Function: Imaginary part of "ccosh":
 float: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 
 Function: Real part of "cexp":
 float: 1
@@ -1036,12 +1083,15 @@ ifloat: 3
 Function: Real part of "clog10":
 float: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 
 Function: Imaginary part of "clog10":
 double: 1
 float: 5
 idouble: 1
 ifloat: 5
+ildouble: 1
 ldouble: 1
 
 Function: "cos":
@@ -1057,8 +1107,8 @@ double: 2
 float: 4
 idouble: 2
 ifloat: 4
-ildouble: 1
-ldouble: 1
+ildouble: 10
+ldouble: 10
 
 Function: Imaginary part of "cpow":
 double: 2
@@ -1072,9 +1122,15 @@ Function: Real part of "csin":
 ildouble: 1
 ldouble: 1
 
+Function: Imaginary part of "csin":
+ildouble: 1
+ldouble: 1
+
 Function: Real part of "csinh":
 float: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 
 Function: Imaginary part of "csinh":
 double: 1
@@ -1095,6 +1151,8 @@ ldouble: 1
 Function: Real part of "ctan":
 double: 1
 idouble: 1
+ildouble: 1
+ldouble: 1
 
 Function: Imaginary part of "ctan":
 double: 1
@@ -1107,10 +1165,14 @@ double: 1
 float: 2
 idouble: 1
 ifloat: 2
+ildouble: 1
+ldouble: 1
 
 Function: Imaginary part of "ctanh":
 float: 1
 ifloat: 1
+ildouble: 1
+ldouble: 1
 
 Function: "erf":
 double: 1
diff --git a/sysdeps/unix/sysv/linux/dl-osinfo.h b/sysdeps/unix/sysv/linux/dl-osinfo.h
index 5abc3c47c8..abc67fcdcf 100644
--- a/sysdeps/unix/sysv/linux/dl-osinfo.h
+++ b/sysdeps/unix/sysv/linux/dl-osinfo.h
@@ -65,7 +65,7 @@ dl_fatal (const char *str)
 		|| (reslen = __read (fd, bufmem, sizeof (bufmem))) <= 0)      \
   	      /* This also didn't work.  We give up since we cannot	      \
 		 make sure the library can actually work.  */		      \
-	      FATAL ("FATAL: cannot determine library version\n");	      \
+	      FATAL ("FATAL: cannot determine kernel version\n");	      \
 	    __close (fd);						      \
 	    buf[MIN (reslen, (ssize_t) sizeof (bufmem) - 1)] = '\0';	      \
 	  }								      \
diff --git a/sysdeps/unix/sysv/linux/gethostid.c b/sysdeps/unix/sysv/linux/gethostid.c
index c7f894033d..f44a9afbf2 100644
--- a/sysdeps/unix/sysv/linux/gethostid.c
+++ b/sysdeps/unix/sysv/linux/gethostid.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995,1996,1998-2001,2003 Free Software Foundation, Inc.
+/* Copyright (C) 1995,1996,1998-2001,2003,2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -33,6 +33,7 @@ sethostid (id)
 {
   int fd;
   ssize_t written;
+  int32_t id32 = id;
 
   /* Test for appropriate rights to set host ID.  */
   if (__libc_enable_secure)
@@ -41,16 +42,23 @@ sethostid (id)
       return -1;
     }
 
+  /* Make sure the ID is not too large.  Needed for bi-arch support.   */
+  if (id32 != id)
+    {
+      __set_errno (EOVERFLOW);
+      return -1;
+    }
+
   /* Open file for writing.  Everybody is allowed to read this file.  */
   fd = open_not_cancel (HOSTIDFILE, O_CREAT|O_WRONLY|O_TRUNC, 0644);
   if (fd < 0)
     return -1;
 
-  written = write_not_cancel (fd, &id, sizeof (id));
+  written = write_not_cancel (fd, &id32, sizeof (id32));
 
   close_not_cancel_no_status (fd);
 
-  return written != sizeof (id) ? -1 : 0;
+  return written != sizeof (id32) ? -1 : 0;
 }
 
 #else
@@ -66,7 +74,7 @@ gethostid ()
   size_t buflen;
   char *buffer;
   struct hostent hostbuf, *hp;
-  unsigned long int id;
+  int32_t id;
   struct in_addr in;
   int herr;
   int fd;
@@ -110,6 +118,6 @@ gethostid ()
 
   /* For the return value to be not exactly the IP address we do some
      bit fiddling.  */
-  return in.s_addr << 16 | in.s_addr >> 16;
+  return (int32_t) (in.s_addr << 16 | in.s_addr >> 16);
 }
 #endif
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S
index 0f392366eb..61e0f8ed11 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S
@@ -125,7 +125,7 @@ ENTRY(__novec_getcontext)
   stfd  fp26,(SIGCONTEXT_FP_REGS+(PT_R26*8))(r3)
   stfd  fp27,(SIGCONTEXT_FP_REGS+(PT_R27*8))(r3)
   stfd  fp28,(SIGCONTEXT_FP_REGS+(PT_R28*8))(r3)
-  stfd  fp29,(SIGCONTEXT_GP_REGS+(PT_R29*8))(r3)
+  stfd  fp29,(SIGCONTEXT_FP_REGS+(PT_R29*8))(r3)
   mffs  fp0
   stfd  fp30,(SIGCONTEXT_FP_REGS+(PT_R30*8))(r3)
   stfd  fp31,(SIGCONTEXT_FP_REGS+(PT_R31*8))(r3)
@@ -263,7 +263,7 @@ ENTRY(__getcontext)
   stfd  fp26,(SIGCONTEXT_FP_REGS+(PT_R26*8))(r3)
   stfd  fp27,(SIGCONTEXT_FP_REGS+(PT_R27*8))(r3)
   stfd  fp28,(SIGCONTEXT_FP_REGS+(PT_R28*8))(r3)
-  stfd  fp29,(SIGCONTEXT_GP_REGS+(PT_R29*8))(r3)
+  stfd  fp29,(SIGCONTEXT_FP_REGS+(PT_R29*8))(r3)
   mffs  fp0
   stfd  fp30,(SIGCONTEXT_FP_REGS+(PT_R30*8))(r3)
   stfd  fp31,(SIGCONTEXT_FP_REGS+(PT_R31*8))(r3)
@@ -275,17 +275,17 @@ ENTRY(__getcontext)
   ld    r5,RTLD_GLOBAL_RO_DL_HWCAP_OFFSET(r5)
 # else
   ld    r5,0(r5) /* Load extern _dl_hwcap.  */
-# endif  
+# endif
   la    r10,(SIGCONTEXT_V_RESERVE+8)(r3)
   la    r9,(SIGCONTEXT_V_RESERVE+24)(r3)
-  
+
   andis.  r5,r5,(PPC_FEATURE_HAS_ALTIVEC >> 16)
-  
+
   clrrdi  r10,r10,4
   beq   L(has_no_vec)
   clrrdi  r9,r9,4
   mr    r5,r10	/* Capture *v_regs value in r5.  */
-  
+
   stvx  v0,0,r10
   stvx  v1,0,r9
   addi  r10,r10,32
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S
index 6644c8abff..f99df951a2 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S
@@ -125,7 +125,7 @@ ENTRY(__novec_swapcontext)
   stfd  fp26,(SIGCONTEXT_FP_REGS+(PT_R26*8))(r3)
   stfd  fp27,(SIGCONTEXT_FP_REGS+(PT_R27*8))(r3)
   stfd  fp28,(SIGCONTEXT_FP_REGS+(PT_R28*8))(r3)
-  stfd  fp29,(SIGCONTEXT_GP_REGS+(PT_R29*8))(r3)
+  stfd  fp29,(SIGCONTEXT_FP_REGS+(PT_R29*8))(r3)
   mffs  fp0
   stfd  fp30,(SIGCONTEXT_FP_REGS+(PT_R30*8))(r3)
   stfd  fp31,(SIGCONTEXT_FP_REGS+(PT_R31*8))(r3)
@@ -386,7 +386,7 @@ ENTRY(__swapcontext)
   stfd  fp26,(SIGCONTEXT_FP_REGS+(PT_R26*8))(r3)
   stfd  fp27,(SIGCONTEXT_FP_REGS+(PT_R27*8))(r3)
   stfd  fp28,(SIGCONTEXT_FP_REGS+(PT_R28*8))(r3)
-  stfd  fp29,(SIGCONTEXT_GP_REGS+(PT_R29*8))(r3)
+  stfd  fp29,(SIGCONTEXT_FP_REGS+(PT_R29*8))(r3)
   mffs  fp0
   stfd  fp30,(SIGCONTEXT_FP_REGS+(PT_R30*8))(r3)
   stfd  fp31,(SIGCONTEXT_FP_REGS+(PT_R31*8))(r3)
@@ -401,12 +401,12 @@ ENTRY(__swapcontext)
 #endif
   la    r10,(SIGCONTEXT_V_RESERVE+8)(r3)
   la    r9,(SIGCONTEXT_V_RESERVE+24)(r3)
-  
+
   andis.  r8,r8,(PPC_FEATURE_HAS_ALTIVEC >> 16)
 
   clrrdi  r10,r10,4
   beq   L(has_no_vec)
-  
+
   clrrdi  r9,r9,4
   mr    r8,r10	/* Capture *v_regs value in r5.  */
 
@@ -493,7 +493,7 @@ ENTRY(__swapcontext)
   mfvscr  v0
   mfspr r0,VRSAVE
   stvx  v0,0,r10
-  stw   r0,0(9)
+  stw   r0,0(r9)
 
 L(has_no_vec):
 /*
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S b/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S
index 5bebe35628..66cdbf3ca7 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S
@@ -1,4 +1,5 @@
-/* Copyright (C) 1996, 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998, 2000, 2003, 2004
+   Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Richard Henderson (rth@tamu.edu).
 
@@ -22,6 +23,10 @@
 
 #include <asm/errno.h>
 #include <asm/unistd.h>
+#include <tcb-offsets.h>
+
+#define CLONE_VM	0x00000100
+#define CLONE_THREAD	0x00010000
 
 /* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg,
 	     pid_t *ptid, void *tls, pid_t *ctid); */
@@ -69,6 +74,19 @@ __clone:
 	.type	__thread_start,@function
 
 __thread_start:
+#ifdef RESET_PID
+	sethi	%hi(CLONE_THREAD), %l0
+	andcc	%i2, %l0, %g0
+	bne	1f
+	 andcc	%i2, CLONE_VM, %g0
+	bne,a	2f
+	 mov	-1,%o0
+	set	__NR_getpid,%g1
+	ta	0x10
+2:	st	%o0,[%g7 + PID]
+	st	%o0,[%g7 + TID]
+1:
+#endif
 	call	%i0
 	 mov	%i3,%o0
 	call	_exit,0
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/socket.S b/sysdeps/unix/sysv/linux/sparc/sparc64/socket.S
index 750c1258ed..575416ff3f 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/socket.S
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/socket.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 2002, 2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Miguel de Icaza <miguel@gnu.ai.mit.edu>, 1997.
 
@@ -17,7 +17,7 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
-#include <sysdep.h>
+#include <sysdep-cancel.h>
 #include <socketcall.h>
 
 #define P(a, b) P2(a, b)
@@ -63,7 +63,12 @@ ENTRY (__socket)
 #endif
 #endif
 
-	mov	P(SOCKOP_,socket), %o0		/* arg 1: socket subfunction */
+#if defined NEED_CANCELLATION && defined CENABLE
+	SINGLE_THREAD_P
+	cmp	%g1, 0
+	bne	.Lsocket_cancel
+#endif
+	 mov	P(SOCKOP_,socket), %o0		/* arg 1: socket subfunction */
 	add	%sp, STACK_BIAS + 128, %o1	/* arg 2: parameter block */
 	LOADSYSCALL(socketcall)
 	ta	0x6d
@@ -73,6 +78,31 @@ ENTRY (__socket)
 	retl
 	 nop
 
+#if defined NEED_CANCELLATION && defined CENABLE
+.Lsocket_cancel:
+	cfi_startproc
+	save	%sp, -160, %sp
+	cfi_def_cfa_register (%fp)
+	cfi_window_save
+	cfi_register (%o7, %i7)
+	CENABLE
+	 nop
+	mov	%o0, %l0
+	add	%sp, 160 + STACK_BIAS + 128, %o1
+	mov	P(SOCKOP_,socket), %o0
+	LOADSYSCALL(socketcall)
+	ta	0x6d
+
+	bcs,pn	%xcc, __syscall_error_handler2
+	 mov	%o0, %l1
+	CDISABLE
+	 mov	%l0, %o0
+	jmpl	%i7 + 8, %g0
+	 restore %g0, %l1, %o0
+	cfi_endproc
+	SYSCALL_ERROR_HANDLER2
+#endif
+
 	SYSCALL_ERROR_HANDLER
 
 END (__socket)
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h b/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h
index 37a68aaeba..3c6492aeca 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 2000, 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 2000, 2002, 2003, 2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Richard Henderson <richard@gnu.ai.mit.edu>, 1997.
 
@@ -85,7 +85,7 @@ SYSCALL_ERROR_HANDLER_ENTRY(__syscall_error_handler)			\
 	sethi	%hi(_GLOBAL_OFFSET_TABLE_-4), %l7;			\
 	call	__sparc64.get_pic.l7;					\
 	 add	%l7, %lo(_GLOBAL_OFFSET_TABLE_+4), %l7;			\
-	ldx	[%l7 + errno], %l0;					\
+	ldx	[%l7 + rtld_errno], %l0;				\
 	st	%i0, [%l0];						\
 	jmpl	%i7+8, %g0;						\
 	 restore %g0, -1, %o0;						\
diff --git a/sysdeps/x86_64/fpu/libm-test-ulps b/sysdeps/x86_64/fpu/libm-test-ulps
index 8b59bb2bde..b3ce8bfeee 100644
--- a/sysdeps/x86_64/fpu/libm-test-ulps
+++ b/sysdeps/x86_64/fpu/libm-test-ulps
@@ -32,7 +32,7 @@ ifloat: 3
 Test "atan2 (1.390625, 0.9296875) == 0.981498387184244311516296577615519772":
 float: 1
 ifloat: 1
-Test "atan2 (-0.00756827042671106339, -.001792735857538728036) == -1.80338464113663849327153994380":
+Test "atan2 (-0.00756827042671106339, -.001792735857538728036) == -1.80338464113663849327153994379639112":
 float: 6
 ifloat: 6
 
@@ -155,6 +155,9 @@ ildouble: 1
 ldouble: 1
 
 # ccos
+Test "Real part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
+double: 1
+idouble: 1
 Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
 float: 1
 ifloat: 1
@@ -323,6 +326,9 @@ idouble: 1
 ifloat: 1
 ildouble: 1
 ldouble: 1
+Test "cos (0.80190127184058835) == 0.69534156199418473":
+double: 1
+idouble: 1
 
 # cpow
 Test "Real part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i":
@@ -383,6 +389,9 @@ ldouble: 1
 Test "Imaginary part of: csin (0.75 + 1.25 i) == 1.28722291002649188575873510790565441 + 1.17210635989270256101081285116138863 i":
 float: 1
 ifloat: 1
+Test "Imaginary part of: csin (-2 - 3 i) == -9.15449914691142957346729954460983256 + 4.16890695996656435075481305885375484 i":
+double: 1
+idouble: 1
 
 # csinh
 Test "Real part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
@@ -482,15 +491,15 @@ ifloat: 1
 double: 2
 idouble: 2
 Test "exp10 (0.75) == 5.62341325190349080394951039776481231":
-ildouble: 1
-ldouble: 1
+ildouble: 2
+ldouble: 2
 float: 1
 ifloat: 1
 double: 1
 idouble: 1
 Test "exp10 (3) == 1000":
-ildouble: 3
-ldouble: 3
+ildouble: 8
+ldouble: 8
 float: 2
 ifloat: 2
 double: 6
@@ -564,7 +573,9 @@ ifloat: 1
 ildouble: 1
 ldouble: 1
 Test "j0 (8.0) == 0.171650807137553906090869407851972001":
+double: 2
 float: 1
+idouble: 2
 ifloat: 1
 
 # j1
@@ -609,7 +620,9 @@ ifloat: 1
 ildouble: 1
 ldouble: 1
 Test "jn (0, 8.0) == 0.171650807137553906090869407851972001":
+double: 2
 float: 1
+idouble: 2
 ifloat: 1
 Test "jn (1, 10.0) == 0.0434727461688614366697487680258592883":
 float: 2
@@ -744,6 +757,9 @@ ldouble: 1
 Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res":
 float: 1
 ifloat: 1
+Test "sincos (0.80190127184058835, &sin_res, &cos_res) puts 0.69534156199418473 in cos_res":
+double: 1
+idouble: 1
 
 # tan
 Test "tan (pi/4) == 1":
@@ -1117,7 +1133,9 @@ ildouble: 1
 ldouble: 1
 
 Function: Imaginary part of "csin":
+double: 1
 float: 1
+idouble: 1
 ifloat: 1
 
 Function: Real part of "csinh":
@@ -1181,8 +1199,8 @@ ildouble: 1
 ldouble: 1
 
 Function: "exp10":
-ildouble: 3
-ldouble: 3
+ildouble: 8
+ldouble: 8
 float: 2
 ifloat: 2
 double: 6