diff options
Diffstat (limited to 'sysdeps')
-rw-r--r-- | sysdeps/i386/fpu/fraiseexcpt.c | 51 | ||||
-rw-r--r-- | sysdeps/m68k/bits/nan.h (renamed from sysdeps/m68k/nan.h) | 0 | ||||
-rw-r--r-- | sysdeps/mach/hurd/abi-tag.h | 15 | ||||
-rw-r--r-- | sysdeps/mach/hurd/dl-sysdep.c | 1 | ||||
-rw-r--r-- | sysdeps/standalone/arm/bits/errno.h | 1 | ||||
-rw-r--r-- | sysdeps/standalone/brk.c | 6 | ||||
-rw-r--r-- | sysdeps/stub/getdomain.c | 34 | ||||
-rw-r--r-- | sysdeps/stub/sys/param.h | 4 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sys/quota.h | 1 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/syscalls.list | 1 |
10 files changed, 60 insertions, 54 deletions
diff --git a/sysdeps/i386/fpu/fraiseexcpt.c b/sysdeps/i386/fpu/fraiseexcpt.c index 90e992a..c6cd6d6 100644 --- a/sysdeps/i386/fpu/fraiseexcpt.c +++ b/sysdeps/i386/fpu/fraiseexcpt.c @@ -32,44 +32,67 @@ feraiseexcept (int excepts) /* First: invalid exception. */ if ((FE_INVALID & excepts) != 0) { - /* One example of a invalid operation is 0 * Infinity. */ - double d = 0.0 * HUGE_VAL; + /* One example of a invalid operation is 0.0 / 0.0. */ + double d; + __asm__ ("fldz; fdiv %%st, %%st(0); fwait" : "=t" (d)); (void) &d; - /* Now force the exception. */ - __asm__ ("fwait"); } /* Next: division by zero. */ if ((FE_DIVBYZERO & excepts) != 0) { double d; - __asm__ ("fld1; fldz; fdivp %%st, %%st(1); fwait" : "=t" (d)); + __asm__ ("fldz; fld1; fdivp %%st, %%st(1); fwait" : "=t" (d)); (void) &d; } /* Next: overflow. */ if ((FE_OVERFLOW & excepts) != 0) { - long double d = LDBL_MAX * LDBL_MAX; - (void) &d; - /* Now force the exception. */ - __asm__ ("fwait"); + /* There is no way to raise only the overflow flag. Do it the + hard way. */ + fenv_t temp; + + /* Bah, we have to clear selected exceptions. Since there is no + `fldsw' instruction we have to do it the hard way. */ + __asm__ ("fnstenv %0" : "=m" (*&temp)); + + /* Set the relevant bits. */ + temp.status_word |= FE_OVERFLOW; + + /* Put the new data in effect. */ + __asm__ ("fldenv %0" : : "m" (*&temp)); + + /* And raise the exception. */ + __asm__ ("fwait"); } /* Next: underflow. */ if ((FE_UNDERFLOW & excepts) != 0) { - long double d = LDBL_MIN / 16.0; - (void) &d; - /* Now force the exception. */ - __asm__ ("fwait"); + /* There is no way to raise only the overflow flag. Do it the + hard way. */ + fenv_t temp; + + /* Bah, we have to clear selected exceptions. Since there is no + `fldsw' instruction we have to do it the hard way. */ + __asm__ ("fnstenv %0" : "=m" (*&temp)); + + /* Set the relevant bits. */ + temp.status_word |= FE_UNDERFLOW; + + /* Put the new data in effect. */ + __asm__ ("fldenv %0" : : "m" (*&temp)); + + /* And raise the exception. */ + __asm__ ("fwait"); } /* Last: inexact. */ if ((FE_INEXACT & excepts) != 0) { long double d; - __asm__ ("fld1; fldpi; fdivp %%st, %%st(1); fwait" : "=t" (d)); + __asm__ ("fmul %%st, %%st(0); fwait" : "=t" (d) : "0" (LDBL_MAX)); (void) &d; } } diff --git a/sysdeps/m68k/nan.h b/sysdeps/m68k/bits/nan.h index b4efddf..b4efddf 100644 --- a/sysdeps/m68k/nan.h +++ b/sysdeps/m68k/bits/nan.h diff --git a/sysdeps/mach/hurd/abi-tag.h b/sysdeps/mach/hurd/abi-tag.h index 0cf6e80..0498d6e 100644 --- a/sysdeps/mach/hurd/abi-tag.h +++ b/sysdeps/mach/hurd/abi-tag.h @@ -1,5 +1,12 @@ -#define HURD_MAJOR_VERSION 0 -#define HURD_MINOR_VERSION 2 +#define ABI_HURD_TAG 1 -#define ABI_TAG ((HURD_MAJOR_VERSION << 24) + \ - (HURD_MINOR_VERSION << 16)) +#define ABI_HURD_MAJOR 0 +#define ABI_HURD_MINOR 0 +#define ABI_HURD_PATCH 0 + +/* Don't use `|' in this expression, it is a comment character in the + assembler. */ +#define ABI_TAG ((ABI_HURD_TAG << 24) + \ + (ABI_HURD_MAJOR << 16) + \ + (ABI_HURD_MINOR << 8) + \ + (ABI_HURD_PATCH << 0)) diff --git a/sysdeps/mach/hurd/dl-sysdep.c b/sysdeps/mach/hurd/dl-sysdep.c index 0f26abe..68c4cb3 100644 --- a/sysdeps/mach/hurd/dl-sysdep.c +++ b/sysdeps/mach/hurd/dl-sysdep.c @@ -665,6 +665,7 @@ _exit (int status) /* Read the whole contents of FILE into new mmap'd space with given protections. The size of the file is returned in SIZE. */ void * +weak_function _dl_sysdep_read_whole_file (const char *file, size_t *size, int prot) { struct stat stat; diff --git a/sysdeps/standalone/arm/bits/errno.h b/sysdeps/standalone/arm/bits/errno.h index 8090a80..49a4998 100644 --- a/sysdeps/standalone/arm/bits/errno.h +++ b/sysdeps/standalone/arm/bits/errno.h @@ -47,6 +47,7 @@ #define EPROTOTYPE 19 #define ESRCH 20 #define EPERM 21 +#define ENOTDIR 22 #endif #define __set_errno(val) errno = (val) diff --git a/sysdeps/standalone/brk.c b/sysdeps/standalone/brk.c index 5985b30..6ee9935 100644 --- a/sysdeps/standalone/brk.c +++ b/sysdeps/standalone/brk.c @@ -46,8 +46,10 @@ int __C_heap_size; static #endif void -__NONE_set_memvals (argc, argv, envp), - int argc; char **argv; char **envp; +__NONE_set_memvals (argc, argv, envp) + int argc; + char **argv; + char **envp; { __rorig = diff --git a/sysdeps/stub/getdomain.c b/sysdeps/stub/getdomain.c deleted file mode 100644 index ad7d72b..0000000 --- a/sysdeps/stub/getdomain.c +++ /dev/null @@ -1,34 +0,0 @@ -/* 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 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 <errno.h> -#include <unistd.h> - -/* Put the name of the current YP domain in no more than LEN bytes of NAME. - The result is null-terminated if LEN is large enough for the full - name and the terminator. */ -int -getdomainname (name, len) - char *name; - size_t len; -{ - __set_errno (ENOSYS); - return -1; -} - -stub_warning (getdomainname) diff --git a/sysdeps/stub/sys/param.h b/sysdeps/stub/sys/param.h index b1ea52a..1dafdda 100644 --- a/sysdeps/stub/sys/param.h +++ b/sysdeps/stub/sys/param.h @@ -8,3 +8,7 @@ #include <limits.h> #define MAXSYMLINKS 1 + +/* Macros for min/max. */ +#define MIN(a,b) (((a)<(b))?(a):(b)) +#define MAX(a,b) (((a)>(b))?(a):(b)) diff --git a/sysdeps/unix/sysv/linux/sys/quota.h b/sysdeps/unix/sysv/linux/sys/quota.h index d897b79..3a1c696 100644 --- a/sysdeps/unix/sysv/linux/sys/quota.h +++ b/sysdeps/unix/sysv/linux/sys/quota.h @@ -1,2 +1,3 @@ /* The kernel header file contains all declarations and definitions. */ +#include <asm/types.h> #include <linux/quota.h> diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list index c7180cc..5d91a2e 100644 --- a/sysdeps/unix/sysv/linux/syscalls.list +++ b/sysdeps/unix/sysv/linux/syscalls.list @@ -32,6 +32,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 |