aboutsummaryrefslogtreecommitdiff
path: root/sysdeps
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1997-03-17 03:04:18 +0000
committerUlrich Drepper <drepper@redhat.com>1997-03-17 03:04:18 +0000
commit81e9dad67243a2ba7c4344e05a5e48b54efe991a (patch)
tree59f0642026a98ec415938a66395a1fcc85d90676 /sysdeps
parent0d8733c4fc3695c7987548d10c344445f3eb552d (diff)
downloadglibc-81e9dad67243a2ba7c4344e05a5e48b54efe991a.tar
glibc-81e9dad67243a2ba7c4344e05a5e48b54efe991a.tar.gz
glibc-81e9dad67243a2ba7c4344e05a5e48b54efe991a.tar.bz2
glibc-81e9dad67243a2ba7c4344e05a5e48b54efe991a.zip
Update.
1997-03-17 04:00 Ulrich Drepper <drepper@cygnus.com> * sysdeps/libmieee754/w_atan2.c: Don't ignore exception if library type is SVID. * sysdeps/libmieee754/w_atan2f.c: Likewise. * sysdeps/libmieee754/w_atan2l.c: Likewise. * sysdeps/unix/sysv/linux/sys/mman.h (msync): Add descrption for FLAGS parameter. 1997-03-16 20:28 Philip Blundell <phil@london.uk.eu.org> * sysdeps/unix/sysv/linux/socketbits.h: Add more SOL_ values. Change msg_iovlen and msg_controllen (in struct msghdr) to `size_t' to keep in step with kernel. * manual/examples/dir2.c: New example for scandir. * math/test/float.c: New file. Frontend for float tests. * math/test/double.c: New file. Frontend for double tests. * math/test/longdouble.c: New file. Frontend for long double tests. * sysdeps/ieee754/huge_val.h: Remove definition of long double * sysdeps/libm-i387/s_scalbn.S: Likewise. * sysdeps/libm-i387/s_scalbnf.S: Likewise. * sysdeps/libm-i387/s_scalbnl.S: Likewise. * sysdeps/libm-i387/s_expm1.S: Change return value for -inf * sysdeps/libm-i387/s_expm1f.S: Likewise. * sysdeps/libm-i387/s_expm1l.S: Likewise. * sysdeps/libm-i387/s_isinfl.c: Return -1 for -inf. * sysdeps/libm-i387/s_logbl.S: Correct return value. Discard first * sysdeps/libm-ieee754/w_powf.c: Likewise. * sysdeps/libm-ieee754/w_powl.c: Likewise. * sysdeps/unix/sysv/linux/alpha/statbuf.h: Likewise. * nss/nss_files/files-hosts.c: Likewise. Based on a patch by H.J. Lu <hjl@gnu.ai.mit.edu>. * nis/ypclnt.c (__yp_bind): Fix possible buffer overflow. * posix/unistd.h: Add prototype for __euidaccess. * sysdeps/stub/euidaccess.c: Likewise.
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/libm-ieee754/k_standard.c42
-rw-r--r--sysdeps/libm-ieee754/s_fpclassifyf.c4
-rw-r--r--sysdeps/libm-ieee754/w_atan2.c2
-rw-r--r--sysdeps/libm-ieee754/w_atan2f.c4
-rw-r--r--sysdeps/libm-ieee754/w_atan2l.c4
-rw-r--r--sysdeps/unix/sysv/linux/socketbits.h23
-rw-r--r--sysdeps/unix/sysv/linux/sys/mman.h6
7 files changed, 64 insertions, 21 deletions
diff --git a/sysdeps/libm-ieee754/k_standard.c b/sysdeps/libm-ieee754/k_standard.c
index 35026faa9d..ada1df1a99 100644
--- a/sysdeps/libm-ieee754/k_standard.c
+++ b/sysdeps/libm-ieee754/k_standard.c
@@ -18,6 +18,8 @@ static char rcsid[] = "$NetBSD: k_standard.c,v 1.6 1995/05/10 20:46:35 jtc Exp $
#include "math_private.h"
#include <errno.h>
+#include <assert.h>
+
#ifndef _USE_WRITE
#include <stdio.h> /* fputs(), stderr */
#define WRITE2(u,v) fputs(u, stderr)
@@ -109,7 +111,10 @@ static double zero = 0.0; /* used as const */
exc.type = DOMAIN;
exc.name = type < 100 ? "acos" : (type < 200
? "acosf" : "acosl");;
- exc.retval = zero;
+ if (_LIB_VERSION == _SVID_)
+ exc.retval = HUGE;
+ else
+ exc.retval = NAN;
if (_LIB_VERSION == _POSIX_)
__set_errno (EDOM);
else if (!__matherr(&exc)) {
@@ -126,7 +131,10 @@ static double zero = 0.0; /* used as const */
exc.type = DOMAIN;
exc.name = type < 100 ? "asin" : (type < 200
? "asinf" : "asinl");
- exc.retval = zero;
+ if (_LIB_VERSION == _SVID_)
+ exc.retval = HUGE;
+ else
+ exc.retval = NAN;
if(_LIB_VERSION == _POSIX_)
__set_errno (EDOM);
else if (!__matherr(&exc)) {
@@ -145,7 +153,8 @@ static double zero = 0.0; /* used as const */
exc.type = DOMAIN;
exc.name = type < 100 ? "atan2" : (type < 200
? "atan2f" : "atan2l");
- exc.retval = zero;
+ assert (_LIB_VERSION == _SVID_);
+ exc.retval = HUGE;
if(_LIB_VERSION == _POSIX_)
__set_errno (EDOM);
else if (!__matherr(&exc)) {
@@ -399,7 +408,7 @@ static double zero = 0.0; /* used as const */
if (_LIB_VERSION == _SVID_)
exc.retval = -HUGE;
else
- exc.retval = -HUGE_VAL;
+ exc.retval = NAN;
if (_LIB_VERSION == _POSIX_)
__set_errno (EDOM);
else if (!__matherr(&exc)) {
@@ -439,7 +448,7 @@ static double zero = 0.0; /* used as const */
if (_LIB_VERSION == _SVID_)
exc.retval = -HUGE;
else
- exc.retval = -HUGE_VAL;
+ exc.retval = NAN;
if (_LIB_VERSION == _POSIX_)
__set_errno (EDOM);
else if (!__matherr(&exc)) {
@@ -500,7 +509,7 @@ static double zero = 0.0; /* used as const */
case 23:
case 123:
case 223:
- /* 0**neg */
+ /* -0**neg */
exc.type = DOMAIN;
exc.name = type < 100 ? "pow" : (type < 200 ? "powf" : "powl");
if (_LIB_VERSION == _SVID_)
@@ -516,6 +525,25 @@ static double zero = 0.0; /* used as const */
__set_errno (EDOM);
}
break;
+ case 43:
+ case 143:
+ case 243:
+ /* +0**neg */
+ exc.type = DOMAIN;
+ exc.name = type < 100 ? "pow" : (type < 200 ? "powf" : "powl");
+ if (_LIB_VERSION == _SVID_)
+ exc.retval = zero;
+ else
+ exc.retval = HUGE_VAL;
+ if (_LIB_VERSION == _POSIX_)
+ __set_errno (EDOM);
+ else if (!__matherr(&exc)) {
+ if (_LIB_VERSION == _SVID_) {
+ (void) WRITE2("pow(0,neg): DOMAIN error\n", 25);
+ }
+ __set_errno (EDOM);
+ }
+ break;
case 24:
case 124:
case 224:
@@ -842,6 +870,8 @@ static double zero = 0.0; /* used as const */
__set_errno (EDOM);
}
break;
+
+ /* #### Last used is 43/143/243 ### */
}
return exc.retval;
}
diff --git a/sysdeps/libm-ieee754/s_fpclassifyf.c b/sysdeps/libm-ieee754/s_fpclassifyf.c
index 15bcfef4a6..a6b35cfe1b 100644
--- a/sysdeps/libm-ieee754/s_fpclassifyf.c
+++ b/sysdeps/libm-ieee754/s_fpclassifyf.c
@@ -35,8 +35,8 @@ __fpclassifyf (float x)
retval = FP_ZERO;
else if (wx < 0x1000000)
retval = FP_SUBNORMAL;
- else if (wx == 0x7f000000)
- retval = wx > 0x7f000000 ? FP_NAN : FP_INFINITE;
+ else if (wx >= 0x7f800000)
+ retval = wx > 0x7f800000 ? FP_NAN : FP_INFINITE;
return retval;
}
diff --git a/sysdeps/libm-ieee754/w_atan2.c b/sysdeps/libm-ieee754/w_atan2.c
index 3f6032f977..801baa2347 100644
--- a/sysdeps/libm-ieee754/w_atan2.c
+++ b/sysdeps/libm-ieee754/w_atan2.c
@@ -35,7 +35,7 @@ static char rcsid[] = "$NetBSD: w_atan2.c,v 1.6 1995/05/10 20:48:39 jtc Exp $";
double z;
z = __ieee754_atan2(y,x);
if(_LIB_VERSION != _SVID_||__isnan(x)||__isnan(y)) return z;
- if(x==0.0&&y==0.0) {
+ if(x==0.0&&y==0.0)
return __kernel_standard(y,x,3); /* atan2(+-0,+-0) */
return z;
#endif
diff --git a/sysdeps/libm-ieee754/w_atan2f.c b/sysdeps/libm-ieee754/w_atan2f.c
index 00b2ce7633..09caa06f00 100644
--- a/sysdeps/libm-ieee754/w_atan2f.c
+++ b/sysdeps/libm-ieee754/w_atan2f.c
@@ -37,7 +37,9 @@ static char rcsid[] = "$NetBSD: w_atan2f.c,v 1.3 1995/05/10 20:48:42 jtc Exp $";
#else
float z;
z = __ieee754_atan2f(y,x);
- if(_LIB_VERSION == _IEEE_||__isnanf(x)||__isnanf(y)) return z;
+ if(_LIB_VERSION != _SVID_||__isnanf(x)||__isnanf(y)) return z;
+ if(x==0.0&&y==0.0)
+ return __kernel_standard(y,x,103); /* atan2(+-0,+-0) */
return z;
#endif
}
diff --git a/sysdeps/libm-ieee754/w_atan2l.c b/sysdeps/libm-ieee754/w_atan2l.c
index 437a04c760..2897c8c5f9 100644
--- a/sysdeps/libm-ieee754/w_atan2l.c
+++ b/sysdeps/libm-ieee754/w_atan2l.c
@@ -38,7 +38,9 @@ static char rcsid[] = "$NetBSD: $";
#else
long double z;
z = __ieee754_atan2l(y,x);
- if(_LIB_VERSION == _IEEE_||__isnanl(x)||__isnanl(y)) return z;
+ if(_LIB_VERSION != _SVID_||__isnanl(x)||__isnanl(y)) return z;
+ if(x==0.0&&y==0.0)
+ return __kernel_standard(y,x,203); /* atan2(+-0,+-0) */
return z;
#endif
}
diff --git a/sysdeps/unix/sysv/linux/socketbits.h b/sysdeps/unix/sysv/linux/socketbits.h
index 38a8fb74d1..166971a384 100644
--- a/sysdeps/unix/sysv/linux/socketbits.h
+++ b/sysdeps/unix/sysv/linux/socketbits.h
@@ -83,8 +83,20 @@ enum __socket_type
#define AF_INET6 PF_INET6
#define AF_MAX PF_MAX
-/* Raw IP packet level. */
+/* Socket level values. */
+#define SOL_IP 0
+#define SOL_TCP 6
+#define SOL_UDP 17
+#define SOL_IPV6 41
+#define SOL_ICMPV6 58
#define SOL_RAW 255
+#define SOL_IPX 256
+#define SOL_AX25 257
+#define SOL_ATALK 258
+#define SOL_NETROM 259
+#define SOL_ROSE 260
+#define SOL_DECNET 261
+#define SOL_X25 262
/* Maximum queue length specifiable by listen. */
#define SOMAXCONN 128
@@ -120,21 +132,18 @@ struct msghdr
/* XXX Should be type `size_t' according to POSIX.1g. */
struct iovec *msg_iov; /* Vector of data to send/receive into. */
- int msg_iovlen; /* Number of elements in the vector. */
- /* XXX Should be type `size_t' according to POSIX.1g. */
+ size_t msg_iovlen; /* Number of elements in the vector. */
__ptr_t msg_control; /* Ancillary data (eg BSD filedesc passing). */
- int msg_controllen; /* Ancillary data buffer length. */
- /* XXX Should be type `size_t' according to POSIX.1g. */
+ size_t msg_controllen; /* Ancillary data buffer length. */
int msg_flags; /* Flags on received message. */
};
/* Structure used for storage of ancillary data object information. */
struct cmsghdr
{
- int cmsg_len; /* Length of data in cmsg_data plus length
+ size_t cmsg_len; /* Length of data in cmsg_data plus length
of cmsghdr structure. */
- /* XXX Should be type `size_t' according to POSIX.1g. */
int cmsg_level; /* Originating protocol. */
int cmsg_type; /* Protocol specific type. */
#if !defined __STRICT_ANSI__ && defined __GNUC__ && __GNUC__ >= 2
diff --git a/sysdeps/unix/sysv/linux/sys/mman.h b/sysdeps/unix/sysv/linux/sys/mman.h
index eadb1f1f52..367b9062b3 100644
--- a/sysdeps/unix/sysv/linux/sys/mman.h
+++ b/sysdeps/unix/sysv/linux/sys/mman.h
@@ -1,5 +1,5 @@
-/* Definitions for BSD-style memory management. Linux version.
- Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
+/* Definitions for POSIX-style memory management. Linux version.
+ Copyright (C) 1994, 1995, 1996, 1997 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
@@ -66,7 +66,7 @@ extern int mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
/* Synchronize the region starting at ADDR and extending LEN bytes with the
file it maps. Filesystem operations on a file being mapped are
- unpredictable before this is done. */
+ unpredictable before this is done. Flags are from the MS_* set. */
extern int msync __P ((__caddr_t __addr, size_t __len, int __flags));
/* Advise the system about particular usage patterns the program follows