summaryrefslogtreecommitdiff
path: root/sysdeps
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1997-08-05 23:36:21 +0000
committerUlrich Drepper <drepper@redhat.com>1997-08-05 23:36:21 +0000
commit044b16f4e9ae773187f4fee8a9a0a54f9a51f13f (patch)
tree58bc41e16535e0d0f61d51e6af15ce4128864fc9 /sysdeps
parentc59a94711c6a9d38811b828863076f39000831b4 (diff)
update for 2.0.5pre1
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/alpha/Makefile4
-rw-r--r--sysdeps/alpha/fpu/fpu_control.h46
-rw-r--r--sysdeps/generic/socketbits.h10
-rw-r--r--sysdeps/i386/fpu/__math.h6
-rw-r--r--sysdeps/libm-i387/s_asinh.S9
-rw-r--r--sysdeps/libm-i387/s_asinhf.S9
-rw-r--r--sysdeps/libm-i387/s_asinhl.S9
-rw-r--r--sysdeps/libm-ieee754/k_standard.c86
-rw-r--r--sysdeps/mach/hurd/mmap.c34
-rw-r--r--sysdeps/stub/e_acoshl.c2
-rw-r--r--sysdeps/stub/e_acosl.c2
-rw-r--r--sysdeps/stub/e_asinl.c2
-rw-r--r--sysdeps/stub/e_atan2l.c13
-rw-r--r--sysdeps/stub/e_expl.c2
-rw-r--r--sysdeps/stub/e_fmodl.c2
-rw-r--r--sysdeps/stub/e_j0l.c3
-rw-r--r--sysdeps/stub/e_j1l.c3
-rw-r--r--sysdeps/stub/e_jnl.c3
-rw-r--r--sysdeps/stub/e_lgammal_r.c2
-rw-r--r--sysdeps/stub/e_log10l.c2
-rw-r--r--sysdeps/stub/e_logl.c2
-rw-r--r--sysdeps/stub/e_powl.c2
-rw-r--r--sysdeps/stub/e_rem_pio2l.c2
-rw-r--r--sysdeps/stub/e_sqrtl.c2
-rw-r--r--sysdeps/stub/k_cosl.c2
-rw-r--r--sysdeps/stub/k_rem_pio2l.c2
-rw-r--r--sysdeps/stub/k_sinl.c2
-rw-r--r--sysdeps/stub/libc-lock.h32
-rw-r--r--sysdeps/stub/s_atanl.c2
-rw-r--r--sysdeps/stub/s_erfl.c13
-rw-r--r--sysdeps/stub/s_expm1l.c2
-rw-r--r--sysdeps/stub/s_log1pl.c2
-rw-r--r--sysdeps/unix/alpha/sysdep.S4
-rw-r--r--sysdeps/unix/getlogin.c4
-rw-r--r--sysdeps/unix/getlogin_r.c4
-rw-r--r--sysdeps/unix/sysv/linux/Dist1
-rw-r--r--sysdeps/unix/sysv/linux/Makefile5
-rw-r--r--sysdeps/unix/sysv/linux/alpha/brk.S5
-rw-r--r--sysdeps/unix/sysv/linux/alpha/gnu/types.h7
-rw-r--r--sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S10
-rw-r--r--sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S8
-rw-r--r--sysdeps/unix/sysv/linux/alpha/ioperm.c8
-rw-r--r--sysdeps/unix/sysv/linux/alpha/setfpucw.c81
-rw-r--r--sysdeps/unix/sysv/linux/alpha/syscall.S4
-rw-r--r--sysdeps/unix/sysv/linux/net/if_arp.h2
-rw-r--r--sysdeps/unix/sysv/linux/net/ppp_defs.h3
-rw-r--r--sysdeps/unix/sysv/linux/netinet/ip_fw.h1
-rw-r--r--sysdeps/unix/sysv/linux/netipx/ipx.h90
-rw-r--r--sysdeps/unix/sysv/linux/ptrace.c29
-rw-r--r--sysdeps/unix/sysv/linux/socketbits.h14
-rw-r--r--sysdeps/unix/sysv/linux/sys/fsuid.h36
-rw-r--r--sysdeps/unix/sysv/linux/sys/mount.h70
-rw-r--r--sysdeps/unix/sysv/linux/sys/ttydefaults.h4
-rw-r--r--sysdeps/unix/sysv/linux/syscalls.list6
54 files changed, 529 insertions, 181 deletions
diff --git a/sysdeps/alpha/Makefile b/sysdeps/alpha/Makefile
index 841dc980a8..5fe8e4ee7f 100644
--- a/sysdeps/alpha/Makefile
+++ b/sysdeps/alpha/Makefile
@@ -44,3 +44,7 @@ sysdep-CFLAGS += -mno-fp-regs
endif
divrem := divl divq reml remq
+
+# For now, build everything with full IEEE math support.
+# TODO: build separate libm and libm-ieee.
+sysdep-CFLAGS += -mieee
diff --git a/sysdeps/alpha/fpu/fpu_control.h b/sysdeps/alpha/fpu/fpu_control.h
index 219ea55f24..bcf73e857e 100644
--- a/sysdeps/alpha/fpu/fpu_control.h
+++ b/sysdeps/alpha/fpu/fpu_control.h
@@ -1,23 +1,22 @@
-/* FPU control word bits. Alpha version.
-Copyright (C) 1996 Free Software Foundation, Inc.
-Contributed by Olaf Flebbe.
-
-This file is part of the GNU C Library.
-
-The GNU C Library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
-
-The GNU C Library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with the GNU C Library; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 675 Mass Ave,
-Cambridge, MA 02139, USA. */
+/* FPU control word bits. Alpha-maped-to-Intel version.
+ Copyright (C) 1996 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Olaf Flebbe.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
#ifndef _ALPHA_FPU_CONTROL_H
#define _ALPHA_FPU_CONTROL_H
@@ -91,11 +90,12 @@ Cambridge, MA 02139, USA. */
qualifier. By setting the dynamic rounding mode to +infinity,
one can use /d to get round to +infinity with no extra overhead
(so long as the default isn't changed, of course...)
- - exceptions on overflow, zero divide and NaN */
-#define _FPU_DEFAULT 0x1f72
+ - no exceptions enabled. */
+
+#define _FPU_DEFAULT 0x137f
/* IEEE: same as above, but exceptions */
-#define _FPU_IEEE 0x1f7f
+#define _FPU_IEEE 0x137f
/* Type of the control word. */
typedef unsigned int fpu_control_t;
diff --git a/sysdeps/generic/socketbits.h b/sysdeps/generic/socketbits.h
index 5d85a8e079..7b951922c9 100644
--- a/sysdeps/generic/socketbits.h
+++ b/sysdeps/generic/socketbits.h
@@ -27,6 +27,8 @@ __BEGIN_DECLS
#define __need_size_t
#include <stddef.h>
+/* Type for length arguments in socket calls. */
+typedef unsigned int socklen_t;
/* Types of sockets. */
enum __socket_type
@@ -143,13 +145,15 @@ enum
struct msghdr
{
__ptr_t msg_name; /* Address to send to/receive from. */
- size_t msg_namelen; /* Length of address data. */
+ socklen_t msg_namelen; /* Length of address data. */
struct iovec *msg_iov; /* Vector of data to send/receive into. */
- size_t msg_iovlen; /* Number of elements in the vector. */
+ int msg_iovlen; /* Number of elements in the vector. */
__ptr_t msg_accrights; /* Access rights information. */
- size_t msg_accrightslen; /* Length of access rights information. */
+ socklen_t msg_accrightslen; /* Length of access rights information. */
+
+ int msg_flags; /* Flags in received message. */
};
diff --git a/sysdeps/i386/fpu/__math.h b/sysdeps/i386/fpu/__math.h
index 78b2467b65..4fb0af7965 100644
--- a/sysdeps/i386/fpu/__math.h
+++ b/sysdeps/i386/fpu/__math.h
@@ -380,13 +380,17 @@ hypot (double __x, double __y)
return sqrt (__x * __x + __y * __y);
}
+/* We cannot rely on M_SQRT being defined. So we do it for ourself
+ here. */
+# define __M_SQRT2 _Mldbl(1.41421356237309504880) /* sqrt(2) */
+
__MATH_INLINE double log1p (double __x);
__MATH_INLINE double
log1p (double __x)
{
register double __value;
- if (fabs (__x) >= 1.0 - 0.5 * M_SQRT2)
+ if (fabs (__x) >= 1.0 - 0.5 * __M_SQRT2)
__value = log (1.0 + __x);
else
__asm __volatile__
diff --git a/sysdeps/libm-i387/s_asinh.S b/sysdeps/libm-i387/s_asinh.S
index a71d0b66f4..a4c52cb67c 100644
--- a/sysdeps/libm-i387/s_asinh.S
+++ b/sysdeps/libm-i387/s_asinh.S
@@ -1,5 +1,5 @@
/* ix87 specific implementation of arcsinh.
- Copyright (C) 1996 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -49,6 +49,10 @@ ENTRY(__asinh)
movl $0x7fffffff, %eax
andl %ecx, %eax
andl $0x80000000, %ecx
+ movl %eax, %edx
+ orl $0x800fffff, %edx
+ incl %edx
+ jz 7f // x in ħInf or NaN
xorl %ecx, 8(%esp)
fldl 4(%esp) // |x|
cmpl $0x3e300000, %eax
@@ -83,6 +87,9 @@ ENTRY(__asinh)
fchs
4: ret
+7: fldl 4(%esp)
+ ret
+
6: faddl MO(one)
fyl2x
jecxz 4f
diff --git a/sysdeps/libm-i387/s_asinhf.S b/sysdeps/libm-i387/s_asinhf.S
index f47bc9e0ac..6369e19ac6 100644
--- a/sysdeps/libm-i387/s_asinhf.S
+++ b/sysdeps/libm-i387/s_asinhf.S
@@ -1,5 +1,5 @@
/* ix87 specific implementation of arcsinh.
- Copyright (C) 1996 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -49,6 +49,10 @@ ENTRY(__asinhf)
movl $0x7fffffff, %eax
andl %ecx, %eax
andl $0x80000000, %ecx
+ movl %eax, %edx
+ orl $0x807fffff, %edx
+ incl %edx
+ jz 7f // x in ħInf or NaN
xorl %ecx, 8(%esp)
flds 4(%esp) // |x|
cmpl $0x38000000, %eax
@@ -83,6 +87,9 @@ ENTRY(__asinhf)
fchs
4: ret
+7: flds 4(%esp)
+ ret
+
6: faddl MO(one)
fyl2x
jecxz 4f
diff --git a/sysdeps/libm-i387/s_asinhl.S b/sysdeps/libm-i387/s_asinhl.S
index e112244908..62e29bc58e 100644
--- a/sysdeps/libm-i387/s_asinhl.S
+++ b/sysdeps/libm-i387/s_asinhl.S
@@ -1,5 +1,5 @@
/* ix87 specific implementation of arcsinh.
- Copyright (C) 1996 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -56,6 +56,10 @@ ENTRY(__asinhl)
movl $0x7fff, %eax
andl %ecx, %eax
andl $0x8000, %ecx
+ movl %eax, %edx
+ orl $0xffff8000, %edx
+ incl %edx
+ jz 7f // x in ħInf or NaN
xorl %ecx, 12(%esp)
fldt 4(%esp) // |x|
cmpl $0x3fde, %eax
@@ -90,6 +94,9 @@ ENTRY(__asinhl)
fchs
4: ret
+7: fldt 4(%esp)
+ ret
+
6: faddl MO(one)
fyl2x
jecxz 4f
diff --git a/sysdeps/libm-ieee754/k_standard.c b/sysdeps/libm-ieee754/k_standard.c
index ada1df1a99..4dd2b11221 100644
--- a/sysdeps/libm-ieee754/k_standard.c
+++ b/sysdeps/libm-ieee754/k_standard.c
@@ -117,7 +117,7 @@ static double zero = 0.0; /* used as const */
exc.retval = NAN;
if (_LIB_VERSION == _POSIX_)
__set_errno (EDOM);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
if(_LIB_VERSION == _SVID_) {
(void) WRITE2("acos: DOMAIN error\n", 19);
}
@@ -137,7 +137,7 @@ static double zero = 0.0; /* used as const */
exc.retval = NAN;
if(_LIB_VERSION == _POSIX_)
__set_errno (EDOM);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
if(_LIB_VERSION == _SVID_) {
(void) WRITE2("asin: DOMAIN error\n", 19);
}
@@ -157,7 +157,7 @@ static double zero = 0.0; /* used as const */
exc.retval = HUGE;
if(_LIB_VERSION == _POSIX_)
__set_errno (EDOM);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
if(_LIB_VERSION == _SVID_) {
(void) WRITE2("atan2: DOMAIN error\n", 20);
}
@@ -177,7 +177,7 @@ static double zero = 0.0; /* used as const */
exc.retval = HUGE_VAL;
if (_LIB_VERSION == _POSIX_)
__set_errno (ERANGE);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
__set_errno (ERANGE);
}
break;
@@ -194,7 +194,7 @@ static double zero = 0.0; /* used as const */
exc.retval = HUGE_VAL;
if (_LIB_VERSION == _POSIX_)
__set_errno (ERANGE);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
__set_errno (ERANGE);
}
break;
@@ -211,7 +211,7 @@ static double zero = 0.0; /* used as const */
exc.retval = HUGE_VAL;
if (_LIB_VERSION == _POSIX_)
__set_errno (ERANGE);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
__set_errno (ERANGE);
}
break;
@@ -225,7 +225,7 @@ static double zero = 0.0; /* used as const */
exc.retval = zero;
if (_LIB_VERSION == _POSIX_)
__set_errno (ERANGE);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
__set_errno (ERANGE);
}
break;
@@ -241,7 +241,7 @@ static double zero = 0.0; /* used as const */
exc.retval = -HUGE_VAL;
if (_LIB_VERSION == _POSIX_)
__set_errno (EDOM);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
if (_LIB_VERSION == _SVID_) {
(void) WRITE2("y0: DOMAIN error\n", 17);
}
@@ -260,7 +260,7 @@ static double zero = 0.0; /* used as const */
exc.retval = -HUGE_VAL;
if (_LIB_VERSION == _POSIX_)
__set_errno (EDOM);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
if (_LIB_VERSION == _SVID_) {
(void) WRITE2("y0: DOMAIN error\n", 17);
}
@@ -279,7 +279,7 @@ static double zero = 0.0; /* used as const */
exc.retval = -HUGE_VAL;
if (_LIB_VERSION == _POSIX_)
__set_errno (EDOM);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
if (_LIB_VERSION == _SVID_) {
(void) WRITE2("y1: DOMAIN error\n", 17);
}
@@ -298,7 +298,7 @@ static double zero = 0.0; /* used as const */
exc.retval = -HUGE_VAL;
if (_LIB_VERSION == _POSIX_)
__set_errno (EDOM);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
if (_LIB_VERSION == _SVID_) {
(void) WRITE2("y1: DOMAIN error\n", 17);
}
@@ -317,7 +317,7 @@ static double zero = 0.0; /* used as const */
exc.retval = -HUGE_VAL;
if (_LIB_VERSION == _POSIX_)
__set_errno (EDOM);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
if (_LIB_VERSION == _SVID_) {
(void) WRITE2("yn: DOMAIN error\n", 17);
}
@@ -336,7 +336,7 @@ static double zero = 0.0; /* used as const */
exc.retval = -HUGE_VAL;
if (_LIB_VERSION == _POSIX_)
__set_errno (EDOM);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
if (_LIB_VERSION == _SVID_) {
(void) WRITE2("yn: DOMAIN error\n", 17);
}
@@ -356,7 +356,7 @@ static double zero = 0.0; /* used as const */
exc.retval = HUGE_VAL;
if (_LIB_VERSION == _POSIX_)
__set_errno (ERANGE);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
__set_errno (ERANGE);
}
break;
@@ -373,7 +373,7 @@ static double zero = 0.0; /* used as const */
exc.retval = HUGE_VAL;
if (_LIB_VERSION == _POSIX_)
__set_errno (EDOM);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
if (_LIB_VERSION == _SVID_) {
(void) WRITE2("lgamma: SING error\n", 19);
}
@@ -392,7 +392,7 @@ static double zero = 0.0; /* used as const */
exc.retval = -HUGE_VAL;
if (_LIB_VERSION == _POSIX_)
__set_errno (ERANGE);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
if (_LIB_VERSION == _SVID_) {
(void) WRITE2("log: SING error\n", 16);
}
@@ -411,7 +411,7 @@ static double zero = 0.0; /* used as const */
exc.retval = NAN;
if (_LIB_VERSION == _POSIX_)
__set_errno (EDOM);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
if (_LIB_VERSION == _SVID_) {
(void) WRITE2("log: DOMAIN error\n", 18);
}
@@ -431,7 +431,7 @@ static double zero = 0.0; /* used as const */
exc.retval = -HUGE_VAL;
if (_LIB_VERSION == _POSIX_)
__set_errno (ERANGE);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
if (_LIB_VERSION == _SVID_) {
(void) WRITE2("log10: SING error\n", 18);
}
@@ -451,7 +451,7 @@ static double zero = 0.0; /* used as const */
exc.retval = NAN;
if (_LIB_VERSION == _POSIX_)
__set_errno (EDOM);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
if (_LIB_VERSION == _SVID_) {
(void) WRITE2("log10: DOMAIN error\n", 20);
}
@@ -467,7 +467,7 @@ static double zero = 0.0; /* used as const */
exc.name = type < 100 ? "pow" : (type < 200 ? "powf" : "powl");
exc.retval = zero;
if (_LIB_VERSION != _SVID_) exc.retval = 1.0;
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
(void) WRITE2("pow(0,0): DOMAIN error\n", 23);
__set_errno (EDOM);
}
@@ -489,7 +489,7 @@ static double zero = 0.0; /* used as const */
}
if (_LIB_VERSION == _POSIX_)
__set_errno (ERANGE);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
__set_errno (ERANGE);
}
break;
@@ -502,7 +502,7 @@ static double zero = 0.0; /* used as const */
exc.retval = zero;
if (_LIB_VERSION == _POSIX_)
__set_errno (ERANGE);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
__set_errno (ERANGE);
}
break;
@@ -518,7 +518,7 @@ static double zero = 0.0; /* used as const */
exc.retval = -HUGE_VAL;
if (_LIB_VERSION == _POSIX_)
__set_errno (EDOM);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
if (_LIB_VERSION == _SVID_) {
(void) WRITE2("pow(0,neg): DOMAIN error\n", 25);
}
@@ -537,7 +537,7 @@ static double zero = 0.0; /* used as const */
exc.retval = HUGE_VAL;
if (_LIB_VERSION == _POSIX_)
__set_errno (EDOM);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
if (_LIB_VERSION == _SVID_) {
(void) WRITE2("pow(0,neg): DOMAIN error\n", 25);
}
@@ -556,7 +556,7 @@ static double zero = 0.0; /* used as const */
exc.retval = zero/zero; /* X/Open allow NaN */
if (_LIB_VERSION == _POSIX_)
__set_errno (EDOM);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
if (_LIB_VERSION == _SVID_) {
(void) WRITE2("neg**non-integral: DOMAIN error\n", 32);
}
@@ -576,7 +576,7 @@ static double zero = 0.0; /* used as const */
exc.retval = ( (x>zero) ? HUGE_VAL : -HUGE_VAL);
if (_LIB_VERSION == _POSIX_)
__set_errno (ERANGE);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
__set_errno (ERANGE);
}
break;
@@ -593,7 +593,7 @@ static double zero = 0.0; /* used as const */
exc.retval = zero/zero;
if (_LIB_VERSION == _POSIX_)
__set_errno (EDOM);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
if (_LIB_VERSION == _SVID_) {
(void) WRITE2("sqrt: DOMAIN error\n", 19);
}
@@ -613,7 +613,7 @@ static double zero = 0.0; /* used as const */
exc.retval = zero/zero;
if (_LIB_VERSION == _POSIX_)
__set_errno (EDOM);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
if (_LIB_VERSION == _SVID_) {
(void) WRITE2("fmod: DOMAIN error\n", 20);
}
@@ -631,7 +631,7 @@ static double zero = 0.0; /* used as const */
exc.retval = zero/zero;
if (_LIB_VERSION == _POSIX_)
__set_errno (EDOM);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
if (_LIB_VERSION == _SVID_) {
(void) WRITE2("remainder: DOMAIN error\n", 24);
}
@@ -648,7 +648,7 @@ static double zero = 0.0; /* used as const */
exc.retval = zero/zero;
if (_LIB_VERSION == _POSIX_)
__set_errno (EDOM);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
if (_LIB_VERSION == _SVID_) {
(void) WRITE2("acosh: DOMAIN error\n", 20);
}
@@ -665,7 +665,7 @@ static double zero = 0.0; /* used as const */
exc.retval = zero/zero;
if (_LIB_VERSION == _POSIX_)
__set_errno (EDOM);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
if (_LIB_VERSION == _SVID_) {
(void) WRITE2("atanh: DOMAIN error\n", 20);
}
@@ -682,7 +682,7 @@ static double zero = 0.0; /* used as const */
exc.retval = x/zero; /* sign(x)*inf */
if (_LIB_VERSION == _POSIX_)
__set_errno (EDOM);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
if (_LIB_VERSION == _SVID_) {
(void) WRITE2("atanh: SING error\n", 18);
}
@@ -699,7 +699,7 @@ static double zero = 0.0; /* used as const */
exc.retval = x > zero ? HUGE_VAL : -HUGE_VAL;
if (_LIB_VERSION == _POSIX_)
__set_errno (ERANGE);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
__set_errno (ERANGE);
}
break;
@@ -713,7 +713,7 @@ static double zero = 0.0; /* used as const */
exc.retval = __copysign(zero,x);
if (_LIB_VERSION == _POSIX_)
__set_errno (ERANGE);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
__set_errno (ERANGE);
}
break;
@@ -726,7 +726,7 @@ static double zero = 0.0; /* used as const */
exc.retval = zero;
if (_LIB_VERSION == _POSIX_)
__set_errno (ERANGE);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
if (_LIB_VERSION == _SVID_) {
(void) WRITE2(exc.name, 2);
(void) WRITE2(": TLOSS error\n", 14);
@@ -743,7 +743,7 @@ static double zero = 0.0; /* used as const */
exc.retval = zero;
if (_LIB_VERSION == _POSIX_)
__set_errno (ERANGE);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
if (_LIB_VERSION == _SVID_) {
(void) WRITE2(exc.name, 2);
(void) WRITE2(": TLOSS error\n", 14);
@@ -760,7 +760,7 @@ static double zero = 0.0; /* used as const */
exc.retval = zero;
if (_LIB_VERSION == _POSIX_)
__set_errno (ERANGE);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
if (_LIB_VERSION == _SVID_) {
(void) WRITE2(exc.name, 2);
(void) WRITE2(": TLOSS error\n", 14);
@@ -777,7 +777,7 @@ static double zero = 0.0; /* used as const */
exc.retval = zero;
if (_LIB_VERSION == _POSIX_)
__set_errno (ERANGE);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
if (_LIB_VERSION == _SVID_) {
(void) WRITE2(exc.name, 2);
(void) WRITE2(": TLOSS error\n", 14);
@@ -794,7 +794,7 @@ static double zero = 0.0; /* used as const */
exc.retval = zero;
if (_LIB_VERSION == _POSIX_)
__set_errno (ERANGE);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
if (_LIB_VERSION == _SVID_) {
(void) WRITE2(exc.name, 2);
(void) WRITE2(": TLOSS error\n", 14);
@@ -811,7 +811,7 @@ static double zero = 0.0; /* used as const */
exc.retval = zero;
if (_LIB_VERSION == _POSIX_)
__set_errno (ERANGE);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
if (_LIB_VERSION == _SVID_) {
(void) WRITE2(exc.name, 2);
(void) WRITE2(": TLOSS error\n", 14);
@@ -832,7 +832,7 @@ static double zero = 0.0; /* used as const */
exc.retval = HUGE_VAL;
if (_LIB_VERSION == _POSIX_)
__set_errno (ERANGE);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
__set_errno (ERANGE);
}
break;
@@ -849,7 +849,7 @@ static double zero = 0.0; /* used as const */
exc.retval = HUGE_VAL;
if (_LIB_VERSION == _POSIX_)
__set_errno (EDOM);
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
if (_LIB_VERSION == _SVID_) {
(void) WRITE2("gamma: SING error\n", 18);
}
@@ -866,7 +866,7 @@ static double zero = 0.0; /* used as const */
exc.retval = x;
if (_LIB_VERSION == _IEEE_ ||
_LIB_VERSION == _POSIX_) exc.retval = 1.0;
- else if (!__matherr(&exc)) {
+ else if (!matherr(&exc)) {
__set_errno (EDOM);
}
break;
diff --git a/sysdeps/mach/hurd/mmap.c b/sysdeps/mach/hurd/mmap.c
index 8753fd644b..dc4b024bb8 100644
--- a/sysdeps/mach/hurd/mmap.c
+++ b/sysdeps/mach/hurd/mmap.c
@@ -1,20 +1,20 @@
-/* Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
+/* 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
-modify it under the terms of the GNU Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
-The GNU C Library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-Library General Public License for more details.
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
-You should have received a copy of the GNU Library General Public
-License along with the GNU C Library; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 675 Mass Ave,
-Cambridge, MA 02139, USA. */
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
#include <sys/types.h>
#include <sys/mman.h>
@@ -98,7 +98,7 @@ __mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
__mach_port_deallocate (__mach_task_self (), memobj);
}
else if (wobj == MACH_PORT_NULL && /* Not writable by mapping. */
- (flags & (MAP_COPY|MAP_PRIVATE)))
+ !(flags & MAP_SHARED))
/* The file can only be mapped for reading. Since we are
making a private mapping, we will never try to write the
object anyway, so we don't care. */
@@ -106,8 +106,7 @@ __mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
else
{
__mach_port_deallocate (__mach_task_self (), wobj);
- return ((caddr_t) (long int)
- __hurd_fail (EGRATUITOUS)); /* XXX */
+ return (caddr_t) (long int) __hurd_fail (EACCES);
}
break;
}
@@ -154,4 +153,3 @@ __mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
}
weak_alias (__mmap, mmap)
-
diff --git a/sysdeps/stub/e_acoshl.c b/sysdeps/stub/e_acoshl.c
index 6ec9a15d38..3383c14872 100644
--- a/sysdeps/stub/e_acoshl.c
+++ b/sysdeps/stub/e_acoshl.c
@@ -1,10 +1,12 @@
#include <math.h>
#include <stdio.h>
+#include <errno.h>
long double
__ieee754_acoshl (long double x)
{
fputs ("__ieee754_acoshl not implemented\n", stderr);
+ __set_errno (ENOSYS);
return 0.0;
}
diff --git a/sysdeps/stub/e_acosl.c b/sysdeps/stub/e_acosl.c
index 5c10b526cc..af1e6261c3 100644
--- a/sysdeps/stub/e_acosl.c
+++ b/sysdeps/stub/e_acosl.c
@@ -1,10 +1,12 @@
#include <math.h>
#include <stdio.h>
+#include <errno.h>
long double
__ieee754_acosl (long double x)
{
fputs ("__ieee754_acosl not implemented\n", stderr);
+ __set_errno (ENOSYS);
return 0.0;
}
diff --git a/sysdeps/stub/e_asinl.c b/sysdeps/stub/e_asinl.c
index f9260913e8..ce8c8cdaea 100644
--- a/sysdeps/stub/e_asinl.c
+++ b/sysdeps/stub/e_asinl.c
@@ -1,10 +1,12 @@
#include <math.h>
#include <stdio.h>
+#include <errno.h>
long double
__ieee754_asinl (long double x)
{
fputs ("__ieee754_asinl not implemented\n", stderr);
+ __set_errno (ENOSYS);
return 0.0;
}
diff --git a/sysdeps/stub/e_atan2l.c b/sysdeps/stub/e_atan2l.c
new file mode 100644
index 0000000000..6c500d4c8a
--- /dev/null
+++ b/sysdeps/stub/e_atan2l.c
@@ -0,0 +1,13 @@
+#include <math.h>
+#include <stdio.h>
+#include <errno.h>
+
+long double
+__ieee754_atan2l (long double x, long double y)
+{
+ fputs ("__ieee754_atan2l not implemented\n", stderr);
+ __set_errno (ENOSYS);
+ return 0.0;
+}
+
+stub_warning (__ieee754_atan2l)
diff --git a/sysdeps/stub/e_expl.c b/sysdeps/stub/e_expl.c
index 246b5ae83f..4ea8c79597 100644
--- a/sysdeps/stub/e_expl.c
+++ b/sysdeps/stub/e_expl.c
@@ -1,10 +1,12 @@
#include <math.h>
#include <stdio.h>
+#include <errno.h>
long double
__ieee754_expl (long double x)
{
fputs ("__ieee754_expl not implemented\n", stderr);
+ __set_errno (ENOSYS);
return 0.0;
}
diff --git a/sysdeps/stub/e_fmodl.c b/sysdeps/stub/e_fmodl.c
index b47912581b..25cc114808 100644
--- a/sysdeps/stub/e_fmodl.c
+++ b/sysdeps/stub/e_fmodl.c
@@ -1,10 +1,12 @@
#include <math.h>
#include <stdio.h>
+#include <errno.h>
long double
__ieee754_fmodl (long double x, long double y)
{
fputs ("__ieee754_fmodl not implemented\n", stderr);
+ __set_errno (ENOSYS);
return 0.0;
}
diff --git a/sysdeps/stub/e_j0l.c b/sysdeps/stub/e_j0l.c
index c16e8a8a9d..ecb8a8ed16 100644
--- a/sysdeps/stub/e_j0l.c
+++ b/sysdeps/stub/e_j0l.c
@@ -1,10 +1,12 @@
#include <math.h>
#include <stdio.h>
+#include <errno.h>
long double
__ieee754_j0l (long double x)
{
fputs ("__ieee754_j0l not implemented\n", stderr);
+ __set_errno (ENOSYS);
return 0.0;
}
@@ -14,6 +16,7 @@ long double
__ieee754_y0l (long double x)
{
fputs ("__ieee754_y0l not implemented\n", stderr);
+ __set_errno (ENOSYS);
return 0.0;
}
diff --git a/sysdeps/stub/e_j1l.c b/sysdeps/stub/e_j1l.c
index 0a781e5cc1..24655700e3 100644
--- a/sysdeps/stub/e_j1l.c
+++ b/sysdeps/stub/e_j1l.c
@@ -1,10 +1,12 @@
#include <math.h>
#include <stdio.h>
+#include <errno.h>
long double
__ieee754_j1l (long double x)
{
fputs ("__ieee754_j1l not implemented\n", stderr);
+ __set_errno (ENOSYS);
return 0.0;
}
@@ -14,6 +16,7 @@ long double
__ieee754_y1l (long double x)
{
fputs ("__ieee754_y1l not implemented\n", stderr);
+ __set_errno (ENOSYS);
return 0.0;
}
diff --git a/sysdeps/stub/e_jnl.c b/sysdeps/stub/e_jnl.c
index 86ff03b031..8ced34d461 100644
--- a/sysdeps/stub/e_jnl.c
+++ b/sysdeps/stub/e_jnl.c
@@ -1,10 +1,12 @@
#include <math.h>
#include <stdio.h>
+#include <errno.h>
long double
__ieee754_jnl (int n, long double x)
{
fputs ("__ieee754_jnl not implemented\n", stderr);
+ __set_errno (ENOSYS);
return 0.0;
}
@@ -14,6 +16,7 @@ long double
__ieee754_ynl (int n, long double x)
{
fputs ("__ieee754_ynl not implemented\n", stderr);
+ __set_errno (ENOSYS);
return 0.0;
}
diff --git a/sysdeps/stub/e_lgammal_r.c b/sysdeps/stub/e_lgammal_r.c
index 015511818c..d7fbbca4df 100644
--- a/sysdeps/stub/e_lgammal_r.c
+++ b/sysdeps/stub/e_lgammal_r.c
@@ -1,10 +1,12 @@
#include <math.h>
#include <stdio.h>
+#include <errno.h>
long double
__ieee754_lgammal_r (long double x, int *signgamp)
{
fputs ("__ieee754_lgammal_r not implemented\n", stderr);
+ __set_errno (ENOSYS);
return 0.0;
}
diff --git a/sysdeps/stub/e_log10l.c b/sysdeps/stub/e_log10l.c
index 0e8cdcaaa9..a414d04d74 100644
--- a/sysdeps/stub/e_log10l.c
+++ b/sysdeps/stub/e_log10l.c
@@ -1,10 +1,12 @@
#include <math.h>
#include <stdio.h>
+#include <errno.h>
long double
__ieee754_log10l (long double x)
{
fputs ("__ieee754_log10l not implemented\n", stderr);
+ __set_errno (ENOSYS);
return 0.0;
}
diff --git a/sysdeps/stub/e_logl.c b/sysdeps/stub/e_logl.c
index b8357543b0..45248a375a 100644
--- a/sysdeps/stub/e_logl.c
+++ b/sysdeps/stub/e_logl.c
@@ -1,10 +1,12 @@
#include <math.h>
#include <stdio.h>
+#include <errno.h>
long double
__ieee754_logl (long double x)
{
fputs ("__ieee754_logl not implemented\n", stderr);
+ __set_errno (ENOSYS);
return 0.0;
}
diff --git a/sysdeps/stub/e_powl.c b/sysdeps/stub/e_powl.c
index 2fa7862ea5..611dfb583c 100644
--- a/sysdeps/stub/e_powl.c
+++ b/sysdeps/stub/e_powl.c
@@ -1,10 +1,12 @@
#include <math.h>
#include <stdio.h>
+#include <errno.h>
long double
__ieee754_powl (long double x, long double y)
{
fputs ("__ieee754_powl not implemented\n", stderr);
+ __set_errno (ENOSYS);
return 0.0;
}
diff --git a/sysdeps/stub/e_rem_pio2l.c b/sysdeps/stub/e_rem_pio2l.c
index 0a9ac79917..eec7d793bb 100644
--- a/sysdeps/stub/e_rem_pio2l.c
+++ b/sysdeps/stub/e_rem_pio2l.c
@@ -1,10 +1,12 @@
#include <math.h>
#include <stdio.h>
+#include <errno.h>
long double
__ieee754_rem_pio2l (long double x, long double *y)
{
fputs ("__ieee754_rem_pio2l not implemented\n", stderr);
+ __set_errno (ENOSYS);
return 0.0;
}
diff --git a/sysdeps/stub/e_sqrtl.c b/sysdeps/stub/e_sqrtl.c
index 88a7668330..c583a27673 100644
--- a/sysdeps/stub/e_sqrtl.c
+++ b/sysdeps/stub/e_sqrtl.c
@@ -1,10 +1,12 @@
#include <math.h>
#include <stdio.h>
+#include <errno.h>
long double
__ieee754_sqrtl (long double x)
{
fputs ("__ieee754_sqrtl not implemented\n", stderr);
+ __set_errno (ENOSYS);
return 0.0;
}
diff --git a/sysdeps/stub/k_cosl.c b/sysdeps/stub/k_cosl.c
index 3e6c9688f0..10016ab72e 100644
--- a/sysdeps/stub/k_cosl.c
+++ b/sysdeps/stub/k_cosl.c
@@ -1,10 +1,12 @@
#include <math.h>
#include <stdio.h>
+#include <errno.h>
long double
__kernel_cosl (long double x, long double y)
{
fputs ("__kernel_cosl not implemented\n", stderr);
+ __set_errno (ENOSYS);
return 0.0;
}
diff --git a/sysdeps/stub/k_rem_pio2l.c b/sysdeps/stub/k_rem_pio2l.c
index a51c44546b..01bf158249 100644
--- a/sysdeps/stub/k_rem_pio2l.c
+++ b/sysdeps/stub/k_rem_pio2l.c
@@ -1,12 +1,14 @@
#include <math.h>
#include <math_private.h>
#include <stdio.h>
+#include <errno.h>
int
__kernel_rem_pio2l (long double *x, long double *y, int e0, int nx, int prec,
const int *ipio2)
{
fputs ("__kernel_rem_pio2l not implemented\n", stderr);
+ __set_errno (ENOSYS);
return 0.0;
}
diff --git a/sysdeps/stub/k_sinl.c b/sysdeps/stub/k_sinl.c
index 2057bf8bff..40cf22a596 100644
--- a/sysdeps/stub/k_sinl.c
+++ b/sysdeps/stub/k_sinl.c
@@ -1,10 +1,12 @@
#include <math.h>
#include <stdio.h>
+#include <errno.h>
long double
__kernel_sinl (long double x, long double y)
{
fputs ("__kernel_sinl not implemented\n", stderr);
+ __set_errno (ENOSYS);
return 0.0;
}
diff --git a/sysdeps/stub/libc-lock.h b/sysdeps/stub/libc-lock.h
index 724b6e59d4..9efd799dab 100644
--- a/sysdeps/stub/libc-lock.h
+++ b/sysdeps/stub/libc-lock.h
@@ -17,8 +17,8 @@
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
-#ifndef _LIBC_LOCK_H
-#define _LIBC_LOCK_H 1
+#ifndef _BITS_LIBC_LOCK_H
+#define _BITS_LIBC_LOCK_H 1
/* Define a lock variable NAME with storage class CLASS. The lock must be
@@ -70,6 +70,20 @@
/* Unlock the recursive named lock variable. */
#define __libc_lock_unlock_recursive(NAME)
+
+/* Define once control variable. */
+#define __libc_once_define(NAME) int NAME = 0
+
+/* Call handler iff the first call. */
+#define __libc_once(ONCE_CONTROL, INIT_FUNCTION) \
+ do { \
+ if ((ONCE_CONTROL) == 0) { \
+ INIT_FUNCTION (); \
+ (ONCE_CONTROL) = 1; \
+ } \
+ } while (0)
+
+
/* Start critical region with cleanup. */
#define __libc_cleanup_region_start(FCT, ARG)
@@ -80,4 +94,16 @@
/* We need portable names for some of the functions. */
#define __libc_mutex_unlock
-#endif /* libc-lock.h */
+/* Type for key of thread specific data. */
+typedef int __libc_key_t;
+
+/* Create key for thread specific data. */
+#define __libc_key_create(KEY,DEST) -1
+
+/* Set thread-specific data associated with KEY to VAL. */
+#define __libc_setspecific(KEY,VAL) -1
+
+/* Get thread-specific data associated with KEY. */
+#define __libc_getspecific(KEY) 0
+
+#endif /* bits/libc-lock.h */
diff --git a/sysdeps/stub/s_atanl.c b/sysdeps/stub/s_atanl.c
index 38dd6f5991..2957d702d5 100644
--- a/sysdeps/stub/s_atanl.c
+++ b/sysdeps/stub/s_atanl.c
@@ -1,10 +1,12 @@
#include <math.h>
#include <stdio.h>
+#include <errno.h>
long double
__atanl (long double x)
{
fputs ("__atanl not implemented\n", stderr);
+ __set_errno (ENOSYS);
return 0.0;
}
weak_alias (__atanl, atanl)
diff --git a/sysdeps/stub/s_erfl.c b/sysdeps/stub/s_erfl.c
index e01bad206d..7ae25d6252 100644
--- a/sysdeps/stub/s_erfl.c
+++ b/sysdeps/stub/s_erfl.c
@@ -1,12 +1,25 @@
#include <math.h>
#include <stdio.h>
+#include <errno.h>
long double
__erfl (long double x)
{
fputs ("__erfl not implemented\n", stderr);
+ __set_errno (ENOSYS);
return 0.0;
}
weak_alias (__erfl, erfl)
stub_warning (erfl)
+
+long double
+__erfcl (long double x)
+{
+ fputs ("__erfcl not implemented\n", stderr);
+ __set_errno (ENOSYS);
+ return 0.0;
+}
+weak_alias (__erfcl, erfcl)
+
+stub_warning (erfcl)
diff --git a/sysdeps/stub/s_expm1l.c b/sysdeps/stub/s_expm1l.c
index fb8bda5eca..38798812ff 100644
--- a/sysdeps/stub/s_expm1l.c
+++ b/sysdeps/stub/s_expm1l.c
@@ -1,10 +1,12 @@
#include <math.h>
#include <stdio.h>
+#include <errno.h>
long double
__expm1l (long double x)
{
fputs ("__expm1l not implemented\n", stderr);
+ __set_errno (ENOSYS);
return 0.0;
}
weak_alias (__expm1l, expm1l)
diff --git a/sysdeps/stub/s_log1pl.c b/sysdeps/stub/s_log1pl.c
index 07282482f3..9e51ce2d43 100644
--- a/sysdeps/stub/s_log1pl.c
+++ b/sysdeps/stub/s_log1pl.c
@@ -1,10 +1,12 @@
#include <math.h>
#include <stdio.h>
+#include <errno.h>
long double
__log1pl (long double x)
{
fputs ("__log1pl not implemented\n", stderr);
+ __set_errno (ENOSYS);
return 0.0;
}
weak_alias (__log1pl, log1pl)
diff --git a/sysdeps/unix/alpha/sysdep.S b/sysdeps/unix/alpha/sysdep.S
index 9df313422c..fc5cc0436b 100644
--- a/sysdeps/unix/alpha/sysdep.S
+++ b/sysdeps/unix/alpha/sysdep.S
@@ -38,7 +38,7 @@ __errno = errno
.globl __syscall_error
.ent __syscall_error
__syscall_error:
- ldgp gp, 0(t12)
+ ldgp gp, 0(pv)
lda sp, -16(sp)
.frame sp, 16, ra, 0
stq ra, 0(sp)
@@ -53,7 +53,7 @@ __syscall_error:
jsr ra, __errno_location
/* Store the error value. */
- ldl t0, 8(sp)
+ ldq t0, 8(sp)
stl t0, 0(v0)
/* And kick back a -1. */
diff --git a/sysdeps/unix/getlogin.c b/sysdeps/unix/getlogin.c
index 6e8a9a2a87..84b7dd8276 100644
--- a/sysdeps/unix/getlogin.c
+++ b/sysdeps/unix/getlogin.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992, 1996 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1992, 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
@@ -46,7 +46,7 @@ getlogin (void)
thing to do. Note that ttyname(open("/dev/tty")) on those
systems returns /dev/tty, so that is not a possible solution for
getlogin(). */
- if (__ttyname_r (0, real_tty_path, sizeof (tty_pathname)) < 0)
+ if (__ttyname_r (0, real_tty_path, sizeof (tty_pathname)) != 0)
return NULL;
real_tty_path += 5; /* Remove "/dev/". */
diff --git a/sysdeps/unix/getlogin_r.c b/sysdeps/unix/getlogin_r.c
index 75f17cb86f..259879f953 100644
--- a/sysdeps/unix/getlogin_r.c
+++ b/sysdeps/unix/getlogin_r.c
@@ -1,5 +1,5 @@
/* Reentrant function to return the current login name. Unix version.
- Copyright (C) 1991, 1992, 1996 Free Software Foundation, Inc.
+ Copyright (C) 1991, 1992, 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
@@ -50,7 +50,7 @@ getlogin_r (name, name_len)
err = errno;
(void) close (d);
- if (result < 0)
+ if (result != 0)
{
__set_errno (err);
return err;
diff --git a/sysdeps/unix/sysv/linux/Dist b/sysdeps/unix/sysv/linux/Dist
index fc403871f3..1e30ac58fd 100644
--- a/sysdeps/unix/sysv/linux/Dist
+++ b/sysdeps/unix/sysv/linux/Dist
@@ -26,6 +26,7 @@ netipx/ipx.h
nfs/nfs.h
sys/acct.h
sys/debugreg.h
+sys/fsuid.h
sys/io.h
sys/kd.h
sys/kdaemon.h
diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
index 2827113d68..339862d356 100644
--- a/sysdeps/unix/sysv/linux/Makefile
+++ b/sysdeps/unix/sysv/linux/Makefile
@@ -11,7 +11,7 @@ sysdep_headers += sys/mount.h sys/acct.h sys/sysctl.h sys/mtio.h \
sys/module.h sys/io.h sys/klog.h sys/kdaemon.h \
sys/user.h syscall-list.h sys/sysmacros.h sys/procfs.h \
sys/debugreg.h sys/kd.h sys/soundcard.h sys/vt.h \
- sys/quota.h
+ sys/quota.h sys/fsuid.h
# Generate the list of SYS_* macros for the system calls (__NR_* macros).
$(objpfx)syscall-%.h $(objpfx)syscall-%.d: ../sysdeps/unix/sysv/linux/sys/syscall.h
@@ -55,7 +55,8 @@ endif
ifeq ($(subdir),inet)
sysdep_headers += netinet/in_systm.h netinet/udp.h \
netinet/if_fddi.h netinet/if_tr.h netinet/igmp.h \
- netinet/ip_fw.h netinet/ip_icmp.h sys/socketvar.h
+ netinet/ip_fw.h netinet/ip_icmp.h netipx/ipx.h \
+ sys/socketvar.h
endif
# Don't compile the ctype glue code, since there is no old non-GNU C library.
diff --git a/sysdeps/unix/sysv/linux/alpha/brk.S b/sysdeps/unix/sysv/linux/alpha/brk.S
index 74fef64f64..be0539b475 100644
--- a/sysdeps/unix/sysv/linux/alpha/brk.S
+++ b/sysdeps/unix/sysv/linux/alpha/brk.S
@@ -73,8 +73,9 @@ $ok: stq a0, __curbrk
/* What a horrible way to die. */
$err0: ldi v0, ENOMEM
-$err1: addq sp, 8, sp
- jmp zero, __syscall_error
+$err1: lda pv, __syscall_error
+ addq sp, 8, sp
+ jmp zero, (pv), __syscall_error
END(__brk)
diff --git a/sysdeps/unix/sysv/linux/alpha/gnu/types.h b/sysdeps/unix/sysv/linux/alpha/gnu/types.h
index 5c1e407423..2af77f70cf 100644
--- a/sysdeps/unix/sysv/linux/alpha/gnu/types.h
+++ b/sysdeps/unix/sysv/linux/alpha/gnu/types.h
@@ -66,7 +66,12 @@ typedef long int __swblk_t; /* Type of a swap block maybe? */
typedef long int __clock_t;
/* One element in the file descriptor mask array. */
-typedef unsigned int __fd_mask;
+typedef unsigned long int __fd_mask;
+
+/* Due to incaution, we may have gotten these from a kernel header file. */
+#undef __FD_SETSIZE
+#undef __NFDBITS
+#undef __FDMASK
/* Number of descriptors that can fit in an `fd_set'. */
#define __FD_SETSIZE 1024
diff --git a/sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S b/sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S
index dbc25bcbf3..193baf7491 100644
--- a/sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S
+++ b/sysdeps/unix/sysv/linux/alpha/ieee_get_fp_control.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1995, 1996 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1995, 1996, 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by David Mosberger <davidm@azstarnet.com>, 1995.
@@ -41,18 +41,20 @@ LEAF(__ieee_get_fp_control, 16)
ldi a0, GSI_IEEE_FP_CONTROL
ldi v0, __NR_osf_getsysinfo
call_pal PAL_callsys
- bne a3, error
+ bne a3, $error
ldq v0, 0(sp)
lda sp, 16(sp)
ret
-error: lda sp, 16(sp)
+$error: lda sp, 16(sp)
#ifndef PROF
br gp, 1f
1: ldgp gp, 0(gp)
#endif
- jmp zero, __syscall_error
+ lda pv, __syscall_error
+ lda sp, 16(sp)
+ jmp zero, (pv), __syscall_error
END(__ieee_get_fp_control)
diff --git a/sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S b/sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S
index d2d2add56c..be8caf632d 100644
--- a/sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S
+++ b/sysdeps/unix/sysv/linux/alpha/ieee_set_fp_control.S
@@ -43,15 +43,17 @@ LEAF(__ieee_set_fp_control, 16)
lda sp, 16(sp)
- bne a3, error
+ bne a3, $error
ret
-error:
+$error:
#ifndef PROF
br gp, 1f
1: ldgp gp, 0(gp)
#endif
- jmp zero, __syscall_error
+ lda pv, __syscall_error
+ lda sp, 16(sp)
+ jmp zero, (pv), __syscall_error
END(__ieee_set_fp_control)
diff --git a/sysdeps/unix/sysv/linux/alpha/ioperm.c b/sysdeps/unix/sysv/linux/alpha/ioperm.c
index 63bf17588a..76a744d167 100644
--- a/sysdeps/unix/sysv/linux/alpha/ioperm.c
+++ b/sysdeps/unix/sysv/linux/alpha/ioperm.c
@@ -55,14 +55,13 @@
#define JENSEN_IO_BASE (0xfffffc0300000000UL)
#define JENSEN_SPARSE_MEM (0xfffffc0200000000UL)
-/*
- * With respect to the I/O architecture, APECS and LCA are identical,
- * so the following defines apply to LCA as well.
- */
+/* With respect to the I/O architecture, APECS and LCA are identical,
+ so the following defines apply to LCA as well. */
#define APECS_IO_BASE (0xfffffc01c0000000UL)
#define APECS_SPARSE_MEM (0xfffffc0200000000UL)
#define APECS_DENSE_MEM (0xfffffc0300000000UL)
+/* The same holds for CIA and PYXIS. */
#define CIA_IO_BASE (0xfffffc8580000000UL)
#define CIA_SPARSE_MEM (0xfffffc8000000000UL)
#define CIA_DENSE_MEM (0xfffffc8600000000UL)
@@ -104,6 +103,7 @@ static struct platform {
{"Mustang", IOSYS_APECS, 5, APECS_DENSE_MEM, APECS_SPARSE_MEM},
{"Noname", IOSYS_APECS, 5, APECS_DENSE_MEM, APECS_SPARSE_MEM},
{"Sable", IOSYS_T2, 5, T2_DENSE_MEM, T2_SPARSE_MEM},
+ {"Miata", IOSYS_CIA, 5, CIA_DENSE_MEM, CIA_SPARSE_MEM},
};
diff --git a/sysdeps/unix/sysv/linux/alpha/setfpucw.c b/sysdeps/unix/sysv/linux/alpha/setfpucw.c
index 43e8536b20..9133c81110 100644
--- a/sysdeps/unix/sysv/linux/alpha/setfpucw.c
+++ b/sysdeps/unix/sysv/linux/alpha/setfpucw.c
@@ -1,65 +1,78 @@
-#include <fpu_control.h>
+/* Set FP exception mask and rounding mode.
+ Copyright (C) 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
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+#include <fpu_control.h>
#include <asm/fpu.h>
+
extern void __ieee_set_fp_control (unsigned long);
extern unsigned long __ieee_get_fp_control (void);
-
static inline unsigned long
rdfpcr (void)
{
- unsigned long fpcr;
-
- asm ("trapb; mf_fpcr $f0; trapb; stt $f0,%0" : "m="(fpcr));
- return fpcr;
+ unsigned long fpcr;
+ asm ("excb; mf_fpcr %0" : "=f"(fpcr));
+ return fpcr;
}
static inline void
wrfpcr (unsigned long fpcr)
{
- asm volatile ("ldt $f0,%0; trapb; mt_fpcr $f0; trapb" :: "m"(fpcr));
+ asm volatile ("mt_fpcr %0; excb" : : "f"(fpcr));
}
void
__setfpucw (unsigned short fpu_control)
{
- unsigned long fpcr = 0, fpcw = 0;
+ unsigned long fpcr = 0, fpcw = 0;
- if (!fpu_control)
- fpu_control = _FPU_DEFAULT;
+ if (!fpu_control)
+ fpu_control = _FPU_DEFAULT;
- /* first, set dynamic rounding mode: */
+ /* first, set dynamic rounding mode: */
- fpcr = rdfpcr();
- fpcr &= ~FPCR_DYN_MASK;
- switch (fpu_control & 0xc00) {
- case _FPU_RC_NEAREST: fpcr |= FPCR_DYN_NORMAL; break;
- case _FPU_RC_DOWN: fpcr |= FPCR_DYN_MINUS; break;
- case _FPU_RC_UP: fpcr |= FPCR_DYN_PLUS; break;
- case _FPU_RC_ZERO: fpcr |= FPCR_DYN_CHOPPED; break;
+ fpcr = rdfpcr();
+ fpcr &= ~FPCR_DYN_MASK;
+ switch (fpu_control & 0xc00)
+ {
+ case _FPU_RC_NEAREST: fpcr |= FPCR_DYN_NORMAL; break;
+ case _FPU_RC_DOWN: fpcr |= FPCR_DYN_MINUS; break;
+ case _FPU_RC_UP: fpcr |= FPCR_DYN_PLUS; break;
+ case _FPU_RC_ZERO: fpcr |= FPCR_DYN_CHOPPED; break;
}
- wrfpcr(fpcr);
+ wrfpcr(fpcr);
- /* now tell kernel about traps that we like to hear about: */
+ /* now tell kernel about traps that we like to hear about: */
- fpcw = __ieee_get_fp_control();
- fpcw &= ~IEEE_TRAP_ENABLE_MASK;
+ fpcw = __ieee_get_fp_control();
+ fpcw &= ~IEEE_TRAP_ENABLE_MASK;
- if (!(fpu_control & _FPU_MASK_IM))
- fpcw |= IEEE_TRAP_ENABLE_INV;
- if (!(fpu_control & _FPU_MASK_DM))
- fpcw |= IEEE_TRAP_ENABLE_UNF;
- if (!(fpu_control & _FPU_MASK_ZM))
- fpcw |= IEEE_TRAP_ENABLE_DZE;
- if (!(fpu_control & _FPU_MASK_OM))
- fpcw |= IEEE_TRAP_ENABLE_OVF;
- if (!(fpu_control & _FPU_MASK_PM))
- fpcw |= IEEE_TRAP_ENABLE_INE;
+ if (!(fpu_control & _FPU_MASK_IM)) fpcw |= IEEE_TRAP_ENABLE_INV;
+ if (!(fpu_control & _FPU_MASK_DM)) fpcw |= IEEE_TRAP_ENABLE_UNF;
+ if (!(fpu_control & _FPU_MASK_ZM)) fpcw |= IEEE_TRAP_ENABLE_DZE;
+ if (!(fpu_control & _FPU_MASK_OM)) fpcw |= IEEE_TRAP_ENABLE_OVF;
+ if (!(fpu_control & _FPU_MASK_PM)) fpcw |= IEEE_TRAP_ENABLE_INE;
- __ieee_set_fp_control(fpcw);
+ __fpu_control = fpu_control; /* update global copy */
- __fpu_control = fpu_control; /* update global copy */
+ __ieee_set_fp_control(fpcw);
}
diff --git a/sysdeps/unix/sysv/linux/alpha/syscall.S b/sysdeps/unix/sysv/linux/alpha/syscall.S
index 75e1260aea..d25dd6b51f 100644
--- a/sysdeps/unix/sysv/linux/alpha/syscall.S
+++ b/sysdeps/unix/sysv/linux/alpha/syscall.S
@@ -62,10 +62,10 @@ LEAF(__syscall, 0)
mov a5, a4
call_pal PAL_callsys /* Invoke system call */
- bne a3, error
+ bne a3, $error
ret
-error:
+$error:
#ifndef PROF
br gp, 2f
2: ldgp gp, 0(gp)
diff --git a/sysdeps/unix/sysv/linux/net/if_arp.h b/sysdeps/unix/sysv/linux/net/if_arp.h
index b1cd18360e..d784f0cfc7 100644
--- a/sysdeps/unix/sysv/linux/net/if_arp.h
+++ b/sysdeps/unix/sysv/linux/net/if_arp.h
@@ -90,6 +90,8 @@ struct arphdr
#define ARPHRD_ROSE 270
#define ARPHRD_X25 271 /* CCITT X.25. */
#define ARPHRD_PPP 512
+#define ARPHRD_HDLC 513 /* (Cisco) HDLC. */
+#define ARPHRD_LAPB 516 /* LAPB. */
#define ARPHRD_TUNNEL 768 /* IPIP tunnel. */
#define ARPHRD_TUNNEL6 769 /* IPIP6 tunnel. */
diff --git a/sysdeps/unix/sysv/linux/net/ppp_defs.h b/sysdeps/unix/sysv/linux/net/ppp_defs.h
index 5d613e0d0f..f8924c4f27 100644
--- a/sysdeps/unix/sysv/linux/net/ppp_defs.h
+++ b/sysdeps/unix/sysv/linux/net/ppp_defs.h
@@ -1,6 +1,9 @@
#ifndef _NET_PPP_DEFS_H
#define _NET_PPP_DEFS_H 1
+#define __need_time_t
+#include <time.h>
+
#include <asm/types.h>
#include <linux/ppp_defs.h>
diff --git a/sysdeps/unix/sysv/linux/netinet/ip_fw.h b/sysdeps/unix/sysv/linux/netinet/ip_fw.h
index 8ba10ae196..322467b5ff 100644
--- a/sysdeps/unix/sysv/linux/netinet/ip_fw.h
+++ b/sysdeps/unix/sysv/linux/netinet/ip_fw.h
@@ -53,6 +53,7 @@
#include <netinet/ip.h>
#include <netinet/tcp.h>
#include <netinet/udp.h>
+#include <net/if.h>
__BEGIN_DECLS
diff --git a/sysdeps/unix/sysv/linux/netipx/ipx.h b/sysdeps/unix/sysv/linux/netipx/ipx.h
index 170dfdf134..ec93c8185c 100644
--- a/sysdeps/unix/sysv/linux/netipx/ipx.h
+++ b/sysdeps/unix/sysv/linux/netipx/ipx.h
@@ -19,10 +19,94 @@
#ifndef __NETIPX_IPX_H
#define __NETIPX_IPX_H 1
-#include <asm/types.h>
-#include <linux/ipx.h>
+#include <features.h>
+
+#include <sys/types.h>
+#include <sys/socket.h>
+
+__BEGIN_DECLS
#define SOL_IPX 256 /* sockopt level */
-#define IPX_TYPE 1
+
+#define IPX_TYPE 1
+#define IPX_NODE_LEN 6
+#define IPX_MTU 576
+
+struct sockaddr_ipx
+ {
+ sa_family_t sipx_family;
+ u_int16_t sipx_port;
+ u_int32_t sipx_network;
+ unsigned char sipx_node[IPX_NODE_LEN];
+ u_int8_t sipx_type;
+ unsigned char sipx_zero; /* 16 byte fill */
+ };
+
+/*
+ * So we can fit the extra info for SIOCSIFADDR into the address nicely
+ */
+
+#define sipx_special sipx_port
+#define sipx_action sipx_zero
+#define IPX_DLTITF 0
+#define IPX_CRTITF 1
+
+typedef struct ipx_route_definition
+ {
+ unsigned long ipx_network;
+ unsigned long ipx_router_network;
+ unsigned char ipx_router_node[IPX_NODE_LEN];
+ }
+ipx_route_definition;
+
+typedef struct ipx_interface_definition
+ {
+ unsigned long ipx_network;
+ unsigned char ipx_device[16];
+ unsigned char ipx_dlink_type;
+#define IPX_FRAME_NONE 0
+#define IPX_FRAME_SNAP 1
+#define IPX_FRAME_8022 2
+#define IPX_FRAME_ETHERII 3
+#define IPX_FRAME_8023 4
+#define IPX_FRAME_TR_8022 5
+ unsigned char ipx_special;
+#define IPX_SPECIAL_NONE 0
+#define IPX_PRIMARY 1
+#define IPX_INTERNAL 2
+ unsigned char ipx_node[IPX_NODE_LEN];
+ }
+ipx_interface_definition;
+
+typedef struct ipx_config_data
+ {
+ unsigned char ipxcfg_auto_select_primary;
+ unsigned char ipxcfg_auto_create_interfaces;
+ }
+ipx_config_data;
+
+/*
+ * OLD Route Definition for backward compatibility.
+ */
+
+struct ipx_route_def
+ {
+ unsigned long ipx_network;
+ unsigned long ipx_router_network;
+#define IPX_ROUTE_NO_ROUTER 0
+ unsigned char ipx_router_node[IPX_NODE_LEN];
+ unsigned char ipx_device[16];
+ unsigned short ipx_flags;
+#define IPX_RT_SNAP 8
+#define IPX_RT_8022 4
+#define IPX_RT_BLUEBOOK 2
+#define IPX_RT_ROUTED 1
+ };
+
+#define SIOCAIPXITFCRT (SIOCPROTOPRIVATE)
+#define SIOCAIPXPRISLT (SIOCPROTOPRIVATE + 1)
+#define SIOCIPXCFGDATA (SIOCPROTOPRIVATE + 2)
+
+__END_DECLS
#endif /* netipx/ipx.h */
diff --git a/sysdeps/unix/sysv/linux/ptrace.c b/sysdeps/unix/sysv/linux/ptrace.c
index ede413a43c..b50234d2a1 100644
--- a/sysdeps/unix/sysv/linux/ptrace.c
+++ b/sysdeps/unix/sysv/linux/ptrace.c
@@ -1,20 +1,20 @@
-/* Copyright (C) 1995, 1996 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
+/* Copyright (C) 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
-modify it under the terms of the GNU Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
-The GNU C Library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-Library General Public License for more details.
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
-You should have received a copy of the GNU Library General Public
-License along with the GNU C Library; see the file COPYING.LIB. If
-not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
#include <errno.h>
#include <sys/types.h>
@@ -52,6 +52,5 @@ ptrace (enum __ptrace_request request, ...)
return res;
}
- __set_errno (-res);
return -1;
}
diff --git a/sysdeps/unix/sysv/linux/socketbits.h b/sysdeps/unix/sysv/linux/socketbits.h
index 38a8fb74d1..3630ff5aa3 100644
--- a/sysdeps/unix/sysv/linux/socketbits.h
+++ b/sysdeps/unix/sysv/linux/socketbits.h
@@ -29,6 +29,9 @@
__BEGIN_DECLS
+/* Type for length arguments in socket calls. */
+typedef unsigned int socklen_t;
+
/* Types of sockets. */
enum __socket_type
{
@@ -116,25 +119,22 @@ enum
struct msghdr
{
__ptr_t msg_name; /* Address to send to/receive from. */
- int msg_namelen; /* Length of address data. */
- /* XXX Should be type `size_t' according to POSIX.1g. */
+ socklen_t msg_namelen; /* Length of address data. */
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. */
__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. */
+ socklen_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
+ socklen_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/fsuid.h b/sysdeps/unix/sysv/linux/sys/fsuid.h
new file mode 100644
index 0000000000..fd30542e9f
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sys/fsuid.h
@@ -0,0 +1,36 @@
+/* Copyright (C) 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
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#ifndef _SYS_FSUID_H
+#define _SYS_FSUID_H 1
+
+#include <features.h>
+#include <sys/types.h>
+
+__BEGIN_DECLS
+
+/* Change uid used for file access control to UID, without affecting
+ other priveledges (such as who can send signals at the process). */
+extern int setfsuid __P ((__uid_t __uid));
+
+/* Ditto for group id. */
+extern int setfsgid __P ((__gid_t __gid));
+
+__END_DECLS
+
+#endif /* fsuid.h */
diff --git a/sysdeps/unix/sysv/linux/sys/mount.h b/sysdeps/unix/sysv/linux/sys/mount.h
index 59a1aa45be..08a2e3158f 100644
--- a/sysdeps/unix/sysv/linux/sys/mount.h
+++ b/sysdeps/unix/sysv/linux/sys/mount.h
@@ -1,5 +1,5 @@
/* Header file for mounting/unmount Linux filesystems.
- Copyright (C) 1996 Free Software Foundation, Inc.
+ Copyright (C) 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
@@ -17,13 +17,81 @@
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
+/* This is taken from /usr/include/linux/fs.h. */
+
#ifndef _SYS_MOUNT_H
#define _SYS_MOUNT_H 1
#include <features.h>
+#include <sys/ioctl.h>
+
__BEGIN_DECLS
+#define BLOCK_SIZE 1024
+#define BLOCK_SIZE_BITS 10
+
+
+/* These are the fs-independent mount-flags: up to 16 flags are
+ supported */
+#define MS_RDONLY 1 /* Mount read-only. */
+#define MS_NOSUID 2 /* Ignore suid and sgid bits. */
+#define MS_NODEV 4 /* Disallow access to device special files. */
+#define MS_NOEXEC 8 /* Disallow program execution. */
+#define MS_SYNCHRONOUS 16 /* Writes are synced at once. */
+#define MS_REMOUNT 32 /* Alter flags of a mounted FS. */
+#define MS_MANDLOCK 64 /* Allow mandatory locks on an FS. */
+#define S_WRITE 128 /* Write on file/directory/symlink. */
+#define S_APPEND 256 /* Append-only file. */
+#define S_IMMUTABLE 512 /* Immutable file. */
+#define MS_NOATIME 1024 /* Do not update access times. */
+
+
+/* Flags that can be altered by MS_REMOUNT */
+#define MS_RMT_MASK (MS_RDONLY | MS_MANDLOCK)
+
+
+/* Magic mount flag number. Has to be or-ed to the flag values. */
+
+#define MS_MGC_VAL 0xc0ed0000 /* Magic flag number to indicate "new" flags */
+#define MS_MGC_MSK 0xffff0000 /* Magic flag number mask */
+
+
+/* Note that read-only etc flags are inode-specific: setting some
+ file-system flags just means all the inodes inherit those flags by
+ default. It might be possible to override it selectively if you
+ really wanted to with some ioctl() that is not currently
+ implemented.
+
+ Exception: MS_RDONLY is always applied to the entire file system. */
+#define IS_RDONLY(inode) \
+ (((inode)->i_sb) && ((inode)->i_sb->s_flags & MS_RDONLY))
+#define DO_UPDATE_ATIME(inode) \
+ (!((inode)->i_flags & MS_NOATIME) && !IS_RDONLY (inode))
+#define IS_NOSUID(inode) ((inode)->i_flags & MS_NOSUID)
+#define IS_NODEV(inode) ((inode)->i_flags & MS_NODEV)
+#define IS_NOEXEC(inode) ((inode)->i_flags & MS_NOEXEC)
+#define IS_SYNC(inode) ((inode)->i_flags & MS_SYNCHRONOUS)
+#define IS_MANDLOCK(inode) ((inode)->i_flags & MS_MANDLOCK)
+
+#define IS_WRITABLE(inode) ((inode)->i_flags & S_WRITE)
+#define IS_APPEND(inode) ((inode)->i_flags & S_APPEND)
+#define IS_IMMUTABLE(inode) ((inode)->i_flags & S_IMMUTABLE)
+
+
+/* The read-only stuff doesn't really belong here, but any other place
+ is probably as bad and I don't want to create yet another include
+ file. */
+
+#define BLKROSET _IO(0x12, 93) /* Set device read-only (0 = read-write). */
+#define BLKROGET _IO(0x12, 94) /* Get read-only status (0 = read_write). */
+#define BLKRRPART _IO(0x12, 95) /* Re-read partition table. */
+#define BLKGETSIZE _IO(0x12, 96) /* Return device size. */
+#define BLKFLSBUF _IO(0x12, 97) /* Flush buffer cache. */
+#define BLKRASET _IO(0x12, 98) /* Set read ahead for block device. */
+#define BLKRAGET _IO(0x12, 99) /* Get current read ahead setting. */
+
+
/* Mount a filesystem. */
extern int mount __P ((__const char *__special_file, __const char *__dir,
__const char *__fstype, unsigned long int __rwflag,
diff --git a/sysdeps/unix/sysv/linux/sys/ttydefaults.h b/sysdeps/unix/sysv/linux/sys/ttydefaults.h
index 28512ebebb..b21c6d5686 100644
--- a/sysdeps/unix/sysv/linux/sys/ttydefaults.h
+++ b/sysdeps/unix/sysv/linux/sys/ttydefaults.h
@@ -61,14 +61,14 @@
#ifdef _POSIX_VDISABLE
# define CEOL _POSIX_VDISABLE
#else
-# define CEOL ((unsigned char)'\377') /* XXX avoid _POSIX_VDISABLE */
+# define CEOL '\0' /* XXX avoid _POSIX_VDISABLE */
#endif
#define CERASE 0177
#define CINTR CTRL('c')
#ifdef _POSIX_VDISABLE
# define CSTATUS _POSIX_VDISABLE
#else
-# define CSTATUS ((unsigned char)'\377') /* XXX avoid _POSIX_VDISABLE */
+# define CSTATUS '\0' /* XXX avoid _POSIX_VDISABLE */
#endif
#define CKILL CTRL('u')
#define CMIN 1
diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list
index c7180ccb42..a3b0eef691 100644
--- a/sysdeps/unix/sysv/linux/syscalls.list
+++ b/sysdeps/unix/sysv/linux/syscalls.list
@@ -13,6 +13,7 @@ geteuid - geteuid 0 __geteuid geteuid
getpgid - getpgid 1 __getpgid getpgid
getpgrp - getpgrp 0 getpgrp
getppid - getppid 0 __getppid getppid
+getresgid EXTRA getresgid 3 getresgid
getresuid EXTRA getresuid 3 getresuid
getsid - getsid 1 getsid
init_module EXTRA init_module 5 init_module
@@ -32,6 +33,7 @@ pause - pause 0 __libc_pause pause
personality init-first personality 1 __personality personality
pipe - pipe 1 __pipe pipe
query_module EXTRA query_module 5 query_module
+quotactl EXTRA quotactl 4 quotactl
s_getdents EXTRA getdents 3 __getdents
s_getpriority getpriority getpriority 2 __syscall_getpriority
s_poll poll poll 3 __syscall_poll
@@ -53,6 +55,7 @@ select - _newselect 5 __select select
setfsgid EXTRA setfsgid 1 setfsgid
setfsuid EXTRA setfsuid 1 setfsuid
setpgid - setpgid 2 __setpgid setpgid
+setresgid EXTRA setresgid 3 setresgid
setresuid EXTRA setresuid 3 setresuid
sigpending - sigpending 1 sigpending
sigprocmask - sigprocmask 3 __sigprocmask sigprocmask
@@ -64,7 +67,8 @@ sys_readv readv readv 3 __syscall_readv
sys_stat xstat stat 2 __syscall_stat
sys_writev writev writev 3 __syscall_writev
sysinfo EXTRA sysinfo 1 sysinfo
-swapon - swapon 2 swapon
+swapon - swapon 2 __swapon swapon
+swapoff - swapoff 1 __swapoff swapoff
umount EXTRA umount 1 __umount umount
uselib EXTRA uselib 1 uselib
wait4 - wait4 4 __wait4 wait4