diff options
Diffstat (limited to 'libc/sysdeps')
70 files changed, 1890 insertions, 965 deletions
diff --git a/libc/sysdeps/linux/sh/bits/byteswap.h b/libc/sysdeps/linux/sh/bits/byteswap.h index 6b5115658..7866abe9c 100644 --- a/libc/sysdeps/linux/sh/bits/byteswap.h +++ b/libc/sysdeps/linux/sh/bits/byteswap.h @@ -1,21 +1,21 @@  /* Macros to swap the order of bytes in integer values. -   Copyright (C) 1997, 1998 Free Software Foundation, Inc. +   Copyright (C) 1997, 1998, 2000, 2001 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #if !defined _BYTESWAP_H && !defined _NETINET_IN_H  # error "Never use <bits/byteswap.h> directly; include <byteswap.h> instead." @@ -53,12 +53,27 @@ __bswap_32 (unsigned int __bsx)  #if defined __GNUC__ && __GNUC__ >= 2  /* Swap bytes in 64 bit value.  */ +# define __bswap_constant_64(x) \ +     ((((x) & 0xff00000000000000ull) >> 56)				      \ +      | (((x) & 0x00ff000000000000ull) >> 40)				      \ +      | (((x) & 0x0000ff0000000000ull) >> 24)				      \ +      | (((x) & 0x000000ff00000000ull) >> 8)				      \ +      | (((x) & 0x00000000ff000000ull) << 8)				      \ +      | (((x) & 0x0000000000ff0000ull) << 24)				      \ +      | (((x) & 0x000000000000ff00ull) << 40)				      \ +      | (((x) & 0x00000000000000ffull) << 56)) +  # define __bswap_64(x) \       (__extension__							      \ -      ({ union { unsigned long long int __ll;				      \ -		 unsigned long int __l[2]; } __v, __r;			      \ -	 __v.__ll = (x);						      \ -	 __r.__l[0] = __bswap_32 (__v.__l[1]);				      \ -	 __r.__l[1] = __bswap_32 (__v.__l[0]);				      \ +      ({ union { __extension__ unsigned long long int __ll;		      \ +		 unsigned int __l[2]; } __w, __r;			      \ +         if (__builtin_constant_p (x))					      \ +	   __r.__ll = __bswap_constant_64 (x);				      \ +	 else								      \ +	   {								      \ +	     __w.__ll = (x);						      \ +	     __r.__l[0] = __bswap_32 (__w.__l[1]);			      \ +	     __r.__l[1] = __bswap_32 (__w.__l[0]);			      \ +	   }								      \  	 __r.__ll; }))  #endif diff --git a/libc/sysdeps/linux/sh/bits/cmathcalls.h b/libc/sysdeps/linux/sh/bits/cmathcalls.h index c1b0781b0..c680c6d8e 100644 --- a/libc/sysdeps/linux/sh/bits/cmathcalls.h +++ b/libc/sysdeps/linux/sh/bits/cmathcalls.h @@ -1,22 +1,22 @@  /* Prototype declarations for complex math functions;     helper file for <complex.h>. -   Copyright (C) 1997, 1998 Free Software Foundation, Inc. +   Copyright (C) 1997, 1998, 2001 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  /* NOTE: Because of the special way this file is used by <complex.h>, this     file must NOT be protected from multiple inclusion as header files @@ -47,7 +47,6 @@  #define _Mdouble_complex_ _Mdouble_ _Complex -__BEGIN_DECLS  /* Trigonometric functions.  */ @@ -131,30 +130,29 @@ __MATHDECL (_Mdouble_,creal, (_Mdouble_complex_ __z));  /* Now some optimized versions.  GCC has handy notations for these -   functions.  */ -#if defined __GNUC__ && defined __OPTIMIZE__ +   functions.  Recent GCC handles these as builtin functions so does +   not need inlines.  */ +#if defined __GNUC__ && !__GNUC_PREREQ (2, 97) && defined __OPTIMIZE__  /* Imaginary part of Z.  */  extern __inline _Mdouble_ -__MATH_PRECNAME(cimag) (_Mdouble_complex_ __z) +__MATH_PRECNAME(cimag) (_Mdouble_complex_ __z) __THROW  {    return __imag__ __z;  }  /* Real part of Z.  */  extern __inline _Mdouble_ -__MATH_PRECNAME(creal) (_Mdouble_complex_ __z) +__MATH_PRECNAME(creal) (_Mdouble_complex_ __z) __THROW  {    return __real__ __z;  }  /* Complex conjugate of Z.  */  extern __inline _Mdouble_complex_ -__MATH_PRECNAME(conj) (_Mdouble_complex_ __z) +__MATH_PRECNAME(conj) (_Mdouble_complex_ __z) __THROW  { -  return ~__z; +  return __extension__ ~__z;  }  #endif - -__END_DECLS diff --git a/libc/sysdeps/linux/sh/bits/confname.h b/libc/sysdeps/linux/sh/bits/confname.h index 229088d67..ba8868af4 100644 --- a/libc/sysdeps/linux/sh/bits/confname.h +++ b/libc/sysdeps/linux/sh/bits/confname.h @@ -1,21 +1,21 @@  /* `sysconf', `pathconf', and `confstr' NAME values.  Generic version. -   Copyright (C) 1993, 1995, 1996, 1997, 1998 Free Software Foundation, Inc. +   Copyright (C) 1993, 1995-1998, 2000, 2001 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #ifndef _UNISTD_H  # error "Never use <bits/confname.h> directly; include <unistd.h> instead." @@ -50,8 +50,20 @@ enum  #define	_PC_PRIO_IO			_PC_PRIO_IO      _PC_SOCK_MAXBUF,  #define	_PC_SOCK_MAXBUF			_PC_SOCK_MAXBUF -    _PC_FILESIZEBITS +    _PC_FILESIZEBITS,  #define _PC_FILESIZEBITS		_PC_FILESIZEBITS +    _PC_REC_INCR_XFER_SIZE, +#define _PC_REC_INCR_XFER_SIZE		_PC_REC_INCR_XFER_SIZE +    _PC_REC_MAX_XFER_SIZE, +#define _PC_REC_MAX_XFER_SIZE		_PC_REC_MAX_XFER_SIZE +    _PC_REC_MIN_XFER_SIZE, +#define _PC_REC_MIN_XFER_SIZE		_PC_REC_MIN_XFER_SIZE +    _PC_REC_XFER_ALIGN, +#define _PC_REC_XFER_ALIGN		_PC_REC_XFER_ALIGN +    _PC_ALLOC_SIZE_MIN, +#define _PC_ALLOC_SIZE_MIN		_PC_ALLOC_SIZE_MIN +    _PC_SYMLINK_MAX +#define _PC_SYMLINK_MAX			_PC_SYMLINK_MAX    };  /* Values for the argument to `sysconf'.  */ @@ -185,6 +197,8 @@ enum  #define	_SC_SELECT			_SC_SELECT      _SC_UIO_MAXIOV,  #define	_SC_UIO_MAXIOV			_SC_UIO_MAXIOV +    _SC_IOV_MAX = _SC_UIO_MAXIOV, +#define _SC_IOV_MAX			_SC_IOV_MAX      _SC_PII_INTERNET_STREAM,  #define	_SC_PII_INTERNET_STREAM		_SC_PII_INTERNET_STREAM      _SC_PII_INTERNET_DGRAM, @@ -335,8 +349,117 @@ enum  #define _SC_XOPEN_LEGACY		_SC_XOPEN_LEGACY      _SC_XOPEN_REALTIME,  #define _SC_XOPEN_REALTIME		_SC_XOPEN_REALTIME -    _SC_XOPEN_REALTIME_THREADS +    _SC_XOPEN_REALTIME_THREADS,  #define _SC_XOPEN_REALTIME_THREADS	_SC_XOPEN_REALTIME_THREADS + +    _SC_ADVISORY_INFO, +#define _SC_ADVISORY_INFO		_SC_ADVISORY_INFO +    _SC_BARRIERS, +#define _SC_BARRIERS			_SC_BARRIERS +    _SC_BASE, +#define _SC_BASE			_SC_BASE +    _SC_C_LANG_SUPPORT, +#define _SC_C_LANG_SUPPORT		_SC_C_LANG_SUPPORT +    _SC_C_LANG_SUPPORT_R, +#define _SC_C_LANG_SUPPORT_R		_SC_C_LANG_SUPPORT_R +    _SC_CLOCK_SELECTION, +#define _SC_CLOCK_SELECTION		_SC_CLOCK_SELECTION +    _SC_CPUTIME, +#define _SC_CPUTIME			_SC_CPUTIME +    _SC_THREAD_CPUTIME, +#define _SC_THREAD_CPUTIME		_SC_THREAD_CPUTIME +    _SC_DEVICE_IO, +#define _SC_DEVICE_IO			_SC_DEVICE_IO +    _SC_DEVICE_SPECIFIC, +#define _SC_DEVICE_SPECIFIC		_SC_DEVICE_SPECIFIC +    _SC_DEVICE_SPECIFIC_R, +#define _SC_DEVICE_SPECIFIC_R		_SC_DEVICE_SPECIFIC_R +    _SC_FD_MGMT, +#define _SC_FD_MGMT			_SC_FD_MGMT +    _SC_FIFO, +#define _SC_FIFO			_SC_FIFO +    _SC_PIPE, +#define _SC_PIPE			_SC_PIPE +    _SC_FILE_ATTRIBUTES, +#define _SC_FILE_ATTRIBUTES		_SC_FILE_ATTRIBUTES +    _SC_FILE_LOCKING, +#define _SC_FILE_LOCKING		_SC_FILE_LOCKING +    _SC_FILE_SYSTEM, +#define _SC_FILE_SYSTEM			_SC_FILE_SYSTEM +    _SC_MONOTONIC_CLOCK, +#define _SC_MONOTONIC_CLOCK		_SC_MONOTONIC_CLOCK +    _SC_MULTI_PROCESS, +#define _SC_MULTI_PROCESS		_SC_MULTI_PROCESS +    _SC_SINGLE_PROCESS, +#define _SC_SINGLE_PROCESS		_SC_SINGLE_PROCESS +    _SC_NETWORKING, +#define _SC_NETWORKING			_SC_NETWORKING +    _SC_READER_WRITER_LOCKS, +#define _SC_READER_WRITER_LOCKS		_SC_READER_WRITER_LOCKS +    _SC_SPIN_LOCKS, +#define _SC_SPIN_LOCKS			_SC_SPIN_LOCKS +    _SC_REGEXP, +#define _SC_REGEXP			_SC_REGEXP +    _SC_REGEX_VERSION, +#define _SC_REGEX_VERSION		_SC_REGEX_VERSION +    _SC_SHELL, +#define _SC_SHELL			_SC_SHELL +    _SC_SIGNALS, +#define _SC_SIGNALS			_SC_SIGNALS +    _SC_SPAWN, +#define _SC_SPAWN			_SC_SPAWN +    _SC_SPORADIC_SERVER, +#define _SC_SPORADIC_SERVER		_SC_SPORADIC_SERVER +    _SC_THREAD_SPORADIC_SERVER, +#define _SC_THREAD_SPORADIC_SERVER	_SC_THREAD_SPORADIC_SERVER +    _SC_SYSTEM_DATABASE, +#define _SC_SYSTEM_DATABASE		_SC_SYSTEM_DATABASE +    _SC_SYSTEM_DATABASE_R, +#define _SC_SYSTEM_DATABASE_R		_SC_SYSTEM_DATABASE_R +    _SC_TIMEOUTS, +#define _SC_TIMEOUTS			_SC_TIMEOUTS +    _SC_TYPED_MEMORY_OBJECTS, +#define _SC_TYPED_MEMORY_OBJECTS	_SC_TYPED_MEMORY_OBJECTS +    _SC_USER_GROUPS, +#define _SC_USER_GROUPS			_SC_USER_GROUPS +    _SC_USER_GROUPS_R, +#define _SC_USER_GROUPS_R		_SC_USER_GROUPS_R +    _SC_2_PBS, +#define _SC_2_PBS			_SC_2_PBS +    _SC_2_PBS_ACCOUNTING, +#define _SC_2_PBS_ACCOUNTING		_SC_2_PBS_ACCOUNTING +    _SC_2_PBS_LOCATE, +#define _SC_2_PBS_LOCATE		_SC_2_PBS_LOCATE +    _SC_2_PBS_MESSAGE, +#define _SC_2_PBS_MESSAGE		_SC_2_PBS_MESSAGE +    _SC_2_PBS_TRACK, +#define _SC_2_PBS_TRACK			_SC_2_PBS_TRACK +    _SC_SYMLOOP_MAX, +#define _SC_SYMLOOP_MAX			_SC_SYMLOOP_MAX +    _SC_STREAMS, +#define _SC_STREAMS			_SC_STREAMS +    _SC_2_PBS_CHECKPOINT, +#define _SC_2_PBS_CHECKPOINT		_SC_2_PBS_CHECKPOINT + +    _SC_V6_ILP32_OFF32, +#define _SC_V6_ILP32_OFF32		_SC_V6_ILP32_OFF32 +    _SC_V6_ILP32_OFFBIG, +#define _SC_V6_ILP32_OFFBIG		_SC_V6_ILP32_OFFBIG +    _SC_V6_LP64_OFF64, +#define _SC_V6_LP64_OFF64		_SC_V6_LP64_OFF64 +    _SC_V6_LPBIG_OFFBIG, +#define _SC_V6_LPBIG_OFFBIG		_SC_V6_LPBIG_OFFBIG + +    _SC_HOST_NAME_MAX, +#define _SC_HOST_NAME_MAX		_SC_HOST_NAME_MAX +    _SC_TRACE, +#define _SC_TRACE			_SC_TRACE +    _SC_TRACE_EVENT_FILTER, +#define _SC_TRACE_EVENT_FILTER		_SC_TRACE_EVENT_FILTER +    _SC_TRACE_INHERIT, +#define _SC_TRACE_INHERIT		_SC_TRACE_INHERIT +    _SC_TRACE_LOG +#define _SC_TRACE_LOG			_SC_TRACE_LOG    };  #if (defined __USE_POSIX2 || defined __USE_UNIX98 \ @@ -345,64 +468,99 @@ enum  /* Values for the NAME argument to `confstr'.  */  enum    { -    _CS_PATH			/* The default search path.  */ +    _CS_PATH,			/* The default search path.  */  #define _CS_PATH		_CS_PATH -#if (defined __USE_FILE_OFFSET64 || defined __USE_LARGEFILE64 \ +# if (defined __USE_FILE_OFFSET64 || defined __USE_LARGEFILE64 \       || defined __USE_LARGEFILE) -    ,      _CS_LFS_CFLAGS = 1000, -# define _CS_LFS_CFLAGS		_CS_LFS_CFLAGS +#  define _CS_LFS_CFLAGS		_CS_LFS_CFLAGS      _CS_LFS_LDFLAGS, -# define _CS_LFS_LDFLAGS	_CS_LFS_LDFLAGS +#  define _CS_LFS_LDFLAGS	_CS_LFS_LDFLAGS      _CS_LFS_LIBS, -# define _CS_LFS_LIBS		_CS_LFS_LIBS +#  define _CS_LFS_LIBS		_CS_LFS_LIBS      _CS_LFS_LINTFLAGS, -# define _CS_LFS_LINTFLAGS	_CS_LFS_LINTFLAGS +#  define _CS_LFS_LINTFLAGS	_CS_LFS_LINTFLAGS      _CS_LFS64_CFLAGS, -# define _CS_LFS64_CFLAGS	_CS_LFS64_CFLAGS +#  define _CS_LFS64_CFLAGS	_CS_LFS64_CFLAGS      _CS_LFS64_LDFLAGS, -# define _CS_LFS64_LDFLAGS	_CS_LFS64_LDFLAGS +#  define _CS_LFS64_LDFLAGS	_CS_LFS64_LDFLAGS      _CS_LFS64_LIBS, -# define _CS_LFS64_LIBS		_CS_LFS64_LIBS -    _CS_LFS64_LINTFLAGS -# define _CS_LFS64_LINTFLAGS	_CS_LFS64_LINTFLAGS -#endif +#  define _CS_LFS64_LIBS		_CS_LFS64_LIBS +    _CS_LFS64_LINTFLAGS, +#  define _CS_LFS64_LINTFLAGS	_CS_LFS64_LINTFLAGS +# endif -#ifdef __USE_UNIX98 -    , +# ifdef __USE_UNIX98      _CS_XBS5_ILP32_OFF32_CFLAGS = 1100, -# define _CS_XBS5_ILP32_OFF32_CFLAGS _CS_XBS5_ILP32_OFF32_CFLAGS +#  define _CS_XBS5_ILP32_OFF32_CFLAGS _CS_XBS5_ILP32_OFF32_CFLAGS      _CS_XBS5_ILP32_OFF32_LDFLAGS, -# define _CS_XBS5_ILP32_OFF32_LDFLAGS _CS_XBS5_ILP32_OFF32_LDFLAGS +#  define _CS_XBS5_ILP32_OFF32_LDFLAGS _CS_XBS5_ILP32_OFF32_LDFLAGS      _CS_XBS5_ILP32_OFF32_LIBS, -# define _CS_XBS5_ILP32_OFF32_LIBS _CS_XBS5_ILP32_OFF32_LIBS +#  define _CS_XBS5_ILP32_OFF32_LIBS _CS_XBS5_ILP32_OFF32_LIBS      _CS_XBS5_ILP32_OFF32_LINTFLAGS, -# define _CS_XBS5_ILP32_OFF32_LINTFLAGS _CS_XBS5_ILP32_OFF32_LINTFLAGS +#  define _CS_XBS5_ILP32_OFF32_LINTFLAGS _CS_XBS5_ILP32_OFF32_LINTFLAGS      _CS_XBS5_ILP32_OFFBIG_CFLAGS, -# define _CS_XBS5_ILP32_OFFBIG_CFLAGS _CS_XBS5_ILP32_OFFBIG_CFLAGS +#  define _CS_XBS5_ILP32_OFFBIG_CFLAGS _CS_XBS5_ILP32_OFFBIG_CFLAGS      _CS_XBS5_ILP32_OFFBIG_LDFLAGS, -# define _CS_XBS5_ILP32_OFFBIG_LDFLAGS _CS_XBS5_ILP32_OFFBIG_LDFLAGS +#  define _CS_XBS5_ILP32_OFFBIG_LDFLAGS _CS_XBS5_ILP32_OFFBIG_LDFLAGS      _CS_XBS5_ILP32_OFFBIG_LIBS, -# define _CS_XBS5_ILP32_OFFBIG_LIBS _CS_XBS5_ILP32_OFFBIG_LIBS +#  define _CS_XBS5_ILP32_OFFBIG_LIBS _CS_XBS5_ILP32_OFFBIG_LIBS      _CS_XBS5_ILP32_OFFBIG_LINTFLAGS, -# define _CS_XBS5_ILP32_OFFBIG_LINTFLAGS _CS_XBS5_ILP32_OFFBIG_LINTFLAGS +#  define _CS_XBS5_ILP32_OFFBIG_LINTFLAGS _CS_XBS5_ILP32_OFFBIG_LINTFLAGS      _CS_XBS5_LP64_OFF64_CFLAGS, -# define _CS_XBS5_LP64_OFF64_CFLAGS _CS_XBS5_LP64_OFF64_CFLAGS +#  define _CS_XBS5_LP64_OFF64_CFLAGS _CS_XBS5_LP64_OFF64_CFLAGS      _CS_XBS5_LP64_OFF64_LDFLAGS, -# define _CS_XBS5_LP64_OFF64_LDFLAGS _CS_XBS5_LP64_OFF64_LDFLAGS +#  define _CS_XBS5_LP64_OFF64_LDFLAGS _CS_XBS5_LP64_OFF64_LDFLAGS      _CS_XBS5_LP64_OFF64_LIBS, -# define _CS_XBS5_LP64_OFF64_LIBS _CS_XBS5_LP64_OFF64_LIBS +#  define _CS_XBS5_LP64_OFF64_LIBS _CS_XBS5_LP64_OFF64_LIBS      _CS_XBS5_LP64_OFF64_LINTFLAGS, -# define _CS_XBS5_LP64_OFF64_LINTFLAGS _CS_XBS5_LP64_OFF64_LINTFLAGS +#  define _CS_XBS5_LP64_OFF64_LINTFLAGS _CS_XBS5_LP64_OFF64_LINTFLAGS      _CS_XBS5_LPBIG_OFFBIG_CFLAGS, -# define _CS_XBS5_LPBIG_OFFBIG_CFLAGS _CS_XBS5_LPBIG_OFFBIG_CFLAGS +#  define _CS_XBS5_LPBIG_OFFBIG_CFLAGS _CS_XBS5_LPBIG_OFFBIG_CFLAGS      _CS_XBS5_LPBIG_OFFBIG_LDFLAGS, -# define _CS_XBS5_LPBIG_OFFBIG_LDFLAGS _CS_XBS5_LPBIG_OFFBIG_LDFLAGS +#  define _CS_XBS5_LPBIG_OFFBIG_LDFLAGS _CS_XBS5_LPBIG_OFFBIG_LDFLAGS      _CS_XBS5_LPBIG_OFFBIG_LIBS, -# define _CS_XBS5_LPBIG_OFFBIG_LIBS _CS_XBS5_LPBIG_OFFBIG_LIBS -    _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS -# define _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS -#endif +#  define _CS_XBS5_LPBIG_OFFBIG_LIBS _CS_XBS5_LPBIG_OFFBIG_LIBS +    _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS, +#  define _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS +# endif +# ifdef __USE_XOPEN2K +    _CS_POSIX_V6_ILP32_OFF32_CFLAGS, +#  define _CS_POSIX_V6_ILP32_OFF32_CFLAGS _CS_POSIX_V6_ILP32_OFF32_CFLAGS +    _CS_POSIX_V6_ILP32_OFF32_LDFLAGS, +#  define _CS_POSIX_V6_ILP32_OFF32_LDFLAGS _CS_POSIX_V6_ILP32_OFF32_LDFLAGS +    _CS_POSIX_V6_ILP32_OFF32_LIBS, +#  define _CS_POSIX_V6_ILP32_OFF32_LIBS _CS_POSIX_V6_ILP32_OFF32_LIBS +    _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS, +#  define _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS +    _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS, +#  define _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS +    _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS, +#  define _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS +    _CS_POSIX_V6_ILP32_OFFBIG_LIBS, +#  define _CS_POSIX_V6_ILP32_OFFBIG_LIBS _CS_POSIX_V6_ILP32_OFFBIG_LIBS +    _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS, +#  define _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS +    _CS_POSIX_V6_LP64_OFF64_CFLAGS, +#  define _CS_POSIX_V6_LP64_OFF64_CFLAGS _CS_POSIX_V6_LP64_OFF64_CFLAGS +    _CS_POSIX_V6_LP64_OFF64_LDFLAGS, +#  define _CS_POSIX_V6_LP64_OFF64_LDFLAGS _CS_POSIX_V6_LP64_OFF64_LDFLAGS +    _CS_POSIX_V6_LP64_OFF64_LIBS, +#  define _CS_POSIX_V6_LP64_OFF64_LIBS _CS_POSIX_V6_LP64_OFF64_LIBS +    _CS_POSIX_V6_LP64_OFF64_LINTFLAGS, +#  define _CS_POSIX_V6_LP64_OFF64_LINTFLAGS _CS_POSIX_V6_LP64_OFF64_LINTFLAGS +    _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS, +#  define _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS +    _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS, +#  define _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS +    _CS_POSIX_V6_LPBIG_OFFBIG_LIBS, +#  define _CS_POSIX_V6_LPBIG_OFFBIG_LIBS _CS_POSIX_V6_LPBIG_OFFBIG_LIBS +    _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS, +#  define _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS +# endif + +    _CS_V6_WIDTH_RESTRICTED_ENVS +# define _CS_V6_WIDTH_RESTRICTED_ENVS	_CS_V6_WIDTH_RESTRICTED_ENVS    };  #endif diff --git a/libc/sysdeps/linux/sh/bits/dirent.h b/libc/sysdeps/linux/sh/bits/dirent.h index 472ae1a04..82d8663f2 100644 --- a/libc/sysdeps/linux/sh/bits/dirent.h +++ b/libc/sysdeps/linux/sh/bits/dirent.h @@ -2,29 +2,19 @@     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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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.  */ - -/* - * June 25, 2001 - * - * Removed d_type support for dirent and undefined _DIRENT_HAVE_D_TYPE; - * i.e. match the kernel structs and avoid any translation for now. - * Note: glibc fakes d_type for the dirent case. - * Note: dirent64 still has the d_type field. - */ +   Lesser General Public License for more details. +   You should have received a copy of the GNU Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #ifndef _DIRENT_H  # error "Never use <bits/dirent.h> directly; include <dirent.h> instead." @@ -62,4 +52,4 @@ struct dirent64  #undef  _DIRENT_HAVE_D_NAMLEN  #define _DIRENT_HAVE_D_RECLEN  #define _DIRENT_HAVE_D_OFF -#undef  _DIRENT_HAVE_D_TYPE +#undef _DIRENT_HAVE_D_TYPE diff --git a/libc/sysdeps/linux/sh/bits/dlfcn.h b/libc/sysdeps/linux/sh/bits/dlfcn.h index f5983d706..2525fa3d9 100644 --- a/libc/sysdeps/linux/sh/bits/dlfcn.h +++ b/libc/sysdeps/linux/sh/bits/dlfcn.h @@ -1,37 +1,59 @@  /* System dependent definitions for run-time dynamic loading. -   Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc. +   Copyright (C) 1996, 1997, 1998, 1999, 2000 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #ifndef _DLFCN_H  # error "Never use <bits/dlfcn.h> directly; include <dlfcn.h> instead."  #endif  /* The MODE argument to `dlopen' contains one of the following: */ -#define RTLD_LAZY	0x001	/* Lazy function call binding.  */ -#define RTLD_NOW	0x002	/* Immediate function call binding.  */ -#define	RTLD_BINDING_MASK 0x3	/* Mask of binding time value.  */ +#define RTLD_LAZY	0x00001	/* Lazy function call binding.  */ +#define RTLD_NOW	0x00002	/* Immediate function call binding.  */ +#define	RTLD_BINDING_MASK   0x3	/* Mask of binding time value.  */ +#define RTLD_NOLOAD	0x00004	/* Do not load the object.  */  /* If the following bit is set in the MODE argument to `dlopen',     the symbols of the loaded object and its dependencies are made     visible as if the object were linked directly into the program.  */ -#define RTLD_GLOBAL	0x100 +#define RTLD_GLOBAL	0x00100  /* Unix98 demands the following flag which is the inverse to RTLD_GLOBAL.     The implementation does this by default and so we can define the     value to zero.  */  #define RTLD_LOCAL	0 + +/* Do not delete object when closed.  */ +#define RTLD_NODELETE	0x01000 + +#ifdef __USE_GNU +/* To support profiling of shared objects it is a good idea to call +   the function found using `dlsym' using the following macro since +   these calls do not use the PLT.  But this would mean the dynamic +   loader has no chance to find out when the function is called.  The +   macro applies the necessary magic so that profiling is possible. +   Rewrite +	foo = (*fctp) (arg1, arg2); +   into +        foo = DL_CALL_FCT (fctp, (arg1, arg2)); +*/ +# define DL_CALL_FCT(fctp, args) \ +  (_dl_mcount_wrapper_check (fctp), (*(fctp)) args) + +/* This function calls the profiling functions.  */ +extern void _dl_mcount_wrapper_check (void *__selfpc) __THROW; +#endif diff --git a/libc/sysdeps/linux/sh/bits/elfclass.h b/libc/sysdeps/linux/sh/bits/elfclass.h index bb4dd545c..180227d9e 100644 --- a/libc/sysdeps/linux/sh/bits/elfclass.h +++ b/libc/sysdeps/linux/sh/bits/elfclass.h @@ -9,3 +9,6 @@  #include <bits/wordsize.h>  #define __ELF_NATIVE_CLASS __WORDSIZE + +/* The entries in the .hash table always have a size of 32 bits.  */ +typedef uint32_t Elf_Symndx; diff --git a/libc/sysdeps/linux/sh/bits/environments.h b/libc/sysdeps/linux/sh/bits/environments.h index f3af20655..c3829927b 100644 --- a/libc/sysdeps/linux/sh/bits/environments.h +++ b/libc/sysdeps/linux/sh/bits/environments.h @@ -1,20 +1,20 @@ -/* Copyright (C) 1999 Free Software Foundation, Inc. +/* Copyright (C) 1999, 2001 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #ifndef _UNISTD_H  # error "Never include this file directly.  Use <unistd.h> instead" @@ -27,32 +27,48 @@     `-1' means it is never supported.  Undefined means it cannot be     statically decided. -   _XBS5_ILP32_OFF32	32bit int, long, pointers, and off_t type -   _XBS5_ILP32_OFFBIG	32bit int, long, and pointers and larger off_t type +   _POSIX_V6_ILP32_OFF32   32bit int, long, pointers, and off_t type +   _POSIX_V6_ILP32_OFFBIG  32bit int, long, and pointers and larger off_t type -   _XBS5_LP64_OFF32	64bit long and pointers and 32bit off_t type -   _XBS5_LPBIG_OFFBIG	64bit long and pointers and large off_t type +   _POSIX_V6_LP64_OFF32	   64bit long and pointers and 32bit off_t type +   _POSIX_V6_LPBIG_OFFBIG  64bit long and pointers and large off_t type + +   The macros _XBS5_ILP32_OFF32, _XBS5_ILP32_OFFBIG, _XBS5_LP64_OFF32, and +   _XBS5_LPBIG_OFFBIG were used in previous versions of the Unix standard +   and are available only for compatibility.  */  #if __WORDSIZE == 64  /* We can never provide environments with 32-bit wide pointers.  */ +# define _POSIX_V6_ILP32_OFF32	-1 +# define _POSIX_V6_ILP32_OFFBIG	-1  # define _XBS5_ILP32_OFF32	-1  # define _XBS5_ILP32_OFFBIG	-1 +/* We also have no use (for now) for an environment with bigger pointers +   and offsets.  */ +# define _POSIX_V6_LPBIG_OFFBIG	-1 +# define _XBS5_LPBIG_OFFBIG	-1  /* By default we have 64-bit wide `long int', pointers and `off_t'.  */ -# define _XBS5_LP64_OFF32	1 -# define _XBS5_LPBIG_OFFBIG	1 +# define _POSIX_V6_LP64_OFF64	1 +# define _XBS5_LP64_OFF64	1  #else /* __WORDSIZE == 32 */ -/* By default we have 32-bit wide `int', `long int', pointers and `off_t'.  */ +/* By default we have 32-bit wide `int', `long int', pointers and `off_t' +   and all platforms support LFS.  */ +# define _POSIX_V6_ILP32_OFF32	1 +# define _POSIX_V6_ILP32_OFFBIG	1  # define _XBS5_ILP32_OFF32	1 +# define _XBS5_ILP32_OFFBIG	1  /* We optionally provide an environment with the above size but an 64-bit     side `off_t'.  Therefore we don't define _XBS5_ILP32_OFFBIG.  */  /* We can never provide environments with 64-bit wide pointers.  */ +# define _POSIX_V6_LP64_OFF64	-1 +# define _POSIX_V6_LPBIG_OFFBIG	-1  # define _XBS5_LP64_OFF64	-1  # define _XBS5_LPBIG_OFFBIG	-1 diff --git a/libc/sysdeps/linux/sh/bits/errno.h b/libc/sysdeps/linux/sh/bits/errno.h index 968e178ea..ac59d4c9d 100644 --- a/libc/sysdeps/linux/sh/bits/errno.h +++ b/libc/sysdeps/linux/sh/bits/errno.h @@ -1,21 +1,21 @@  /* Error constants.  Linux specific version. -   Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. +   Copyright (C) 1996, 1997, 1998, 1999 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #ifdef _ERRNO_H @@ -32,14 +32,11 @@  # define ECANCELED	125  # ifndef __ASSEMBLER__ - -__BEGIN_DECLS -  /* We now need a declaration of the `errno' variable.  */  extern int errno;  /* Function to get address of global `errno' variable.  */ -extern int *__errno_location __P ((void)) __attribute__ ((__const__)); +extern int *__errno_location (void) __THROW __attribute__ ((__const__));  #  if defined _LIBC  /* We wouldn't need a special macro anymore but it is history.  */ @@ -50,16 +47,13 @@ extern int *__errno_location __P ((void)) __attribute__ ((__const__));  /* When using threads, errno is a per-thread value.  */  #   define errno (*__errno_location ())  #  endif - -__END_DECLS -  # endif /* !__ASSEMBLER__ */  #endif /* _ERRNO_H */  #if !defined _ERRNO_H && defined __need_Emath  /* This is ugly but the kernel header is not clean enough.  We must -   define only the values EDOM and ERANGE in case __need_Emath is -   defined.  The value is the same for all Linux ports.  */ +   define only the values EDOM, EILSEQ and ERANGE in case __need_Emath is +   defined.  */  # define EDOM	33	/* Math argument out of domain of function.  */  # define EILSEQ	84	/* Illegal byte sequence.  */  # define ERANGE	34	/* Math result not representable.  */ diff --git a/libc/sysdeps/linux/sh/bits/fcntl.h b/libc/sysdeps/linux/sh/bits/fcntl.h index 0c94c6b9a..0889a7054 100644 --- a/libc/sysdeps/linux/sh/bits/fcntl.h +++ b/libc/sysdeps/linux/sh/bits/fcntl.h @@ -1,21 +1,21 @@  /* O_*, F_*, FD_* bit values for Linux. -   Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. +   Copyright (C) 1995, 1996, 1997, 1998, 2000 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #ifndef	_FCNTL_H  # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead." @@ -26,29 +26,25 @@  /* open/fcntl - O_SYNC is only implemented on blocks devices and on files     located on an ext2 file system */ -#define O_ACCMODE	  0003 -#define O_RDONLY	    00 -#define O_WRONLY	    01 -#define O_RDWR		    02 -#define O_CREAT		  0100	/* not fcntl */ -#define O_EXCL		  0200	/* not fcntl */ -#define O_NOCTTY	  0400	/* not fcntl */ -#define O_TRUNC		 01000	/* not fcntl */ -#define O_APPEND	 02000 -#define O_NONBLOCK	 04000 +#define O_ACCMODE	   0003 +#define O_RDONLY	     00 +#define O_WRONLY	     01 +#define O_RDWR		     02 +#define O_CREAT		   0100	/* not fcntl */ +#define O_EXCL		   0200	/* not fcntl */ +#define O_NOCTTY	   0400	/* not fcntl */ +#define O_TRUNC		  01000	/* not fcntl */ +#define O_APPEND	  02000 +#define O_NONBLOCK	  04000  #define O_NDELAY	O_NONBLOCK -#define O_SYNC		010000 -#define O_FSYNC		O_SYNC -#define O_ASYNC		020000 +#define O_SYNC		 010000 +#define O_FSYNC		 O_SYNC +#define O_ASYNC		 020000  #ifdef __USE_GNU -# define O_DIRECTORY	040000	/* Must be a directory.  */ -# define O_NOFOLLOW	0100000	/* Do not follow links.  */ -#endif - -/* XXX missing */ -#ifdef __USE_LARGEFILE64 -# define O_LARGEFILE	0 +# define O_DIRECT	 040000	/* Direct disk access.  */ +# define O_DIRECTORY	0200000	/* Must be a directory.  */ +# define O_NOFOLLOW	0400000	/* Do not follow links.  */  #endif  /* For now Linux has synchronisity options for data and read operations. @@ -59,22 +55,30 @@  # define O_RSYNC	O_SYNC	/* Synchronize read operations.  */  #endif +#ifdef __USE_LARGEFILE64 +# define O_LARGEFILE	0100000 +#endif +  /* Values for the second argument to `fcntl'.  */  #define F_DUPFD		0	/* Duplicate file descriptor.  */  #define F_GETFD		1	/* Get file descriptor flags.  */  #define F_SETFD		2	/* Set file descriptor flags.  */  #define F_GETFL		3	/* Get file status flags.  */  #define F_SETFL		4	/* Set file status flags.  */ -#define F_GETLK		5	/* Get record locking info.  */ -#define F_SETLK		6	/* Set record locking info (non-blocking).  */ -#define F_SETLKW	7	/* Set record locking info (blocking).  */ - -/* XXX missing */ -#define F_GETLK64	5	/* Get record locking info.  */ -#define F_SETLK64	6	/* Set record locking info (non-blocking).  */ -#define F_SETLKW64	7	/* Set record locking info (blocking).  */ +#ifndef __USE_FILE_OFFSET64 +# define F_GETLK	5	/* Get record locking info.  */ +# define F_SETLK	6	/* Set record locking info (non-blocking).  */ +# define F_SETLKW	7	/* Set record locking info (blocking).  */ +#else +# define F_GETLK	F_GETLK64  /* Get record locking info.  */ +# define F_SETLK	F_SETLK64  /* Set record locking info (non-blocking).*/ +# define F_SETLKW	F_SETLKW64 /* Set record locking info (blocking).  */ +#endif +#define F_GETLK64	12	/* Get record locking info.  */ +#define F_SETLK64	13	/* Set record locking info (non-blocking).  */ +#define F_SETLKW64	14	/* Set record locking info (blocking).  */ -#ifdef __USE_BSD +#if defined __USE_BSD || defined __USE_XOPEN2K  # define F_SETOWN	8	/* Get owner of socket (receiver of SIGIO).  */  # define F_GETOWN	9	/* Set owner of socket (receiver of SIGIO).  */  #endif @@ -92,12 +96,12 @@  #define F_WRLCK		1	/* Write lock.  */  #define F_UNLCK		2	/* Remove lock.  */ -/* for old implementation of bsd flock () */ +/* For old implementation of bsd flock().  */  #define F_EXLCK		4	/* or 3 */  #define F_SHLCK		8	/* or 4 */  #ifdef __USE_BSD -/* Operations for bsd flock(), also used by the kernel implementation */ +/* Operations for bsd flock(), also used by the kernel implementation.  */  # define LOCK_SH	1	/* shared lock */  # define LOCK_EX	2	/* exclusive lock */  # define LOCK_NB	4	/* or'd with one of the above to prevent @@ -139,3 +143,13 @@ struct flock64  # define FNONBLOCK	O_NONBLOCK  # define FNDELAY	O_NDELAY  #endif /* Use BSD.  */ + +/* Advise to `posix_fadvise'.  */ +#ifdef __USE_XOPEN2K +# define POSIX_FADV_NORMAL	0 /* No further special treatment.  */ +# define POSIX_FADV_RANDOM	1 /* Expect random page references.  */ +# define POSIX_FADV_SEQUENTIAL	2 /* Expect sequential page references.  */ +# define POSIX_FADV_WILLNEED	3 /* Will need these pages.  */ +# define POSIX_FADV_DONTNEED	4 /* Don't need these pages.  */ +# define POSIX_FADV_NOREUSE	5 /* Data will be accessed once.  */ +#endif diff --git a/libc/sysdeps/linux/sh/bits/fenv.h b/libc/sysdeps/linux/sh/bits/fenv.h index b192d9433..cbbad92e1 100644 --- a/libc/sysdeps/linux/sh/bits/fenv.h +++ b/libc/sysdeps/linux/sh/bits/fenv.h @@ -1,61 +1,72 @@ -/* Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1999, 2000 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #ifndef _FENV_H  # error "Never use <bits/fenv.h> directly; include <fenv.h> instead."  #endif -/* Here should be the exception be defined: -    FE_INVALID -    FE_DIVBYZERO -    FE_OVERFLOW -    FE_UNDERFLOW -    FE_INEXACT -   We define no macro which signals no exception is supported.  */ - -#define FE_ALL_EXCEPT 0 +/* Define bits representing the exception.  We use the bit positions +   of the appropriate bits in the FPU control word.  */ +enum +  { +    FE_INEXACT = 0x04, +#define FE_INEXACT	FE_INEXACT +    FE_UNDERFLOW = 0x08, +#define FE_UNDERFLOW	FE_UNDERFLOW +    FE_OVERFLOW = 0x10, +#define FE_OVERFLOW	FE_OVERFLOW +    FE_DIVBYZERO = 0x20, +#define FE_DIVBYZERO	FE_DIVBYZERO +    FE_INVALID = 0x40, +#define FE_INVALID	FE_INVALID +  }; +#define FE_ALL_EXCEPT \ +	(FE_INEXACT | FE_DIVBYZERO | FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID) -/* Here should the rounding modes be defined: -    FE_TONEAREST -    FE_DOWNWARD -    FE_UPWARD -    FE_TOWARDZERO -   We define no macro which signals no rounding mode is selectable.  */ +/* The SH FPU supports all of the four defined rounding modes.  We +   use again the bit positions in the FPU control word as the values +   for the appropriate macros.  */ +enum +  { +    FE_TONEAREST = 0x0, +#define FE_TONEAREST	FE_TONEAREST +    FE_TOWARDZERO = 0x1, +#define FE_TOWARDZERO	FE_TOWARDZERO +    FE_UPWARD = 0x2, +#define FE_UPWARD	FE_UPWARD +    FE_DOWNWARD = 0x3 +#define FE_DOWNWARD	FE_DOWNWARD +  }; -/* Type representing exception flags. -   XXX Probably we should also include the signal handler here.  */ -typedef struct -  { -    unsigned int __flags; -  } -fexcept_t; +/* Type representing exception flags.  */ +typedef unsigned short int fexcept_t; -/* Type representing floating-point environment.  */ +/* Type representing floating-point environment.  This function corresponds +   to the layout of the block written by the `fstenv'.  */  typedef struct    { -    fexcept_t __excepts; -    /* XXX I don't know what else we should save.  */ +    unsigned int __fpscr;    }  fenv_t;  /* If the default argument is used we use this value.  */ -#define FE_DFL_ENV	((fenv_t *) -1l) +#define FE_DFL_ENV	((fenv_t *) -1) diff --git a/libc/sysdeps/linux/sh/bits/fenvinline.h b/libc/sysdeps/linux/sh/bits/fenvinline.h new file mode 100644 index 000000000..42f77b561 --- /dev/null +++ b/libc/sysdeps/linux/sh/bits/fenvinline.h @@ -0,0 +1,8 @@ +/* This file provides inline versions of floating-pint environment +   handling functions.  If there were any.  */ + +#ifndef __NO_MATH_INLINES + +/* Here is where the code would go.  */ + +#endif diff --git a/libc/sysdeps/linux/sh/bits/huge_val.h b/libc/sysdeps/linux/sh/bits/huge_val.h index adbbbec8c..78d316dde 100644 --- a/libc/sysdeps/linux/sh/bits/huge_val.h +++ b/libc/sysdeps/linux/sh/bits/huge_val.h @@ -1,23 +1,24 @@  /* `HUGE_VAL' constants for IEEE 754 machines (where it is infinity).     Used by <stdlib.h> and <math.h> functions for overflow.     SH version. -   Copyright (C) 1992, 95, 96, 97, 98, 99, 2000 Free Software Foundation, Inc. +   Copyright (C) 1992, 1995, 1996, 1997, 1998, 1999, 2000 +   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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #ifndef _MATH_H  # error "Never use <bits/huge_val.h> directly; include <math.h> instead." @@ -29,11 +30,19 @@  #ifdef	__GNUC__ -# define HUGE_VAL \ +# if __GNUC_PREREQ(2,95) + +#  define HUGE_VAL (0x1.0p2047) + +# else + +#  define HUGE_VAL \    (__extension__							      \     ((union { unsigned __l __attribute__((__mode__(__DI__))); double __d; })   \      { __l: 0x000000007ff00000ULL }).__d) +# endif +  #else /* not GCC */  # include <endian.h> @@ -53,17 +62,25 @@ static __huge_val_t __huge_val = { __HUGE_VAL_bytes };  #endif	/* GCC.  */ -/* ISO C 9X extensions: (float) HUGE_VALF and (long double) HUGE_VALL.  */ +/* ISO C99 extensions: (float) HUGE_VALF and (long double) HUGE_VALL.  */ -#ifdef __USE_ISOC9X +#ifdef __USE_ISOC99  # ifdef __GNUC__ -#  define HUGE_VALF \ +#  if __GNUC_PREREQ(2,95) + +#   define HUGE_VALF (0x1.0p255f) + +#  else + +#   define HUGE_VALF \    (__extension__							      \     ((union { unsigned __l __attribute__((__mode__(__SI__))); float __d; })    \      { __l: 0x7f800000UL }).__d) +#  endif +  # else /* not GCC */  typedef union { unsigned char __c[4]; float __f; } __huge_valf_t; @@ -85,4 +102,4 @@ static __huge_valf_t __huge_valf = { __HUGE_VALF_bytes };     same as `double'.  */  # define HUGE_VALL HUGE_VAL -#endif /* __USE_ISOC9X.  */ +#endif /* __USE_ISOC99.  */ diff --git a/libc/sysdeps/linux/sh/bits/in.h b/libc/sysdeps/linux/sh/bits/in.h index 38e2a2e00..e6cf57574 100644 --- a/libc/sysdeps/linux/sh/bits/in.h +++ b/libc/sysdeps/linux/sh/bits/in.h @@ -1,20 +1,20 @@ -/* Copyright (C) 1991,92,93,94,95,96,97,98,99 Free Software Foundation, Inc. +/* Copyright (C) 1991-1999, 2000 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  /* Linux version.  */ @@ -99,7 +99,7 @@ struct in_pktinfo  #define IPV6_PKTINFO		2  #define IPV6_HOPOPTS		3  #define IPV6_DSTOPTS		4 -#define IPV6_RXSRCRT		5 +#define IPV6_RTHDR		5  #define IPV6_PKTOPTIONS		6  #define IPV6_CHECKSUM		7  #define IPV6_HOPLIMIT		8 @@ -109,14 +109,21 @@ struct in_pktinfo  #define IPV6_MULTICAST_IF	17  #define IPV6_MULTICAST_HOPS	18  #define IPV6_MULTICAST_LOOP	19 -#define IPV6_ADD_MEMBERSHIP	20 -#define IPV6_DROP_MEMBERSHIP	21 +#define IPV6_JOIN_GROUP		20 +#define IPV6_LEAVE_GROUP	21  #define IPV6_ROUTER_ALERT	22 +#define IPV6_MTU_DISCOVER	23 +#define IPV6_MTU		24 +#define IPV6_RECVERR		25  #define SCM_SRCRT		IPV6_RXSRCRT -#define IPV6_RXHOPOPTS		IPV6_HOPOPTS	/* obsolete name */ -#define IPV6_RXDSTOPTS		IPV6_DSTOPTS	/* obsolete name */ +/* Obsolete synonyms for the above.  */ +#define IPV6_RXHOPOPTS		IPV6_HOPOPTS +#define IPV6_RXDSTOPTS		IPV6_DSTOPTS +#define IPV6_ADD_MEMBERSHIP	IPV6_JOIN_GROUP +#define IPV6_DROP_MEMBERSHIP	IPV6_LEAVE_GROUP +  /* IPV6_MTU_DISCOVER values.  */  #define IPV6_PMTUDISC_DONT	0	/* Never send DF frames.  */ @@ -126,3 +133,9 @@ struct in_pktinfo  /* Socket level values for IPv6.  */  #define SOL_IPV6        41  #define SOL_ICMPV6      58 + +/* Routing header options for IPv6.  */ +#define IPV6_RTHDR_LOOSE	0	/* Hop doesn't need to be neighbour. */ +#define IPV6_RTHDR_STRICT	1	/* Hop must be a neighbour.  */ + +#define IPV6_RTHDR_TYPE_0	0	/* IPv6 Routing header type 0.  */ diff --git a/libc/sysdeps/linux/sh/bits/initspin.h b/libc/sysdeps/linux/sh/bits/initspin.h new file mode 100644 index 000000000..af19d44e6 --- /dev/null +++ b/libc/sysdeps/linux/sh/bits/initspin.h @@ -0,0 +1,28 @@ +/* Generic definitions for spinlock initializers. +   Copyright (C) 2000, 2001 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.  */ + +/* Initial value of a spinlock.  Most platforms should use zero, +   unless they only implement a "test and clear" operation instead of +   the usual "test and set". */ +#define __LT_SPINLOCK_INIT 0 + +/* Macros for lock initializers, using the above definition. */ +#define __LOCK_INITIALIZER { 0, __LT_SPINLOCK_INIT } +#define __ALT_LOCK_INITIALIZER { 0, __LT_SPINLOCK_INIT } +#define __ATOMIC_INITIALIZER { 0, __LT_SPINLOCK_INIT } diff --git a/libc/sysdeps/linux/sh/bits/ioctl-types.h b/libc/sysdeps/linux/sh/bits/ioctl-types.h index 59c79df81..e856a04b4 100644 --- a/libc/sysdeps/linux/sh/bits/ioctl-types.h +++ b/libc/sysdeps/linux/sh/bits/ioctl-types.h @@ -1,21 +1,21 @@  /* Structure types for pre-termios terminal ioctls.  Linux version. -   Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc. +   Copyright (C) 1996, 1997, 1999, 2001 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #ifndef _SYS_IOCTL_H  # error "Never use <bits/ioctl-types.h> directly; include <sys/ioctl.h> instead." @@ -75,3 +75,4 @@ struct termio  #define N_SMSBLOCK	12	/* SMS block mode  */  #define N_HDLC		13	/* synchronous HDLC  */  #define N_SYNC_PPP	14	/* synchronous PPP  */ +#define	N_HCI		15	/* Bluetooth HCI UART  */ diff --git a/libc/sysdeps/linux/sh/bits/ioctls.h b/libc/sysdeps/linux/sh/bits/ioctls.h index c103645f6..b49ca2076 100644 --- a/libc/sysdeps/linux/sh/bits/ioctls.h +++ b/libc/sysdeps/linux/sh/bits/ioctls.h @@ -2,19 +2,19 @@     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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #ifndef _SYS_IOCTL_H  # error "Never use <bits/ioctls.h> directly; include <sys/ioctl.h> instead." diff --git a/libc/sysdeps/linux/sh/bits/ipc.h b/libc/sysdeps/linux/sh/bits/ipc.h index c4e37358e..f1a043fe5 100644 --- a/libc/sysdeps/linux/sh/bits/ipc.h +++ b/libc/sysdeps/linux/sh/bits/ipc.h @@ -1,26 +1,26 @@ -/* Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1995-1999, 2000 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #ifndef _SYS_IPC_H  # error "Never use <bits/ipc.h> directly; include <sys/ipc.h> instead."  #endif -#include <sys/types.h> +#include <bits/types.h>  /* Mode bits for `msgget', `semget', and `shmget'.  */  #define IPC_CREAT	01000		/* Create key if key does not exist. */ @@ -31,7 +31,9 @@  #define IPC_RMID	0		/* Remove identifier.  */  #define IPC_SET		1		/* Set `ipc_perm' options.  */  #define IPC_STAT	2		/* Get `ipc_perm' options.  */ -#define IPC_INFO	3		/* See ipcs.  */ +#ifdef __USE_GNU +# define IPC_INFO	3		/* See ipcs.  */ +#endif  /* Special key values.  */  #define IPC_PRIVATE	((__key_t) 0)	/* Private key.  */ @@ -41,10 +43,14 @@  struct ipc_perm    {      __key_t __key;			/* Key.  */ -    unsigned short int uid;		/* Owner's user ID.  */ -    unsigned short int gid;		/* Owner's group ID.  */ -    unsigned short int cuid;		/* Creator's user ID.  */ -    unsigned short int cgid;		/* Creator's group ID.  */ +    __uid_t uid;			/* Owner's user ID.  */ +    __gid_t gid;			/* Owner's group ID.  */ +    __uid_t cuid;			/* Creator's user ID.  */ +    __gid_t cgid;			/* Creator's group ID.  */      unsigned short int mode;		/* Read/write permission.  */ +    unsigned short int __pad1;      unsigned short int __seq;		/* Sequence number.  */ +    unsigned short int __pad2; +    unsigned long int __unused1; +    unsigned long int __unused2;    }; diff --git a/libc/sysdeps/linux/sh/bits/libc-lock.h b/libc/sysdeps/linux/sh/bits/libc-lock.h index a14cea1aa..dbd9cc14f 100644 --- a/libc/sysdeps/linux/sh/bits/libc-lock.h +++ b/libc/sysdeps/linux/sh/bits/libc-lock.h @@ -1,5 +1,5 @@  /* libc-internal interface for mutex locks.  LinuxThreads version. -   Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc. +   Copyright (C) 1996,1997,1998,1999,2000,2001 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 @@ -25,8 +25,10 @@  /* Mutex type.  */  #ifdef _LIBC  typedef pthread_mutex_t __libc_lock_t; +typedef pthread_rwlock_t __libc_rwlock_t;  #else  typedef struct __libc_lock_opaque__ __libc_lock_t; +typedef struct __libc_rwlock_opaque__ __libc_rwlock_t;  #endif  /* Type for key to thread-specific data.  */ @@ -41,15 +43,28 @@ typedef pthread_key_t __libc_key_t;     of libc.  */  #define __libc_lock_define(CLASS,NAME) \    CLASS __libc_lock_t NAME; +#define __libc_rwlock_define(CLASS,NAME) \ +  CLASS __libc_rwlock_t NAME;  /* Define an initialized lock variable NAME with storage class CLASS. -   For the C library we take a deeper look at the initializer.  For this -   implementation all fields are initialized to zero.  Therefore we -   don't initialize the variable which allows putting it into the BSS -   section.  */ -#define __libc_lock_define_initialized(CLASS,NAME) \ +   For the C library we take a deeper look at the initializer.  For +   this implementation all fields are initialized to zero.  Therefore +   we don't initialize the variable which allows putting it into the +   BSS section.  (Except on PA-RISC and other odd architectures, where +   initialized locks must be set to one due to the lack of normal +   atomic operations.) */ + +#if __LT_SPINLOCK_INIT == 0 +#  define __libc_lock_define_initialized(CLASS,NAME) \    CLASS __libc_lock_t NAME; +#else +#  define __libc_lock_define_initialized(CLASS,NAME) \ +  CLASS __libc_lock_t NAME = PTHREAD_MUTEX_INITIALIZER; +#endif + +#define __libc_rwlock_define_initialized(CLASS,NAME) \ +  CLASS __libc_rwlock_t NAME = PTHREAD_RWLOCK_INITIALIZER;  /* Define an initialized recursive lock variable NAME with storage     class CLASS.  */ @@ -60,6 +75,8 @@ typedef pthread_key_t __libc_key_t;     state.  */  #define __libc_lock_init(NAME) \    (__pthread_mutex_init != NULL ? __pthread_mutex_init (&(NAME), NULL) : 0); +#define __libc_rwlock_init(NAME) \ +  (__pthread_rwlock_init != NULL ? __pthread_rwlock_init (&(NAME), NULL) : 0);  /* Same as last but this time we initialize a recursive mutex.  */  #define __libc_lock_init_recursive(NAME) \ @@ -79,6 +96,8 @@ typedef pthread_key_t __libc_key_t;     called on a lock variable before the containing storage is reused.  */  #define __libc_lock_fini(NAME) \    (__pthread_mutex_destroy != NULL ? __pthread_mutex_destroy (&(NAME)) : 0); +#define __libc_rwlock_fini(NAME) \ +  (__pthread_rwlock_destroy != NULL ? __pthread_rwlock_destroy (&(NAME)) : 0);  /* Finalize recursive named lock.  */  #define __libc_lock_fini_recursive(NAME) __libc_lock_fini (NAME) @@ -86,6 +105,10 @@ typedef pthread_key_t __libc_key_t;  /* Lock the named lock variable.  */  #define __libc_lock_lock(NAME) \    (__pthread_mutex_lock != NULL ? __pthread_mutex_lock (&(NAME)) : 0); +#define __libc_rwlock_rdlock(NAME) \ +  (__pthread_rwlock_rdlock != NULL ? __pthread_rwlock_rdlock (&(NAME)) : 0); +#define __libc_rwlock_wrlock(NAME) \ +  (__pthread_rwlock_wrlock != NULL ? __pthread_rwlock_wrlock (&(NAME)) : 0);  /* Lock the recursive named lock variable.  */  #define __libc_lock_lock_recursive(NAME) __libc_lock_lock (NAME) @@ -93,6 +116,12 @@ typedef pthread_key_t __libc_key_t;  /* Try to lock the named lock variable.  */  #define __libc_lock_trylock(NAME) \    (__pthread_mutex_trylock != NULL ? __pthread_mutex_trylock (&(NAME)) : 0) +#define __libc_rwlock_tryrdlock(NAME) \ +  (__pthread_rwlock_tryrdlock != NULL \ +   ? __pthread_rwlock_tryrdlock (&(NAME)) : 0) +#define __libc_rwlock_trywrlock(NAME) \ +  (__pthread_rwlock_trywrlock != NULL \ +   ? __pthread_rwlock_trywrlock (&(NAME)) : 0)  /* Try to lock the recursive named lock variable.  */  #define __libc_lock_trylock_recursive(NAME) __libc_lock_trylock (NAME) @@ -100,6 +129,8 @@ typedef pthread_key_t __libc_key_t;  /* Unlock the named lock variable.  */  #define __libc_lock_unlock(NAME) \    (__pthread_mutex_unlock != NULL ? __pthread_mutex_unlock (&(NAME)) : 0); +#define __libc_rwlock_unlock(NAME) \ +  (__pthread_rwlock_unlock != NULL ? __pthread_rwlock_unlock (&(NAME)) : 0);  /* Unlock the recursive named lock variable.  */  #define __libc_lock_unlock_recursive(NAME) __libc_lock_unlock (NAME) @@ -121,9 +152,9 @@ typedef pthread_key_t __libc_key_t;    do {									      \      if (__pthread_once != NULL)						      \        __pthread_once (&(ONCE_CONTROL), (INIT_FUNCTION));		      \ -    else if ((ONCE_CONTROL) == 0) {					      \ +    else if ((ONCE_CONTROL) == PTHREAD_ONCE_INIT) {			      \        INIT_FUNCTION ();							      \ -      (ONCE_CONTROL) = 1;						      \ +      (ONCE_CONTROL) = !PTHREAD_ONCE_INIT;				      \      }									      \    } while (0) @@ -166,27 +197,93 @@ typedef pthread_key_t __libc_key_t;  #define __libc_atfork(PREPARE, PARENT, CHILD) \    (__pthread_atfork != NULL ? __pthread_atfork (PREPARE, PARENT, CHILD) : 0) +/* Functions that are used by this file and are internal to the GNU C +   library.  */ + +extern int __pthread_mutex_init (pthread_mutex_t *__mutex, +				 __const pthread_mutexattr_t *__mutex_attr); + +extern int __pthread_mutex_destroy (pthread_mutex_t *__mutex); + +extern int __pthread_mutex_trylock (pthread_mutex_t *__mutex); + +extern int __pthread_mutex_lock (pthread_mutex_t *__mutex); + +extern int __pthread_mutex_unlock (pthread_mutex_t *__mutex); + +extern int __pthread_mutexattr_init (pthread_mutexattr_t *__attr); + +extern int __pthread_mutexattr_destroy (pthread_mutexattr_t *__attr); + +extern int __pthread_mutexattr_settype (pthread_mutexattr_t *__attr, +					int __kind); + +#ifdef __USE_UNIX98 +extern int __pthread_rwlock_init (pthread_rwlock_t *__rwlock, +				  __const pthread_rwlockattr_t *__attr); + +extern int __pthread_rwlock_destroy (pthread_rwlock_t *__rwlock); + +extern int __pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock); + +extern int __pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock); + +extern int __pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock); + +extern int __pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock); + +extern int __pthread_rwlock_unlock (pthread_rwlock_t *__rwlock); +#endif + +extern int __pthread_key_create (pthread_key_t *__key, +				 void (*__destr_function) (void *)); + +extern int __pthread_setspecific (pthread_key_t __key, +				  __const void *__pointer); + +extern void *__pthread_getspecific (pthread_key_t __key); + +extern int __pthread_once (pthread_once_t *__once_control, +			   void (*__init_routine) (void)); + +extern int __pthread_atfork (void (*__prepare) (void), +			     void (*__parent) (void), +			     void (*__child) (void)); + +  /* Make the pthread functions weak so that we can elide them from     single-threaded processes.  */  #ifndef __NO_WEAK_PTHREAD_ALIASES  # ifdef weak_extern -weak_extern (__pthread_mutex_init) -weak_extern (__pthread_mutex_destroy) -weak_extern (__pthread_mutex_lock) -weak_extern (__pthread_mutex_trylock) -weak_extern (__pthread_mutex_unlock) -weak_extern (__pthread_mutexattr_init) -weak_extern (__pthread_mutexattr_destroy) -weak_extern (__pthread_mutexattr_settype) -weak_extern (__pthread_key_create) -weak_extern (__pthread_setspecific) -weak_extern (__pthread_getspecific) -weak_extern (__pthread_once) +#  if _LIBC +#   include <bp-sym.h> +#  else +#   define BP_SYM (sym) sym +#  endif +weak_extern (BP_SYM (__pthread_mutex_init)) +weak_extern (BP_SYM (__pthread_mutex_destroy)) +weak_extern (BP_SYM (__pthread_mutex_lock)) +weak_extern (BP_SYM (__pthread_mutex_trylock)) +weak_extern (BP_SYM (__pthread_mutex_unlock)) +weak_extern (BP_SYM (__pthread_mutexattr_init)) +weak_extern (BP_SYM (__pthread_mutexattr_destroy)) +weak_extern (BP_SYM (__pthread_mutexattr_settype)) +weak_extern (BP_SYM (__pthread_rwlock_init)) +weak_extern (BP_SYM (__pthread_rwlock_destroy)) +weak_extern (BP_SYM (__pthread_rwlock_rdlock)) +weak_extern (BP_SYM (__pthread_rwlock_tryrdlock)) +weak_extern (BP_SYM (__pthread_rwlock_wrlock)) +weak_extern (BP_SYM (__pthread_rwlock_trywrlock)) +weak_extern (BP_SYM (__pthread_rwlock_unlock)) +weak_extern (BP_SYM (__pthread_key_create)) +weak_extern (BP_SYM (__pthread_setspecific)) +weak_extern (BP_SYM (__pthread_getspecific)) +weak_extern (BP_SYM (__pthread_once))  weak_extern (__pthread_initialize)  weak_extern (__pthread_atfork) -weak_extern (_pthread_cleanup_push_defer) -weak_extern (_pthread_cleanup_pop_restore) +weak_extern (BP_SYM (_pthread_cleanup_push_defer)) +weak_extern (BP_SYM (_pthread_cleanup_pop_restore))  # else  #  pragma weak __pthread_mutex_init  #  pragma weak __pthread_mutex_destroy @@ -196,6 +293,12 @@ weak_extern (_pthread_cleanup_pop_restore)  #  pragma weak __pthread_mutexattr_init  #  pragma weak __pthread_mutexattr_destroy  #  pragma weak __pthread_mutexattr_settype +#  pragma weak __pthread_rwlock_destroy +#  pragma weak __pthread_rwlock_rdlock +#  pragma weak __pthread_rwlock_tryrdlock +#  pragma weak __pthread_rwlock_wrlock +#  pragma weak __pthread_rwlock_trywrlock +#  pragma weak __pthread_rwlock_unlock  #  pragma weak __pthread_key_create  #  pragma weak __pthread_setspecific  #  pragma weak __pthread_getspecific diff --git a/libc/sysdeps/linux/sh/bits/local_lim.h b/libc/sysdeps/linux/sh/bits/local_lim.h index 545a90b2e..0a7c83706 100644 --- a/libc/sysdeps/linux/sh/bits/local_lim.h +++ b/libc/sysdeps/linux/sh/bits/local_lim.h @@ -1,5 +1,5 @@  /* Minimum guaranteed maximum values for system limits.  Linux version. -   Copyright (C) 1993, 94, 95, 96, 97, 98 Free Software Foundation, Inc. +   Copyright (C) 1993, 94, 95, 96, 97, 98, 2000 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,11 +17,20 @@     write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,     Boston, MA 02111-1307, USA.  */ -/* The kernel header pollutes the namespace with the NR_OPEN symbol. -   Remove this after including the header if necessary.  */ +/* The kernel header pollutes the namespace with the NR_OPEN symbol +   and defines LINK_MAX although filesystems have different maxima.  A +   similar thing is true for OPEN_MAX: the limit can be changed at +   runtime and therefore the macro must not be defined.  Remove this +   after including the header if necessary.  */  #ifndef NR_OPEN  # define __undef_NR_OPEN  #endif +#ifndef LINK_MAX +# define __undef_LINK_MAX +#endif +#ifndef OPEN_MAX +# define __undef_OPEN_MAX +#endif  /* The kernel sources contain a file with all the needed information.  */  #include <linux/limits.h> @@ -31,6 +40,16 @@  # undef NR_OPEN  # undef __undef_NR_OPEN  #endif +/* Have to remove LINK_MAX?  */ +#ifdef __undef_LINK_MAX +# undef LINK_MAX +# undef __undef_LINK_MAX +#endif +/* Have to remove OPEN_MAX?  */ +#ifdef __undef_OPEN_MAX +# undef OPEN_MAX +# undef __undef_OPEN_MAX +#endif  /* The number of data keys per process.  */  #define _POSIX_THREAD_KEYS_MAX	128 @@ -53,3 +72,6 @@  /* Minimum size for a thread.  We are free to choose a reasonable value.  */  #define PTHREAD_STACK_MIN	16384 + +/* Maximum number of POSIX timers available.  */ +#define TIMER_MAX	256 diff --git a/libc/sysdeps/linux/sh/bits/locale.h b/libc/sysdeps/linux/sh/bits/locale.h new file mode 100644 index 000000000..50064b53e --- /dev/null +++ b/libc/sysdeps/linux/sh/bits/locale.h @@ -0,0 +1,44 @@ +/* Definition of locale category symbol values. +   Copyright (C) 2001 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 Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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 +   Lesser General Public License for more details. + +   You should have received a copy of the GNU Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */ + +#if !defined _LOCALE_H && !defined _LANGINFO_H +# error "Never use <bits/locale.h> directly; include <locale.h> instead." +#endif + +#ifndef _BITS_LOCALE_H +#define _BITS_LOCALE_H	1 + +enum +{ +  __LC_CTYPE = 0, +  __LC_NUMERIC = 1, +  __LC_TIME = 2, +  __LC_COLLATE = 3, +  __LC_MONETARY = 4, +  __LC_MESSAGES = 5, +  __LC_ALL = 6, +  __LC_PAPER = 7, +  __LC_NAME = 8, +  __LC_ADDRESS = 9, +  __LC_TELEPHONE = 10, +  __LC_MEASUREMENT = 11, +  __LC_IDENTIFICATION = 12 +}; + +#endif	/* bits/locale.h */ diff --git a/libc/sysdeps/linux/sh/bits/mathcalls.h b/libc/sysdeps/linux/sh/bits/mathcalls.h index 97bda451a..c1181f737 100644 --- a/libc/sysdeps/linux/sh/bits/mathcalls.h +++ b/libc/sysdeps/linux/sh/bits/mathcalls.h @@ -1,21 +1,21 @@  /* Prototype declarations for math functions; helper file for <math.h>. -   Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc. +   Copyright (C) 1996,1997,1998,1999,2000,2001 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  /* NOTE: Because of the special way this file is used by <math.h>, this     file must NOT be protected from multiple inclusion as header files @@ -81,7 +81,7 @@ __MATHCALL (sinh,, (_Mdouble_ __x));  /* Hyperbolic tangent of X.  */  __MATHCALL (tanh,, (_Mdouble_ __x)); -#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED || defined __USE_ISOC9X +#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99  /* Hyperbolic arc cosine of X.  */  __MATHCALL (acosh,, (_Mdouble_ __x));  /* Hyperbolic arc sine of X.  */ @@ -117,7 +117,7 @@ __MATHCALL (log10,, (_Mdouble_ __x));  /* Break VALUE into integral and fractional parts.  */  __MATHCALL (modf,, (_Mdouble_ __x, _Mdouble_ *__iptr)); -#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED || defined __USE_ISOC9X +#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99  /* Return exp(X) - 1.  */  __MATHCALL (expm1,, (_Mdouble_ __x)); @@ -128,7 +128,7 @@ __MATHCALL (log1p,, (_Mdouble_ __x));  __MATHCALL (logb,, (_Mdouble_ __x));  #endif -#ifdef __USE_ISOC9X +#ifdef __USE_ISOC99  /* Compute base-2 exponential of X.  */  __MATHCALL (exp2,, (_Mdouble_ __x)); @@ -145,12 +145,12 @@ __MATHCALL (pow,, (_Mdouble_ __x, _Mdouble_ __y));  /* Return the square root of X.  */  __MATHCALL (sqrt,, (_Mdouble_ __x)); -#if defined __USE_MISC || defined __USE_XOPEN || defined __USE_ISOC9X +#if defined __USE_MISC || defined __USE_XOPEN || defined __USE_ISOC99  /* Return `sqrt(X*X + Y*Y)'.  */  __MATHCALL (hypot,, (_Mdouble_ __x, _Mdouble_ __y));  #endif -#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED || defined __USE_ISOC9X +#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99  /* Return the cube root of X.  */  __MATHCALL (cbrt,, (_Mdouble_ __x));  #endif @@ -186,14 +186,6 @@ __MATHDECL_1 (int,isinf,, (_Mdouble_ __value)) __attribute__ ((__const__));  /* Return nonzero if VALUE is finite and not NaN.  */  __MATHDECL_1 (int,finite,, (_Mdouble_ __value)) __attribute__ ((__const__)); -/* Deal with an infinite or NaN result. -   If ERROR is ERANGE, result is +Inf; -   if ERROR is - ERANGE, result is -Inf; -   otherwise result is NaN. -   This will set `errno' to either ERANGE or EDOM, -   and may return an infinity or NaN, or may do something else.  */ -__MATHCALLX (infnan,, (int __error), (__const__)); -  /* Return the remainder of X/Y.  */  __MATHCALL (drem,, (_Mdouble_ __x, _Mdouble_ __y)); @@ -202,12 +194,12 @@ __MATHCALL (drem,, (_Mdouble_ __x, _Mdouble_ __y));  __MATHCALL (significand,, (_Mdouble_ __x));  #endif /* Use misc.  */ -#if defined __USE_MISC || defined __USE_ISOC9X +#if defined __USE_MISC || defined __USE_ISOC99  /* Return X with its signed changed to Y's.  */  __MATHCALLX (copysign,, (_Mdouble_ __x, _Mdouble_ __y), (__const__));  #endif -#ifdef __USE_ISOC9X +#ifdef __USE_ISOC99  /* Return representation of NaN for double type.  */  __MATHCALLX (nan,, (__const char *__tagb), (__const__));  #endif @@ -230,11 +222,14 @@ __MATHCALL (yn,, (int, _Mdouble_));  #endif -#if defined __USE_MISC || defined __USE_XOPEN || defined __USE_ISOC9X +#if defined __USE_MISC || defined __USE_XOPEN || defined __USE_ISOC99  /* Error and gamma functions.  */  __MATHCALL (erf,, (_Mdouble_));  __MATHCALL (erfc,, (_Mdouble_));  __MATHCALL (lgamma,, (_Mdouble_)); +#endif + +#ifdef __USE_ISOC99  __MATHCALL (tgamma,, (_Mdouble_));  #endif @@ -251,14 +246,14 @@ __MATHCALL (lgamma,_r, (_Mdouble_, int *__signgamp));  #endif -#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED || defined __USE_ISOC9X +#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99  /* Return the integer nearest X in the direction of the     prevailing rounding mode.  */  __MATHCALL (rint,, (_Mdouble_ __x));  /* Return X + epsilon if X < Y, X - epsilon if X > Y.  */  __MATHCALLX (nextafter,, (_Mdouble_ __x, _Mdouble_ __y), (__const__)); -# ifdef __USE_ISOC9X +# ifdef __USE_ISOC99  __MATHCALLX (nexttoward,, (_Mdouble_ __x, long double __y), (__const__));  # endif @@ -270,14 +265,16 @@ __MATHCALL (remainder,, (_Mdouble_ __x, _Mdouble_ __y));  __MATHCALL (scalb,, (_Mdouble_ __x, _Mdouble_ __n));  # endif +# if defined __USE_MISC || defined __USE_ISOC99  /* Return X times (2 to the Nth power).  */  __MATHCALL (scalbn,, (_Mdouble_ __x, int __n)); +# endif  /* Return the binary exponent of X, which must be nonzero.  */  __MATHDECL (int,ilogb,, (_Mdouble_ __x));  #endif -#ifdef __USE_ISOC9X +#ifdef __USE_ISOC99  /* Return X times (2 to the Nth power).  */  __MATHCALL (scalbln,, (_Mdouble_ __x, long int __n)); @@ -333,4 +330,4 @@ __MATHDECL_1 (int, __signbit,, (_Mdouble_ __value))  /* Multiply-add function computed as a ternary operation.  */  __MATHCALL (fma,, (_Mdouble_ __x, _Mdouble_ __y, _Mdouble_ __z)); -#endif /* Use ISO C 9X.  */ +#endif /* Use ISO C99.  */ diff --git a/libc/sysdeps/linux/sh/bits/mathdef.h b/libc/sysdeps/linux/sh/bits/mathdef.h index c5fe7d7e8..64cc79bc2 100644 --- a/libc/sysdeps/linux/sh/bits/mathdef.h +++ b/libc/sysdeps/linux/sh/bits/mathdef.h @@ -1,50 +1,75 @@ -/* Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998, 1999, 2000 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #if !defined _MATH_H && !defined _COMPLEX_H  # error "Never use <bits/mathdef.h> directly; include <math.h> instead"  #endif -#if defined  __USE_ISOC9X && defined _MATH_H && !defined _MATH_H_MATHDEF + +/* FIXME! This file describes properties of the compiler, not the machine; +   it should not be part of libc! + +   FIXME! This file does not deal with the -fshort-double option of +   gcc! */ + +#if defined __USE_ISOC99 && defined _MATH_H && !defined _MATH_H_MATHDEF  # define _MATH_H_MATHDEF	1 -/* Normally, there is no long double type and the `float' and `double' -   expressions are evaluated as `double'.  */ +# ifdef __GNUC__ +#  if __STDC__ == 1 + +/* In GNU or ANSI mode, gcc leaves `float' expressions as-is.  */ +typedef float float_t;		/* `float' expressions are evaluated as +				   `float'.  */ +typedef double double_t;	/* `double' expressions are evaluated as +				   `double'.  */ + +/* Define `INFINITY' as value of type `float'.  */ +#   define INFINITY	HUGE_VALF + +#  else + +/* For `gcc -traditional', `float' expressions are evaluated as `double'. */  typedef double float_t;		/* `float' expressions are evaluated as  				   `double'.  */  typedef double double_t;	/* `double' expressions are evaluated as  				   `double'.  */ -/* Signal that both types are `double'.  */ -# define FLT_EVAL_METHOD	1 +/* Define `INFINITY' as value of type `float'.  */ +#   define INFINITY	HUGE_VALF + +#  endif +# else + +/* Wild guess at types for float_t and double_t. */ +typedef double float_t; +typedef double double_t;  /* Define `INFINITY' as value of type `float'.  */ -# define INFINITY	HUGE_VALF +#  define INFINITY	HUGE_VALF +# endif  /* The values returned by `ilogb' for 0 and NaN respectively.  */  # define FP_ILOGB0	0x80000001  # define FP_ILOGBNAN	0x7fffffff -/* Number of decimal digits for the `double' type.  */ -# define DECIMAL_DIG	15 - -#endif	/* ISO C9X */ +#endif	/* ISO C99 */  #ifndef __NO_LONG_DOUBLE_MATH  /* Signal that we do not really have a `long double'.  The disables the diff --git a/libc/sysdeps/linux/sh/bits/mman.h b/libc/sysdeps/linux/sh/bits/mman.h index de70c6d02..1c17bf616 100644 --- a/libc/sysdeps/linux/sh/bits/mman.h +++ b/libc/sysdeps/linux/sh/bits/mman.h @@ -1,21 +1,21 @@  /* Definitions for POSIX memory map interface.  Linux/SH version. -   Copyright (C) 1997, 1999 Free Software Foundation, Inc. +   Copyright (C) 1997, 1999, 2000 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #ifndef _SYS_MMAN_H  # error "Never include this file directly.  Use <sys/mman.h> instead" @@ -73,3 +73,21 @@  #ifdef __USE_GNU  # define MREMAP_MAYMOVE	1  #endif + +/* Advice to `madvise'.  */ +#ifdef __USE_BSD +# define MADV_NORMAL	 0	/* No further special treatment.  */ +# define MADV_RANDOM	 1	/* Expect random page references.  */ +# define MADV_SEQUENTIAL 2	/* Expect sequential page references.  */ +# define MADV_WILLNEED	 3	/* Will need these pages.  */ +# define MADV_DONTNEED	 4	/* Don't need these pages.  */ +#endif + +/* The POSIX people had to invent similar names for the same things.  */ +#ifdef __USE_XOPEN2K +# define POSIX_MADV_NORMAL	0 /* No further special treatment.  */ +# define POSIX_MADV_RANDOM	1 /* Expect random page references.  */ +# define POSIX_MADV_SEQUENTIAL	2 /* Expect sequential page references.  */ +# define POSIX_MADV_WILLNEED	3 /* Will need these pages.  */ +# define POSIX_MADV_DONTNEED	4 /* Don't need these pages.  */ +#endif diff --git a/libc/sysdeps/linux/sh/bits/msq.h b/libc/sysdeps/linux/sh/bits/msq.h index d7a8e5ee0..32a49b592 100644 --- a/libc/sysdeps/linux/sh/bits/msq.h +++ b/libc/sysdeps/linux/sh/bits/msq.h @@ -1,30 +1,36 @@ -/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1995, 1996, 1997, 2000 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #ifndef _SYS_MSG_H  # error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."  #endif -#include <sys/types.h> +#include <bits/types.h>  /* Define options for message queue functions.  */  #define MSG_NOERROR	010000	/* no error if message is too big */ -#define MSG_EXCEPT	020000	/* recv any msg except of specified type */ +#ifdef __USE_GNU +# define MSG_EXCEPT	020000	/* recv any msg except of specified type */ +#endif + +/* Types used in the structure definition.  */ +typedef unsigned long int msgqnum_t; +typedef unsigned long int msglen_t;  /* Structure of record for one message inside the kernel. @@ -32,18 +38,19 @@  struct msqid_ds  {    struct ipc_perm msg_perm;	/* structure describing operation permission */ -  struct msg *__msg_first;	/* pointer to first message on queue */ -  struct msg *__msg_last;	/* pointer to last message on queue */    __time_t msg_stime;		/* time of last msgsnd command */ +  unsigned long int __unused1;    __time_t msg_rtime;		/* time of last msgrcv command */ +  unsigned long int __unused2;    __time_t msg_ctime;		/* time of last change */ -  struct wait_queue *__wwait;	/* ??? */ -  struct wait_queue *__rwait;	/* ??? */ -  unsigned short int __msg_cbytes;/* current number of bytes on queue */ -  unsigned short int msg_qnum;	/* number of messages currently on queue */ -  unsigned short int msg_qbytes;/* max number of bytes allowed on queue */ -  __ipc_pid_t msg_lspid;	/* pid of last msgsnd() */ -  __ipc_pid_t msg_lrpid;	/* pid of last msgrcv() */ +  unsigned long int __unused3; +  unsigned long int __msg_cbytes; /* current number of bytes on queue */ +  msgqnum_t msg_qnum;		/* number of messages currently on queue */ +  msglen_t msg_qbytes;		/* max number of bytes allowed on queue */ +  __pid_t msg_lspid;		/* pid of last msgsnd() */ +  __pid_t msg_lrpid;		/* pid of last msgrcv() */ +  unsigned long int __unused4; +  unsigned long int __unused5;  };  #ifdef __USE_MISC diff --git a/libc/sysdeps/linux/sh/bits/nan.h b/libc/sysdeps/linux/sh/bits/nan.h index fbabd7e29..6d88b551b 100644 --- a/libc/sysdeps/linux/sh/bits/nan.h +++ b/libc/sysdeps/linux/sh/bits/nan.h @@ -3,19 +3,19 @@     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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #ifndef _MATH_H  # error "Never use <bits/nan.h> directly; include <math.h> instead." diff --git a/libc/sysdeps/linux/sh/bits/netdb.h b/libc/sysdeps/linux/sh/bits/netdb.h new file mode 100644 index 000000000..41dc73193 --- /dev/null +++ b/libc/sysdeps/linux/sh/bits/netdb.h @@ -0,0 +1,33 @@ +/* Copyright (C) 1996, 1997, 1998, 1999, 2000 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 Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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 +   Lesser General Public License for more details. + +   You should have received a copy of the GNU Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */ + +#ifndef _NETDB_H +# error "Never include <bits/netdb.h> directly; use <netdb.h> instead." +#endif + + +/* Description of data base entry for a single network.  NOTE: here a +   poor assumption is made.  The network number is expected to fit +   into an unsigned long int variable.  */ +struct netent +{ +  char *n_name;			/* Official name of network.  */ +  char **n_aliases;		/* Alias list.  */ +  int n_addrtype;		/* Net address type.  */ +  uint32_t n_net;		/* Network number.  */ +}; diff --git a/libc/sysdeps/linux/sh/bits/poll.h b/libc/sysdeps/linux/sh/bits/poll.h index 4aec021fe..dccb8b666 100644 --- a/libc/sysdeps/linux/sh/bits/poll.h +++ b/libc/sysdeps/linux/sh/bits/poll.h @@ -1,20 +1,20 @@ -/* Copyright (C) 1997 Free Software Foundation, Inc. +/* Copyright (C) 1997, 2001 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #ifndef _SYS_POLL_H  # error "Never use <bits/poll.h> directly; include <sys/poll.h> instead." @@ -46,6 +46,3 @@  #define POLLERR		0x008		/* Error condition.  */  #define POLLHUP		0x010		/* Hung up.  */  #define POLLNVAL	0x020		/* Invalid polling request.  */ - -/* Canonical number of polling requests to read in at a time in poll.  */ -#define NPOLLFILE	30 diff --git a/libc/sysdeps/linux/sh/bits/posix1_lim.h b/libc/sysdeps/linux/sh/bits/posix1_lim.h index ee84b94a7..e16f4674d 100644 --- a/libc/sysdeps/linux/sh/bits/posix1_lim.h +++ b/libc/sysdeps/linux/sh/bits/posix1_lim.h @@ -1,20 +1,20 @@ -/* Copyright (C) 1991, 1992, 1993, 1996, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1991,92,93,96,98,2000,2001 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  /*   *	POSIX Standard: 2.9.2 Minimum Values	Added to <limits.h> @@ -73,7 +73,7 @@  #define	_POSIX_NAME_MAX		14  /* Number of bytes in a pathname.  */ -#define	_POSIX_PATH_MAX		255 +#define	_POSIX_PATH_MAX		256  /* Number of bytes than can be written atomically to a pipe.  */  #define	_POSIX_PIPE_BUF		512 @@ -97,7 +97,7 @@  #define	_POSIX_STREAM_MAX	8  /* Maximum length of a timezone name (element of `tzname').  */ -#define	_POSIX_TZNAME_MAX	3 +#define	_POSIX_TZNAME_MAX	6  /* Maximum number of connections that can be queued on a socket.  */  #define	_POSIX_QLIMIT		1 diff --git a/libc/sysdeps/linux/sh/bits/posix2_lim.h b/libc/sysdeps/linux/sh/bits/posix2_lim.h index eaaf67129..24483a09d 100644 --- a/libc/sysdeps/linux/sh/bits/posix2_lim.h +++ b/libc/sysdeps/linux/sh/bits/posix2_lim.h @@ -1,20 +1,20 @@ -/* Copyright (C) 1991, 1996, 2000 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1996, 1999, 2000, 2001 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  /*   * Never include this file directly; include <limits.h> instead. @@ -37,14 +37,8 @@  #define	_POSIX2_BC_STRING_MAX		1000  /* The maximum number of weights that can be assigned to an entry of -   the LC_COLLATE `order' keyword in the locale definition file. -   We have no fixed limit, 255 is very high.  */ -#define	_POSIX2_COLL_WEIGHTS_MAX	255 - -/* The maximum number of weights that can be assigned to an entry of -   the LC_COLLATE category `order' keyword in a locale definition. -   We have no fixed limit, 255 is a high number.  */ -#define	_POSIX2_EQUIV_CLASS_MAX		255 +   the LC_COLLATE `order' keyword in the locale definition file.  */ +#define	_POSIX2_COLL_WEIGHTS_MAX	2  /* The maximum number of expressions that can be nested     within parentheses by the `expr' utility.  */ @@ -59,7 +53,7 @@  /* The maximum number of bytes in a character class name.  We have no     fixed limit, 2048 is a high number.  */ -#define	_POSIX2_CHARCLASS_NAME_MAX	2048 +#define	_POSIX2_CHARCLASS_NAME_MAX	14  /* These values are implementation-specific, @@ -79,10 +73,7 @@  #define	BC_STRING_MAX		_POSIX2_BC_STRING_MAX  #endif  #ifndef	COLL_WEIGHTS_MAX -#define	COLL_WEIGHTS_MAX	_POSIX2_COLL_WEIGHTS_MAX -#endif -#ifndef	EQUIV_CLASS_MAX -#define	EQUIV_CLASS_MAX		_POSIX2_EQUIV_CLASS_MAX +#define	COLL_WEIGHTS_MAX	255  #endif  #ifndef	EXPR_NEST_MAX  #define	EXPR_NEST_MAX		_POSIX2_EXPR_NEST_MAX @@ -91,7 +82,7 @@  #define	LINE_MAX		_POSIX2_LINE_MAX  #endif  #ifndef	CHARCLASS_NAME_MAX -#define	CHARCLASS_NAME_MAX	_POSIX2_CHARCLASS_NAME_MAX +#define	CHARCLASS_NAME_MAX	2048  #endif  /* This value is defined like this in regex.h.  */ diff --git a/libc/sysdeps/linux/sh/bits/posix_opt.h b/libc/sysdeps/linux/sh/bits/posix_opt.h index 15683b77e..54640bb56 100644 --- a/libc/sysdeps/linux/sh/bits/posix_opt.h +++ b/libc/sysdeps/linux/sh/bits/posix_opt.h @@ -1,5 +1,5 @@  /* Define POSIX options for Linux. -   Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc. +   Copyright (C) 1996,1997,1998,1999,2000,2001 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 @@ -89,13 +89,14 @@  #define _POSIX_THREAD_ATTR_STACKADDR	1  /* We support POSIX.1b semaphores, but only the non-shared form for now.  */ -/*#define _POSIX_SEMAPHORES	1	XXX We are not quite there now.  */ +#define _POSIX_SEMAPHORES	1  /* Real-time signals are supported.  */  #define _POSIX_REALTIME_SIGNALS	1  /* We support asynchronous I/O.  */  #define _POSIX_ASYNCHRONOUS_IO	1 +#define _POSIX_ASYNC_IO		1  /* Alternative name for Unix98.  */  #define _LFS_ASYNCHRONOUS_IO	1 @@ -107,4 +108,34 @@  #define _LFS64_LARGEFILE	1  #define _LFS64_STDIO		1 +/* POSIX shared memory objects are implemented.  */ +#define _POSIX_SHARED_MEMORY_OBJECTS	1 + +/* GNU libc provides regular expression handling.  */ +#define _POSIX_REGEXP	1 + +/* Reader/Writer locks are available.  */ +#define _POSIX_READER_WRITER_LOCKS	200912L + +/* We have a POSIX shell.  */ +#define _POSIX_SHELL	1 + +/* We support the Timeouts option.  */ +#define _POSIX_TIMEOUTS	200912L + +/* We support spinlocks.  */ +#define _POSIX_SPIN_LOCKS	200912L + +/* The `spawn' function family is supported.  */ +#define _POSIX_SPAWN	200912L + +/* We have POSIX timers.  */ +#define _POSIX_TIMERS	1 + +/* The barrier functions are available.  */ +#define _POSIX_BARRIERS	200912L + +/* POSIX message queues are not yet supported.  */ +#undef	_POSIX_MESSAGE_PASSING +  #endif /* posix_opt.h */ diff --git a/libc/sysdeps/linux/sh/bits/pthreadtypes.h b/libc/sysdeps/linux/sh/bits/pthreadtypes.h index fbb10ed5c..3ee5c4813 100644 --- a/libc/sysdeps/linux/sh/bits/pthreadtypes.h +++ b/libc/sysdeps/linux/sh/bits/pthreadtypes.h @@ -25,8 +25,9 @@  /* Fast locks (not abstract because mutexes and conditions aren't abstract). */  struct _pthread_fastlock  { -  long int __status;            /* "Free" or "taken" or head of waiting list */ -  int __spinlock;               /* For compare-and-swap emulation */ +  long int __status;   /* "Free" or "taken" or head of waiting list */ +  int __spinlock;      /* Used by compare_and_swap emulation. Also, +			  adaptive SMP lock stores spin count here. */  };  #ifndef _PTHREAD_DESCR_DEFINED @@ -37,7 +38,7 @@ typedef struct _pthread_descr_struct *_pthread_descr;  /* Attributes for threads.  */ -typedef struct +typedef struct __pthread_attr_s  {    int __detachstate;    int __schedpolicy; @@ -95,7 +96,7 @@ typedef int pthread_once_t;  #ifdef __USE_UNIX98  /* Read-write locks.  */ -typedef struct +typedef struct _pthread_rwlock_t  {    struct _pthread_fastlock __rw_lock; /* Lock to guarantee mutual exclusion */    int __rw_readers;                   /* Number of readers */ @@ -115,6 +116,25 @@ typedef struct  } pthread_rwlockattr_t;  #endif +#ifdef __USE_XOPEN2K +/* POSIX spinlock data type.  */ +typedef volatile int pthread_spinlock_t; + +/* POSIX barrier. */ +typedef struct { +  struct _pthread_fastlock __ba_lock; /* Lock to guarantee mutual exclusion */ +  int __ba_required;                  /* Threads needed for completion */ +  int __ba_present;                   /* Threads waiting */ +  _pthread_descr __ba_waiting;        /* Queue of waiting threads */ +} pthread_barrier_t; + +/* barrier attribute */ +typedef struct { +  int __pshared; +} pthread_barrierattr_t; + +#endif +  /* Thread identifiers */  typedef unsigned long int pthread_t; diff --git a/libc/sysdeps/linux/sh/bits/resource.h b/libc/sysdeps/linux/sh/bits/resource.h index 50c659389..07b5d8e49 100644 --- a/libc/sysdeps/linux/sh/bits/resource.h +++ b/libc/sysdeps/linux/sh/bits/resource.h @@ -1,21 +1,21 @@ -/* Bit values & structures for resource limits.  Linux version. -   Copyright (C) 1994, 1996, 1997, 1998, 1999 Free Software Foundation, Inc. +/* Bit values & structures for resource limits.  Linux/SH version. +   Copyright (C) 1994,1996,1997,1998,1999,2000 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #ifndef _SYS_RESOURCE_H  # error "Never use <bits/resource.h> directly; include <sys/resource.h> instead." @@ -64,7 +64,7 @@ enum __rlimit_resource  #define RLIMIT_NOFILE RLIMIT_NOFILE  #define RLIMIT_OFILE RLIMIT_OFILE -  /* Address space limit (?) */ +  /* Address space limit.  */    RLIMIT_AS = 9,  #define RLIMIT_AS RLIMIT_AS @@ -76,20 +76,25 @@ enum __rlimit_resource    RLIMIT_MEMLOCK = 8,  #define RLIMIT_MEMLOCK RLIMIT_MEMLOCK -  RLIM_NLIMITS = 10 +  /* Maximum number of file locks.  */ +  RLIMIT_LOCKS = 10, +#define RLIMIT_LOCKS RLIMIT_LOCKS + +  RLIMIT_NLIMITS = 11, +  RLIM_NLIMITS = RLIMIT_NLIMITS  #define RLIMIT_NLIMITS RLIMIT_NLIMITS  #define RLIM_NLIMITS RLIM_NLIMITS  };  /* Value to indicate that there is no limit.  */  #ifndef __USE_FILE_OFFSET64 -# define RLIM_INFINITY ((long int)(~0UL >> 1)) +# define RLIM_INFINITY ((unsigned long int)(~0UL))  #else -# define RLIM_INFINITY 0x7fffffffffffffffLL +# define RLIM_INFINITY 0xffffffffffffffffuLL  #endif  #ifdef __USE_LARGEFILE64 -# define RLIM64_INFINITY 0x7fffffffffffffffLL +# define RLIM64_INFINITY 0xffffffffffffffffuLL  #endif  /* We can represent all limits.  */ diff --git a/libc/sysdeps/linux/sh/bits/sched.h b/libc/sysdeps/linux/sh/bits/sched.h index 7e3c40eb4..5c10d85d4 100644 --- a/libc/sysdeps/linux/sh/bits/sched.h +++ b/libc/sysdeps/linux/sh/bits/sched.h @@ -1,22 +1,22 @@  /* Definitions of constants and data structure for POSIX 1003.1b-1993     scheduling interface. -   Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc. +   Copyright (C) 1996, 1997, 1998, 1999, 2001 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #ifndef __need_schedparam @@ -46,15 +46,15 @@  /* The official definition.  */  struct sched_param    { -    int sched_priority; +    int __sched_priority;    };  __BEGIN_DECLS  /* Clone current process.  */  #ifdef __USE_MISC -extern int clone __P ((int (*__fn) (void *__arg), void *__child_stack, -		       int __flags, void *__arg)); +extern int clone (int (*__fn) (void *__arg), void *__child_stack, +		  int __flags, void *__arg) __THROW;  #endif  __END_DECLS @@ -67,7 +67,7 @@ __END_DECLS  /* Data structure to describe a process' schedulability.  */  struct __sched_param    { -    int sched_priority; +    int __sched_priority;    };  # undef __need_schedparam  #endif diff --git a/libc/sysdeps/linux/sh/bits/select.h b/libc/sysdeps/linux/sh/bits/select.h index 4513135af..47e7dedc3 100644 --- a/libc/sysdeps/linux/sh/bits/select.h +++ b/libc/sysdeps/linux/sh/bits/select.h @@ -1,20 +1,20 @@ -/* Copyright (C) 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998, 2001 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #ifndef _SYS_SELECT_H  # error "Never use <bits/select.h> directly; include <sys/select.h> instead." @@ -26,8 +26,8 @@  #define __FD_ZERO(s) \    do {									      \      unsigned int __i;							      \ -    __fd_set *__arr = (s);						      \ -    for (__i = 0; __i < sizeof (__fd_set) / sizeof (__fd_mask); ++__i)	      \ +    fd_set *__arr = (s);						      \ +    for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i)	      \        __FDS_BITS (__arr)[__i] = 0;					      \    } while (0)  #define __FD_SET(d, s)     (__FDS_BITS (s)[__FDELT(d)] |= __FDMASK(d)) diff --git a/libc/sysdeps/linux/sh/bits/sem.h b/libc/sysdeps/linux/sh/bits/sem.h index 3d113a74f..6193501e2 100644 --- a/libc/sysdeps/linux/sh/bits/sem.h +++ b/libc/sysdeps/linux/sh/bits/sem.h @@ -1,20 +1,20 @@ -/* Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1995, 1996, 1997, 1998, 2000 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #ifndef _SYS_SEM_H  # error "Never include <bits/sem.h> directly; use <sys/sem.h> instead." @@ -40,15 +40,14 @@ struct semid_ds  {    struct ipc_perm sem_perm;		/* operation permission struct */    __time_t sem_otime;			/* last semop() time */ +  unsigned long int __unused1;    __time_t sem_ctime;			/* last time changed by semctl() */ -  struct sem *__sembase;		/* ptr to first semaphore in array */ -  struct sem_queue *__sem_pending;	/* pending operations */ -  struct sem_queue *__sem_pending_last; /* last pending operation */ -  struct sem_undo *__undo;		/* ondo requests on this array */ -  unsigned short int sem_nsems;		/* number of semaphores in set */ +  unsigned long int __unused2; +  unsigned long int sem_nsems;		/* number of semaphores in set */ +  unsigned long int __unused3; +  unsigned long int __unused4;  }; -  /* The user should define a union like the following to use it for arguments     for `semctl'. diff --git a/libc/sysdeps/linux/sh/bits/setjmp.h b/libc/sysdeps/linux/sh/bits/setjmp.h index f85c3daa0..5182300f3 100644 --- a/libc/sysdeps/linux/sh/bits/setjmp.h +++ b/libc/sysdeps/linux/sh/bits/setjmp.h @@ -2,19 +2,19 @@     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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  /* Define the machine-dependent type `jmp_buf'.  SH version. */ @@ -29,17 +29,22 @@ typedef struct      int __regs[8];      /* Program counter.  */ -    __ptr_t __pc; +    void * __pc;      /* The global pointer.  */ -    __ptr_t __gbr; +    void * __gbr; +    /* Floating point status register.  */ +    int __fpscr; + +    /* Callee-saved floating point registers fr12 through fr15.  */ +    int __fpregs[4];    } __jmp_buf[1];  #endif -#define JB_SIZE		(4 * 10) +#define JB_SIZE		(4 * 15)  /* Test if longjmp to JMPBUF would unwind the frame     containing a local variable at ADDRESS.  */  #define _JMPBUF_UNWINDS(jmpbuf, address) \ -  ((__ptr_t) (address) < &(jmpbuf)[0].__regs[7]) +  ((void *) (address) < &(jmpbuf)[0].__regs[7]) diff --git a/libc/sysdeps/linux/sh/bits/shm.h b/libc/sysdeps/linux/sh/bits/shm.h index c7070595b..18246c3bd 100644 --- a/libc/sysdeps/linux/sh/bits/shm.h +++ b/libc/sysdeps/linux/sh/bits/shm.h @@ -1,26 +1,26 @@ -/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1995, 1996, 1997, 2000 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #ifndef _SYS_SHM_H  # error "Never include <bits/shm.h> directly; use <sys/shm.h> instead."  #endif -#include <sys/types.h> +#include <bits/types.h>  /* Permission flag for shmget.  */  #define SHM_R		0400		/* or S_IRUGO from <linux/stat.h> */ @@ -36,20 +36,25 @@  #define SHM_UNLOCK	12		/* unlock segment (root only) */ +/* Type to count number of attaches.  */ +typedef unsigned long int shmatt_t; +  /* Data structure describing a set of semaphores.  */  struct shmid_ds    {      struct ipc_perm shm_perm;		/* operation permission struct */ -    int shm_segsz;			/* size of segment in bytes */ +    size_t shm_segsz;			/* size of segment in bytes */      __time_t shm_atime;			/* time of last shmat() */ +    unsigned long int __unused1;      __time_t shm_dtime;			/* time of last shmdt() */ +    unsigned long int __unused2;      __time_t shm_ctime;			/* time of last change by shmctl() */ -    __ipc_pid_t shm_cpid;		/* pid of creator */ -    __ipc_pid_t shm_lpid;		/* pid of last shmop */ -    unsigned short int shm_nattch;	/* number of current attaches */ -    unsigned short int __shm_npages;	/* size of segment (pages) */ -    unsigned long int *__shm_pages;	/* array of ptrs to frames -> SHMMAX */ -    struct vm_area_struct *__attaches;	/* descriptors for attaches */ +    unsigned long int __unused3; +    __pid_t shm_cpid;			/* pid of creator */ +    __pid_t shm_lpid;			/* pid of last shmop */ +    shmatt_t shm_nattch;		/* number of current attaches */ +    unsigned long int __unused4; +    unsigned long int __unused5;    };  #ifdef __USE_MISC @@ -64,11 +69,15 @@ struct shmid_ds  struct	shminfo    { -    int shmmax; -    int shmmin; -    int shmmni; -    int shmseg; -    int shmall; +    unsigned long int shmmax; +    unsigned long int shmmin; +    unsigned long int shmmni; +    unsigned long int shmseg; +    unsigned long int shmall; +    unsigned long int __unused1; +    unsigned long int __unused2; +    unsigned long int __unused3; +    unsigned long int __unused4;    };  struct shm_info diff --git a/libc/sysdeps/linux/sh/bits/sigaction.h b/libc/sysdeps/linux/sh/bits/sigaction.h index e74eac22d..48cc5312f 100644 --- a/libc/sysdeps/linux/sh/bits/sigaction.h +++ b/libc/sysdeps/linux/sh/bits/sigaction.h @@ -1,21 +1,21 @@  /* The proper definitions for Linux's sigaction. -   Copyright (C) 1993, 94, 95, 96, 97, 98, 2000 Free Software Foundation, Inc. +   Copyright (C) 1993-1999, 2000 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #ifndef _SIGNAL_H  # error "Never include <bits/sigaction.h> directly; use <signal.h> instead." @@ -31,7 +31,7 @@ struct sigaction  	/* Used if SA_SIGINFO is not set.  */  	__sighandler_t sa_handler;  	/* Used if SA_SIGINFO is set.  */ -	void (*sa_sigaction) __PMT ((int, siginfo_t *, void *)); +	void (*sa_sigaction) (int, siginfo_t *, void *);        }      __sigaction_handler;  # define sa_handler	__sigaction_handler.sa_handler @@ -47,7 +47,7 @@ struct sigaction      int sa_flags;      /* Restore handler.  */ -    void (*sa_restorer) __PMT ((void)); +    void (*sa_restorer) (void);    };  /* Bits in `sa_flags'.  */ diff --git a/libc/sysdeps/linux/sh/bits/sigcontext.h b/libc/sysdeps/linux/sh/bits/sigcontext.h index 97cbf4b30..67dcf9498 100644 --- a/libc/sysdeps/linux/sh/bits/sigcontext.h +++ b/libc/sysdeps/linux/sh/bits/sigcontext.h @@ -2,19 +2,19 @@     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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H  # error "Never use <bits/sigcontext.h> directly; include <signal.h> instead." diff --git a/libc/sysdeps/linux/sh/bits/siginfo.h b/libc/sysdeps/linux/sh/bits/siginfo.h index 66e626199..70a8c217e 100644 --- a/libc/sysdeps/linux/sh/bits/siginfo.h +++ b/libc/sysdeps/linux/sh/bits/siginfo.h @@ -1,29 +1,33 @@ -/* siginfo_t, sigevent and constants.  Linux version. -   Copyright (C) 1997, 1998 Free Software Foundation, Inc. +/* siginfo_t, sigevent and constants.  Linux/SPARC version. +   Copyright (C) 1997, 1998, 1999, 2000, 2001 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */ -#if !defined _SIGNAL_H && !defined __need_siginfo_t +#if !defined _SIGNAL_H && !defined __need_siginfo_t \ +    && !defined __need_sigevent_t  # error "Never include this file directly.  Use <signal.h> instead"  #endif -#if (!defined __have_siginfo_t \ -     && (defined _SIGNAL_H || defined __need_siginfo_t)) -# define __have_siginfo_t	1 +#include <bits/wordsize.h> + +#if (!defined __have_sigval_t \ +     && (defined _SIGNAL_H || defined __need_siginfo_t \ +	 || defined __need_sigevent_t)) +# define __have_sigval_t	1  /* Type for data associated with a signal.  */  typedef union sigval @@ -31,9 +35,18 @@ typedef union sigval      int sival_int;      void *sival_ptr;    } sigval_t; +#endif + +#if (!defined __have_siginfo_t \ +     && (defined _SIGNAL_H || defined __need_siginfo_t)) +# define __have_siginfo_t	1  # define __SI_MAX_SIZE     128 -# define __SI_PAD_SIZE     ((__SI_MAX_SIZE / sizeof (int)) - 3) +# if __WORDSIZE == 64 +#  define __SI_PAD_SIZE     ((__SI_MAX_SIZE / sizeof (int)) - 4) +# else +#  define __SI_PAD_SIZE     ((__SI_MAX_SIZE / sizeof (int)) - 3) +# endif  typedef struct siginfo    { @@ -87,7 +100,7 @@ typedef struct siginfo  	/* SIGPOLL.  */  	struct  	  { -	    int si_band;	/* Band event for SIGPOLL.  */ +	    long int si_band;	/* Band event for SIGPOLL.  */  	    int si_fd;  	  } _sigpoll;        } _sifields; @@ -97,6 +110,8 @@ typedef struct siginfo  /* X/Open requires some more fields with fixed names.  */  # define si_pid		_sifields._kill.si_pid  # define si_uid		_sifields._kill.si_uid +# define si_timer1	_sifields._timer._timer1 +# define si_timer2	_sifields._timer._timer2  # define si_status	_sifields._sigchld.si_status  # define si_utime	_sifields._sigchld.si_utime  # define si_stime	_sifields._sigchld.si_stime @@ -112,7 +127,9 @@ typedef struct siginfo     signals.  */  enum  { -  SI_SIGIO = -5,		/* Sent by queued SIGIO. */ +  SI_ASYNCNL = -6,		/* Sent by asynch name lookup completion.  */ +# define SI_ASYNCNL	SI_ASYNCNL +  SI_SIGIO,			/* Sent by queued SIGIO. */  # define SI_SIGIO	SI_SIGIO    SI_ASYNCIO,			/* Sent by AIO completion.  */  # define SI_ASYNCIO	SI_ASYNCIO @@ -122,8 +139,10 @@ enum  # define SI_TIMER	SI_TIMER    SI_QUEUE,			/* Sent by sigqueue.  */  # define SI_QUEUE	SI_QUEUE -  SI_USER			/* Sent by kill, sigsend, raise.  */ +  SI_USER,			/* Sent by kill, sigsend, raise.  */  # define SI_USER	SI_USER +  SI_KERNEL = 0x80		/* Send by kernel.  */ +#define SI_KERNEL	SI_KERNEL  }; @@ -236,12 +255,20 @@ enum  #endif	/* !have siginfo_t && (have _SIGNAL_H || need siginfo_t).  */ -#if defined _SIGNAL_H && !defined __have_sigevent_t +#if (defined _SIGNAL_H || defined __need_sigevent_t) \ +    && !defined __have_sigevent_t  # define __have_sigevent_t	1  /* Structure to transport application-defined values with signals.  */  # define __SIGEV_MAX_SIZE	64 -# define __SIGEV_PAD_SIZE	((__SIGEV_MAX_SIZE / sizeof (int)) - 3) +# if __WORDSIZE == 64 +#  define __SIGEV_PAD_SIZE	((__SIGEV_MAX_SIZE / sizeof (int)) - 4) +# else +#  define __SIGEV_PAD_SIZE	((__SIGEV_MAX_SIZE / sizeof (int)) - 3) +# endif + +/* Forward declaration of the `pthread_attr_t' type.  */ +struct __pthread_attr_s;  typedef struct sigevent    { @@ -255,8 +282,8 @@ typedef struct sigevent  	struct  	  { -	    void (*_function) __PMT ((sigval_t)); /* Function to start.  */ -	    void *_attribute;			  /* Really pthread_attr_t.  */ +	    void (*_function) (sigval_t);	  /* Function to start.  */ +	    struct __pthread_attr_s *_attribute;  /* Really pthread_attr_t.  */  	  } _sigev_thread;        } _sigev_un;    } sigevent_t; diff --git a/libc/sysdeps/linux/sh/bits/signum.h b/libc/sysdeps/linux/sh/bits/signum.h index fb26703d0..74259b492 100644 --- a/libc/sysdeps/linux/sh/bits/signum.h +++ b/libc/sysdeps/linux/sh/bits/signum.h @@ -3,19 +3,19 @@     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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #ifdef	_SIGNAL_H diff --git a/libc/sysdeps/linux/sh/bits/sigset.h b/libc/sysdeps/linux/sh/bits/sigset.h index dcdc924c2..7ccadda45 100644 --- a/libc/sysdeps/linux/sh/bits/sigset.h +++ b/libc/sysdeps/linux/sh/bits/sigset.h @@ -3,19 +3,19 @@     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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #ifndef	_SIGSET_H_types  # define _SIGSET_H_types	1 @@ -24,7 +24,11 @@ typedef int __sig_atomic_t;  /* A `sigset_t' has a bit for each signal.  */ -typedef unsigned long __sigset_t; +# define _SIGSET_NWORDS	(1024 / (8 * sizeof (unsigned long int))) +typedef struct +  { +    unsigned long int __val[_SIGSET_NWORDS]; +  } __sigset_t;  #endif @@ -43,27 +47,79 @@ typedef unsigned long __sigset_t;  # endif  /* Return a mask that includes the bit for SIG only.  */ -# define __sigmask(sig) (1L << ((sig) - 1)) +# define __sigmask(sig) \ +  (((unsigned long int) 1) << (((sig) - 1) % (8 * sizeof (unsigned long int)))) + +/* Return the word index for SIG.  */ +# define __sigword(sig)	(((sig) - 1) / (8 * sizeof (unsigned long int)))  # if defined __GNUC__ && __GNUC__ >= 2 -#  define __sigemptyset(set) (*(set) = 0) -#  define __sigfillset(set) (*(set) = ~0) +#  define __sigemptyset(set) \ +  (__extension__ ({ int __cnt = _SIGSET_NWORDS;				      \ +		    sigset_t *__set = (set);				      \ +		    while (--__cnt >= 0) __set->__val[__cnt] = 0;	      \ +		    0; })) +#  define __sigfillset(set) \ +  (__extension__ ({ int __cnt = _SIGSET_NWORDS;				      \ +		    sigset_t *__set = (set);				      \ +		    while (--__cnt >= 0) __set->__val[__cnt] = ~0UL;	      \ +		    0; }))  #  ifdef __USE_GNU  /* The POSIX does not specify for handling the whole signal set in one     command.  This is often wanted and so we define three more functions     here.  */ -#   define __sigisemptyset(set) (*(set) == 0) -#   define __sigandset(dest, left, right) (*(dest) = *(left) & *(right)) -#   define __sigorset(dest, left, right) (*(dest) = *(left) | *(right)) +#   define __sigisemptyset(set) \ +  (__extension__ ({ int __cnt = _SIGSET_NWORDS;				      \ +		    const sigset_t *__set = (set);			      \ +		    int __ret = __set->__val[--__cnt];			      \ +		    while (!__ret && --__cnt >= 0)			      \ +			__ret = __set->__val[__cnt];			      \ +		    __ret == 0; })) +#   define __sigandset(dest, left, right) \ +  (__extension__ ({ int __cnt = _SIGSET_NWORDS;				      \ +		    sigset_t *__dest = (dest);				      \ +		    const sigset_t *__left = (left);			      \ +		    const sigset_t *__right = (right);			      \ +		    while (--__cnt >= 0)				      \ +		      __dest->__val[__cnt] = (__left->__val[__cnt]	      \ +					      & __right->__val[__cnt]);	      \ +		    0; })) +#   define __sigorset(dest, left, right) \ +  (__extension__ ({ int __cnt = _SIGSET_NWORDS;				      \ +		    sigset_t *__dest = (dest);				      \ +		    const sigset_t *__left = (left);			      \ +		    const sigset_t *__right = (right);			      \ +		    while (--__cnt >= 0)				      \ +		      __dest->__val[__cnt] = (__left->__val[__cnt]	      \ +					      | __right->__val[__cnt]);	      \ +		    0; }))  #  endif  # endif  /* These functions needn't check for a bogus signal number -- error     checking is done in the non __ versions.  */ -# define __sigismember(set, sig) (*(set) & (1L << ((sig)-1))) -# define __sigaddset(set, sig) (*(set) |= (1L << ((sig)-1))) -# define __sigdelset(set, sig) (*(set) &= ~(1L << ((sig)-1))) +extern int __sigismember (__const __sigset_t *, int); +extern int __sigaddset (__sigset_t *, int); +extern int __sigdelset (__sigset_t *, int); + +# ifdef __USE_EXTERN_INLINES +#  define __SIGSETFN(NAME, BODY, CONST)					      \ +  _EXTERN_INLINE int							      \ +  NAME (CONST __sigset_t *__set, int __sig)				      \ +  {									      \ +    unsigned long int __mask = __sigmask (__sig);			      \ +    unsigned long int __word = __sigword (__sig);			      \ +    return BODY;							      \ +  } + +__SIGSETFN (__sigismember, (__set->__val[__word] & __mask) ? 1 : 0, __const) +__SIGSETFN (__sigaddset, ((__set->__val[__word] |= __mask), 0), ) +__SIGSETFN (__sigdelset, ((__set->__val[__word] &= ~__mask), 0), ) + +#  undef __SIGSETFN +# endif +  #endif /* ! _SIGSET_H_fns.  */ diff --git a/libc/sysdeps/linux/sh/bits/sigstack.h b/libc/sysdeps/linux/sh/bits/sigstack.h index 905e87fd9..7f260367b 100644 --- a/libc/sysdeps/linux/sh/bits/sigstack.h +++ b/libc/sysdeps/linux/sh/bits/sigstack.h @@ -1,21 +1,21 @@  /* sigstack, sigaltstack definitions. -   Copyright (C) 1998 Free Software Foundation, Inc. +   Copyright (C) 1998, 1999 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #ifndef _SIGNAL_H  # error "Never include this file directly.  Use <signal.h> instead" @@ -25,7 +25,7 @@  /* Structure describing a signal stack (obsolete).  */  struct sigstack    { -    __ptr_t ss_sp;		/* Signal stack pointer.  */ +    void *ss_sp;		/* Signal stack pointer.  */      int ss_onstack;		/* Nonzero if executing on this stack.  */    }; @@ -49,7 +49,7 @@ enum  /* Alternate, preferred interface.  */  typedef struct sigaltstack    { -    __ptr_t ss_sp; +    void *ss_sp;      int ss_flags;      size_t ss_size;    } stack_t; diff --git a/libc/sysdeps/linux/sh/bits/sigthread.h b/libc/sysdeps/linux/sh/bits/sigthread.h index c213614be..b86e75f20 100644 --- a/libc/sysdeps/linux/sh/bits/sigthread.h +++ b/libc/sysdeps/linux/sh/bits/sigthread.h @@ -1,5 +1,5 @@  /* Signal handling function for threaded programs. -   Copyright (C) 1998 Free Software Foundation, Inc. +   Copyright (C) 1998, 1999, 2000 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,25 +17,22 @@     write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,     Boston, MA 02111-1307, USA.  */ -#ifndef _BITS_SIGTHREAD_H  +#ifndef _BITS_SIGTHREAD_H  #define _BITS_SIGTHREAD_H	1  #if !defined _SIGNAL_H && !defined _PTHREAD_H  # error "Never include this file directly.  Use <pthread.h> instead"  #endif -__BEGIN_DECLS -  /* Functions for handling signals. */  /* Modify the signal mask for the calling thread.  The arguments have     the same meaning as for sigprocmask(2). */ -extern int pthread_sigmask __P ((int __how, __const __sigset_t *__newmask, -				 __sigset_t *__oldmask)); +extern int pthread_sigmask (int __how, +			    __const __sigset_t *__restrict __newmask, +			    __sigset_t *__restrict __oldmask)__THROW;  /* Send signal SIGNO to the given thread. */ -extern int pthread_kill __P ((pthread_t __thread, int __signo)); - -__END_DECLS +extern int pthread_kill (pthread_t __thread, int __signo) __THROW;  #endif	/* bits/sigthread.h */ diff --git a/libc/sysdeps/linux/sh/bits/sockaddr.h b/libc/sysdeps/linux/sh/bits/sockaddr.h index 8078963a8..3e1d1312d 100644 --- a/libc/sysdeps/linux/sh/bits/sockaddr.h +++ b/libc/sysdeps/linux/sh/bits/sockaddr.h @@ -1,21 +1,21 @@  /* Definition of `struct sockaddr_*' common members.  Generic/4.2 BSD version. -   Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. +   Copyright (C) 1995,1996,1997,1998,2000,2001 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  /*   * Never include this file directly; use <sys/socket.h> instead. @@ -24,7 +24,6 @@  #ifndef _BITS_SOCKADDR_H  #define _BITS_SOCKADDR_H	1 -__BEGIN_DECLS  /* POSIX.1g specifies this type name for the `sa_family' member.  */  typedef unsigned short int sa_family_t; @@ -38,10 +37,4 @@ typedef unsigned short int sa_family_t;  #define __SOCKADDR_COMMON_SIZE	(sizeof (unsigned short int)) -/* Return the length of a `sockaddr' structure.  */ -#define SA_LEN(_x)	__libc_sa_len((_x)->sa_family) -extern int __libc_sa_len __P ((sa_family_t __af)); - -__END_DECLS -  #endif	/* bits/sockaddr.h */ diff --git a/libc/sysdeps/linux/sh/bits/socket.h b/libc/sysdeps/linux/sh/bits/socket.h index dc2d58cfc..6ad4a5ed9 100644 --- a/libc/sysdeps/linux/sh/bits/socket.h +++ b/libc/sysdeps/linux/sh/bits/socket.h @@ -1,21 +1,21 @@  /* System-specific socket constants and types.  Linux version. -   Copyright (C) 1991,92,94,95,96,97,98,99 Free Software Foundation, Inc. +   Copyright (C) 1991,1992,1994-1999,2000,2001 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #ifndef __BITS_SOCKET_H  #define __BITS_SOCKET_H @@ -32,7 +32,10 @@  #include <sys/types.h>  /* Type for length arguments in socket calls.  */ -typedef unsigned int socklen_t; +#ifndef __socklen_t_defined +typedef __socklen_t socklen_t; +# define __socklen_t_defined +#endif  /* Types of sockets.  */  enum __socket_type @@ -82,7 +85,10 @@ enum __socket_type  #define	PF_ECONET	19	/* Acorn Econet.  */  #define	PF_ATMSVC	20	/* ATM SVCs.  */  #define	PF_SNA		22	/* Linux SNA Project */ -#define PF_IRDA		23	/* IRDA sockets.  */ +#define	PF_IRDA		23	/* IRDA sockets.  */ +#define	PF_PPPOX	24	/* PPPoX sockets.  */ +#define	PF_WANPIPE	25	/* Wanpipe API sockets.  */ +#define	PF_BLUETOOTH	31	/* Bluetooth sockets.  */  #define	PF_MAX		32	/* For now..  */  /* Address families.  */ @@ -111,7 +117,10 @@ enum __socket_type  #define	AF_ECONET	PF_ECONET  #define	AF_ATMSVC	PF_ATMSVC  #define	AF_SNA		PF_SNA -#define AF_IRDA		PF_IRDA +#define	AF_IRDA		PF_IRDA +#define	AF_PPPOX	PF_PPPOX +#define	AF_WANPIPE	PF_WANPIPE +#define	AF_BLUETOOTH	PF_BLUETOOTH  #define	AF_MAX		PF_MAX  /* Socket level values.  Others are defined in the appropriate headers. @@ -152,7 +161,7 @@ struct sockaddr  struct sockaddr_storage    { -    __SOCKADDR_COMMON (__ss_);	/* Address family, etc.  */ +    __SOCKADDR_COMMON (ss_);	/* Address family, etc.  */      __ss_aligntype __ss_align;	/* Force desired alignment.  */      char __ss_padding[_SS_PADSIZE];    }; @@ -188,14 +197,16 @@ enum  #define	MSG_FIN		MSG_FIN      MSG_SYN		= 0x400,  #define	MSG_SYN		MSG_SYN -    MSG_URG		= 0x800, -#define	MSG_URG		MSG_URG +    MSG_CONFIRM		= 0x800, /* Confirm path validity.  */ +#define	MSG_CONFIRM	MSG_CONFIRM      MSG_RST		= 0x1000,  #define	MSG_RST		MSG_RST      MSG_ERRQUEUE	= 0x2000, /* Fetch message from error queue.  */  #define	MSG_ERRQUEUE	MSG_ERRQUEUE -    MSG_NOSIGNAL	= 0x4000  /* Do not generate SIGPIPE.  */ +    MSG_NOSIGNAL	= 0x4000, /* Do not generate SIGPIPE.  */  #define	MSG_NOSIGNAL	MSG_NOSIGNAL +    MSG_MORE		= 0x8000  /* Sender will send more.  */ +#define	MSG_MORE	MSG_MORE    }; @@ -203,14 +214,14 @@ enum     `sendmsg' and received by `recvmsg'.  */  struct msghdr    { -    __ptr_t msg_name;		/* Address to send to/receive from.  */ +    void *msg_name;		/* Address to send to/receive from.  */      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_control;	/* Ancillary data (eg BSD filedesc passing). */ -    size_t msg_controllen;	/* Ancillary data buffer length.  */ +    void *msg_control;		/* Ancillary data (eg BSD filedesc passing). */ +    socklen_t msg_controllen;	/* Ancillary data buffer length.  */      int msg_flags;		/* Flags on received message.  */    }; @@ -222,10 +233,8 @@ struct cmsghdr  				   of cmsghdr structure.  */      int cmsg_level;		/* Originating protocol.  */      int cmsg_type;		/* Protocol specific type.  */ -#if !defined __STRICT_ANSI__ && defined __GNUC__ && __GNUC__ >= 2 -    unsigned char __cmsg_data[0]; /* Ancillary data.  */ +    __extension__ unsigned char __cmsg_data __flexarr; /* Ancillary data.  */      /* XXX Perhaps this should be removed.  */ -#endif    };  /* Ancillary data object manipulation macros.  */ @@ -239,19 +248,19 @@ struct cmsghdr    ((size_t) (mhdr)->msg_controllen >= sizeof (struct cmsghdr)		      \     ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) NULL)  #define CMSG_ALIGN(len) (((len) + sizeof (size_t) - 1) \ -			 & ~(sizeof (size_t) - 1)) +			 & (size_t) ~(sizeof (size_t) - 1))  #define CMSG_SPACE(len) (CMSG_ALIGN (len) \  			 + CMSG_ALIGN (sizeof (struct cmsghdr)))  #define CMSG_LEN(len)   (CMSG_ALIGN (sizeof (struct cmsghdr)) + (len)) -extern struct cmsghdr *__cmsg_nxthdr __P ((struct msghdr *__mhdr, -					   struct cmsghdr *__cmsg)); +extern struct cmsghdr *__cmsg_nxthdr (struct msghdr *__mhdr, +				      struct cmsghdr *__cmsg) __THROW;  #ifdef __USE_EXTERN_INLINES  # ifndef _EXTERN_INLINE  #  define _EXTERN_INLINE extern __inline  # endif  _EXTERN_INLINE struct cmsghdr * -__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg) +__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg) __THROW  {    if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr))      /* The kernel header does this so there may be a reason.  */ @@ -259,10 +268,10 @@ __cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg)    __cmsg = (struct cmsghdr *) ((unsigned char *) __cmsg  			       + CMSG_ALIGN (__cmsg->cmsg_len)); -  if ((unsigned char *) (__cmsg + 1) >= ((unsigned char *) __mhdr->msg_control -					 + __mhdr->msg_controllen) +  if ((unsigned char *) (__cmsg + 1) > ((unsigned char *) __mhdr->msg_control +					+ __mhdr->msg_controllen)        || ((unsigned char *) __cmsg + CMSG_ALIGN (__cmsg->cmsg_len) -	  >= ((unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen))) +	  > ((unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen)))      /* No more entries.  */      return 0;    return __cmsg; diff --git a/libc/sysdeps/linux/sh/bits/stab.def b/libc/sysdeps/linux/sh/bits/stab.def index 48ea231e6..3d54774cf 100644 --- a/libc/sysdeps/linux/sh/bits/stab.def +++ b/libc/sysdeps/linux/sh/bits/stab.def @@ -3,19 +3,19 @@     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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  /* This contains contribution from Cygnus Support.  */ diff --git a/libc/sysdeps/linux/sh/bits/stat.h b/libc/sysdeps/linux/sh/bits/stat.h index c175668a0..f446a91db 100644 --- a/libc/sysdeps/linux/sh/bits/stat.h +++ b/libc/sysdeps/linux/sh/bits/stat.h @@ -1,20 +1,20 @@ -/* Copyright (C) 1992, 1995, 1996, 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1992,95,96,97,98,99,2000,2001 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #ifndef _SYS_STAT_H  # error "Never include <bits/stat.h> directly; use <sys/stat.h> instead." @@ -40,7 +40,7 @@ struct stat  #ifndef __USE_FILE_OFFSET64      __ino_t st_ino;			/* File serial number.	*/  #else -    __ino64_t st_ino;			/* File serial number.	*/ +    __ino_t __st_ino;			/* 32bit file serial number.	*/  #endif      __mode_t st_mode;			/* File mode.  */      __nlink_t st_nlink;			/* Link count.  */ @@ -53,7 +53,7 @@ struct stat  #else      __off64_t st_size;			/* Size of file, in bytes.  */  #endif -    unsigned long int st_blksize;	/* Optimal block size for I/O.  */ +    __blksize_t st_blksize;		/* Optimal block size for I/O.  */  #ifndef __USE_FILE_OFFSET64      __blkcnt_t st_blocks;		/* Number 512-byte blocks allocated. */ @@ -66,25 +66,29 @@ struct stat      unsigned long int __unused2;      __time_t st_ctime;			/* Time of last status change.  */      unsigned long int __unused3; +#ifndef __USE_FILE_OFFSET64      unsigned long int __unused4;      unsigned long int __unused5; +#else +    __ino64_t st_ino;			/* File serial number.	*/ +#endif    };  #ifdef __USE_LARGEFILE64  struct stat64    {      __dev_t st_dev;			/* Device.  */ -    unsigned short int __pad1; +    unsigned int __pad1; -    __ino64_t st_ino;			/* File serial number.	*/ +    __ino_t __st_ino;			/* 32bit file serial number.	*/      __mode_t st_mode;			/* File mode.  */      __nlink_t st_nlink;			/* Link count.  */      __uid_t st_uid;			/* User ID of the file's owner.	*/      __gid_t st_gid;			/* Group ID of the file's group.*/      __dev_t st_rdev;			/* Device number, if device.  */ -    unsigned short int __pad2; +    unsigned int __pad2;      __off64_t st_size;			/* Size of file, in bytes.  */ -    unsigned long int st_blksize;	/* Optimal block size for I/O.  */ +    __blksize_t st_blksize;		/* Optimal block size for I/O.  */      __blkcnt64_t st_blocks;		/* Number 512-byte blocks allocated. */      __time_t st_atime;			/* Time of last access.  */ @@ -93,8 +97,7 @@ struct stat64      unsigned long int __unused2;      __time_t st_ctime;			/* Time of last status change.  */      unsigned long int __unused3; -    unsigned long int __unused4; -    unsigned long int __unused5; +    __ino64_t st_ino;			/* File serial number.		*/    };  #endif @@ -112,11 +115,15 @@ struct stat64  #define	__S_IFBLK	0060000	/* Block device.  */  #define	__S_IFREG	0100000	/* Regular file.  */  #define	__S_IFIFO	0010000	/* FIFO.  */ - -/* These don't actually exist on System V, but having them doesn't hurt.  */  #define	__S_IFLNK	0120000	/* Symbolic link.  */  #define	__S_IFSOCK	0140000	/* Socket.  */ +/* POSIX.1b objects.  Note that these macros always evaluate to zero.  But +   they do it by enforcing the correct use of the macros.  */ +#define __S_TYPEISMQ(buf)  ((buf)->st_mode - (buf)->st_mode) +#define __S_TYPEISSEM(buf) ((buf)->st_mode - (buf)->st_mode) +#define __S_TYPEISSHM(buf) ((buf)->st_mode - (buf)->st_mode) +  /* Protection bits.  */  #define	__S_ISUID	04000	/* Set user ID on execution.  */ diff --git a/libc/sysdeps/linux/sh/bits/statfs.h b/libc/sysdeps/linux/sh/bits/statfs.h index 31ae564b4..78c9bdbbc 100644 --- a/libc/sysdeps/linux/sh/bits/statfs.h +++ b/libc/sysdeps/linux/sh/bits/statfs.h @@ -1,20 +1,20 @@ -/* Copyright (C) 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998, 2000 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #ifndef _SYS_STATFS_H  # error "Never include <bits/statfs.h> directly; use <sys/statfs.h> instead." @@ -59,3 +59,6 @@ struct statfs64      int f_spare[6];    };  #endif + +/* Tell code we have this member.  */ +#define _STATFS_F_NAMELEN diff --git a/libc/sysdeps/linux/sh/bits/statvfs.h b/libc/sysdeps/linux/sh/bits/statvfs.h index fc6380684..32e03f31e 100644 --- a/libc/sysdeps/linux/sh/bits/statvfs.h +++ b/libc/sysdeps/linux/sh/bits/statvfs.h @@ -1,26 +1,26 @@ -/* Copyright (C) 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998, 2000, 2001 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #ifndef _SYS_STATVFS_H  # error "Never include <bits/statvfs.h> directly; use <sys/statvfs.h> instead."  #endif -#include <bits/types.h>  /* For __fsid_t, __fsblkcnt_t and __fsfilcnt_t.  */ +#include <bits/types.h>  /* For __fsblkcnt_t and __fsfilcnt_t.  */  struct statvfs    { @@ -41,11 +41,13 @@ struct statvfs      __fsfilcnt64_t f_ffree;      __fsfilcnt64_t f_favail;  #endif -    __fsid_t f_fsid; +    unsigned long int f_fsid; +    int __f_unused;      unsigned long int f_flag;      unsigned long int f_namemax; -    int f_spare[6]; +    int __f_spare[6];    }; +#define _STATVFSBUF_F_UNUSED  #ifdef __USE_LARGEFILE64  struct statvfs64 @@ -58,10 +60,11 @@ struct statvfs64      __fsfilcnt64_t f_files;      __fsfilcnt64_t f_ffree;      __fsfilcnt64_t f_favail; -    __fsid_t f_fsid; +    unsigned long int f_fsid; +    int __f_unused;      unsigned long int f_flag;      unsigned long int f_namemax; -    int f_spare[6]; +    int __f_spare[6];    };  #endif @@ -73,22 +76,24 @@ enum  #define ST_RDONLY	ST_RDONLY    ST_NOSUID = 2,		/* Ignore suid and sgid bits.  */  #define ST_NOSUID	ST_NOSUID +#ifdef __USE_GNU    ST_NODEV = 4,			/* Disallow access to device special files.  */ -#define ST_NODEV	ST_NODEV +# define ST_NODEV	ST_NODEV    ST_NOEXEC = 8,		/* Disallow program execution.  */ -#define ST_NOEXEC	ST_NOEXEC +# define ST_NOEXEC	ST_NOEXEC    ST_SYNCHRONOUS = 16,		/* Writes are synced at once.  */ -#define ST_SYNCHRONOUS	ST_SYNCHRONOUS +# define ST_SYNCHRONOUS	ST_SYNCHRONOUS    ST_MANDLOCK = 64,		/* Allow mandatory locks on an FS.  */ -#define ST_MANDLOCK	ST_MANDLOCK +# define ST_MANDLOCK	ST_MANDLOCK    ST_WRITE = 128,		/* Write on file/directory/symlink.  */ -#define ST_WRITE	ST_WRITE +# define ST_WRITE	ST_WRITE    ST_APPEND = 256,		/* Append-only file.  */ -#define ST_APPEND	ST_APPEND +# define ST_APPEND	ST_APPEND    ST_IMMUTABLE = 512,		/* Immutable file.  */ -#define ST_IMMUTABLE	ST_IMMUTABLE +# define ST_IMMUTABLE	ST_IMMUTABLE    ST_NOATIME = 1024,		/* Do not update access times.  */ -#define ST_NOATIME	ST_NOATIME +# define ST_NOATIME	ST_NOATIME    ST_NODIRATIME			/* Do not update directory access times.  */ -#define ST_NODIRATIME	ST_NODIRATIME +# define ST_NODIRATIME	ST_NODIRATIME +#endif	/* Use GNU.  */  }; diff --git a/libc/sysdeps/linux/sh/bits/stdio-lock.h b/libc/sysdeps/linux/sh/bits/stdio-lock.h index edc69f6cf..a1893c8bd 100644 --- a/libc/sysdeps/linux/sh/bits/stdio-lock.h +++ b/libc/sysdeps/linux/sh/bits/stdio-lock.h @@ -1,5 +1,5 @@  /* Thread package specific definitions of stream lock type. -   Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. +   Copyright (C) 1996, 1997, 1998, 2000, 2001 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 @@ -26,7 +26,18 @@ typedef pthread_mutex_t _IO_lock_t;  #define _IO_cleanup_region_start(_fct, _fp) \ -     __libc_cleanup_region_start (_fct, _fp) +  { struct _pthread_cleanup_buffer _buffer;				      \ +    int _avail = (((_fp)->_flags & _IO_USER_LOCK) == 0			      \ +		  && _pthread_cleanup_push_defer != NULL);		      \ +    if (_avail) {							      \ +      _pthread_cleanup_push_defer (&_buffer, (_fct), (_fp));		      \ +    } +#define _IO_cleanup_region_start_noarg(_fct) \ +  { struct _pthread_cleanup_buffer _buffer;				      \ +    int _avail = _pthread_cleanup_push_defer != NULL;			      \ +    if (_avail) {							      \ +      _pthread_cleanup_push_defer (&_buffer, (_fct), NULL);		      \ +    }  #define _IO_cleanup_region_end(_doit) \       __libc_cleanup_region_end (_doit)  #define _IO_lock_init(_name) \ diff --git a/libc/sysdeps/linux/sh/bits/stdio.h b/libc/sysdeps/linux/sh/bits/stdio.h index c58643461..118118adc 100644 --- a/libc/sysdeps/linux/sh/bits/stdio.h +++ b/libc/sysdeps/linux/sh/bits/stdio.h @@ -1,20 +1,21 @@  /* Optimizing macros and inline functions for stdio functions. -   Copyright (C) 198 Free Software Foundation, Inc. +   Copyright (C) 1998, 2000, 2001 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #ifndef _STDIO_H  # error "Never include <bits/stdio.h> directly; use <stdio.h> instead." @@ -30,14 +31,14 @@  #ifdef __USE_EXTERN_INLINES  /* Write formatted output to stdout from argument list ARG.  */  __STDIO_INLINE int -vprintf (__const char *__restrict __fmt, _G_va_list __arg) +vprintf (__const char *__restrict __fmt, _G_va_list __arg) __THROW  {    return vfprintf (stdout, __fmt, __arg);  }  /* Read a character from stdin.  */  __STDIO_INLINE int -getchar (void) +getchar (void) __THROW  {    return _IO_getc (stdin);  } @@ -46,14 +47,14 @@ getchar (void)  # if defined __USE_POSIX || defined __USE_MISC  /* This is defined in POSIX.1:1996.  */  __STDIO_INLINE int -getc_unlocked (FILE *__fp) +getc_unlocked (FILE *__fp) __THROW  {    return _IO_getc_unlocked (__fp);  }  /* This is defined in POSIX.1:1996.  */  __STDIO_INLINE int -getchar_unlocked (void) +getchar_unlocked (void) __THROW  {    return _IO_getc_unlocked (stdin);  } @@ -62,7 +63,7 @@ getchar_unlocked (void)  /* Write a character to stdout.  */  __STDIO_INLINE int -putchar (int __c) +putchar (int __c) __THROW  {    return _IO_putc (__c, stdout);  } @@ -71,7 +72,7 @@ putchar (int __c)  # ifdef __USE_MISC  /* Faster version when locking is not necessary.  */  __STDIO_INLINE int -fputc_unlocked (int __c, FILE *__stream) +fputc_unlocked (int __c, FILE *__stream) __THROW  {    return _IO_putc_unlocked (__c, __stream);  } @@ -81,14 +82,14 @@ fputc_unlocked (int __c, FILE *__stream)  # if defined __USE_POSIX || defined __USE_MISC  /* This is defined in POSIX.1:1996.  */  __STDIO_INLINE int -putc_unlocked (int __c, FILE *__stream) +putc_unlocked (int __c, FILE *__stream) __THROW  {    return _IO_putc_unlocked (__c, __stream);  }  /* This is defined in POSIX.1:1996.  */  __STDIO_INLINE int -putchar_unlocked (int __c) +putchar_unlocked (int __c) __THROW  {    return _IO_putc_unlocked (__c, stdout);  } @@ -98,7 +99,7 @@ putchar_unlocked (int __c)  # ifdef	__USE_GNU  /* Like `getdelim', but reads up to a newline.  */  __STDIO_INLINE _IO_ssize_t -getline (char **__lineptr, size_t *__n, FILE *__stream) +getline (char **__lineptr, size_t *__n, FILE *__stream) __THROW  {    return __getdelim (__lineptr, __n, '\n', __stream);  } @@ -108,14 +109,14 @@ getline (char **__lineptr, size_t *__n, FILE *__stream)  # ifdef __USE_MISC  /* Faster versions when locking is not required.  */  __STDIO_INLINE int -feof_unlocked (FILE *__stream) +feof_unlocked (FILE *__stream) __THROW  {    return _IO_feof_unlocked (__stream);  }  /* Faster versions when locking is not required.  */  __STDIO_INLINE int -ferror_unlocked (FILE *__stream) +ferror_unlocked (FILE *__stream) __THROW  {    return _IO_ferror_unlocked (__stream);  } diff --git a/libc/sysdeps/linux/sh/bits/stdio_lim.h b/libc/sysdeps/linux/sh/bits/stdio_lim.h index 9787b4358..c35ee601b 100644 --- a/libc/sysdeps/linux/sh/bits/stdio_lim.h +++ b/libc/sysdeps/linux/sh/bits/stdio_lim.h @@ -1,29 +1,29 @@ -/* Copyright (C) 1994, 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1994, 1997, 1998, 1999 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */ -#if !defined _STDIO_H && !defined __need_FOPEN_MAX +#if !defined _STDIO_H && !defined __need_FOPEN_MAX && !defined __need_IOV_MAX  # error "Never include <bits/stdio_lim.h> directly; use <stdio.h> instead."  #endif  #ifdef _STDIO_H  # define L_tmpnam 20  # define TMP_MAX 238328 -# define FILENAME_MAX 255 +# define FILENAME_MAX 4095  # ifdef __USE_POSIX  #  define L_ctermid 9 @@ -33,5 +33,9 @@  #if defined __need_FOPEN_MAX || defined _STDIO_H  # undef  FOPEN_MAX -# define FOPEN_MAX 256  +# define FOPEN_MAX 16 +#endif + +#if defined __need_IOV_MAX && !defined IOV_MAX +# define IOV_MAX 1024  #endif diff --git a/libc/sysdeps/linux/sh/bits/string.h b/libc/sysdeps/linux/sh/bits/string.h index 0025aa666..ad68b038b 100644 --- a/libc/sysdeps/linux/sh/bits/string.h +++ b/libc/sysdeps/linux/sh/bits/string.h @@ -1,22 +1,12 @@ -/* SH specific definitions for string functions. -   Copyright (C) 2000 Free Software Foundation, Inc. -   This file is part of the GNU C Library. +/* This file should provide inline versions of string functions. -   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. +   Surround GCC-specific parts with #ifdef __GNUC__, and use `extern __inline'. -   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. +   This file should define __STRING_INLINES if functions are actually defined +   as inlines.  */ -   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 _BITS_STRING_H +#define _BITS_STRING_H	1 -#define _HAVE_STRING_ARCH_strcpy 1 -#define _HAVE_STRING_ARCH_stpcpy 1 -#define _HAVE_STRING_ARCH_mempcpy 1 + +#endif /* bits/string.h */ diff --git a/libc/sysdeps/linux/sh/bits/string2.h b/libc/sysdeps/linux/sh/bits/string2.h index 9399f35a4..213ab2e51 100644 --- a/libc/sysdeps/linux/sh/bits/string2.h +++ b/libc/sysdeps/linux/sh/bits/string2.h @@ -1,28 +1,28 @@  /* Machine-independant string function optimizations. -   Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc. +   Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.     This file is part of the GNU C Library.     Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.     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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #ifndef _STRING_H  # error "Never use <bits/string2.h> directly; include <string.h> instead."  #endif -#ifndef __NO_STRING_INLINES +#if !defined __NO_STRING_INLINES && !defined __BOUNDED_POINTERS__  /* Unlike the definitions in the header <bits/string.h> the     definitions contained here are not optimized down to assembler @@ -186,8 +186,7 @@ __STRING2_COPY_TYPE (8);  /* GCC optimizes memset(s, 0, n) but not bzero(s, n).     The optimization is broken before EGCS 1.1.  */ -# if defined __GNUC__ \ -     && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 90)) +# if __GNUC_PREREQ (2, 91)  #  define __bzero(s, n) __builtin_memset (s, '\0', n)  # endif @@ -209,8 +208,8 @@ __STRING2_COPY_TYPE (8);  #  if _STRING_ARCH_unaligned  #   define __mempcpy_args(src) \ -     ((char *) (src))[0], ((char *) (src))[2], ((char *) (src))[4],	      \ -     ((char *) (src))[6],						      \ +     ((__const char *) (src))[0], ((__const char *) (src))[2],		      \ +     ((__const char *) (src))[4], ((__const char *) (src))[6],		      \       __extension__ __STRING2_SMALL_GET16 (src, 0),			      \       __extension__ __STRING2_SMALL_GET16 (src, 4),			      \       __extension__ __STRING2_SMALL_GET32 (src, 0),			      \ @@ -369,7 +368,7 @@ __mempcpy_small (void *__dest, char __src1,  /* Return pointer to C in S.  */  #ifndef _HAVE_STRING_ARCH_strchr -extern __ptr_t __rawmemchr (const __ptr_t __s, int __c); +extern void *__rawmemchr (const void *__s, int __c);  # define strchr(s, c) \    (__extension__ (__builtin_constant_p (c) && (c) == '\0'		      \  		  ? (char *) __rawmemchr (s, c)				      \ @@ -699,7 +698,7 @@ __stpcpy_small (char *__dest,  /* Copy no more than N characters of SRC to DEST.  */  #ifndef _HAVE_STRING_ARCH_strncpy -# if defined _HAVE_STRING_ARCH_memset && defined _HAVE_STRING_ARCH_mempcpy +# if defined _USE_STRING_ARCH_memset && defined _USE_STRING_ARCH_mempcpy  #  define strncpy(dest, src, n) \    (__extension__ ({ char *__dest = (dest);				      \  		    __builtin_constant_p (src) && __builtin_constant_p (n)    \ @@ -722,13 +721,14 @@ __stpcpy_small (char *__dest,  /* Append no more than N characters from SRC onto DEST.  */  #ifndef _HAVE_STRING_ARCH_strncat -# ifdef _HAVE_STRING_ARCH_strchr +# ifdef _USE_STRING_ARCH_strchr  #  define strncat(dest, src, n) \    (__extension__ ({ char *__dest = (dest);				      \  		    __builtin_constant_p (src) && __builtin_constant_p (n)    \  		    ? (strlen (src) < ((size_t) (n))			      \  		       ? strcat (__dest, src)				      \ -		       : (memcpy (strchr (__dest, '\0'), src, n), __dest))    \ +		       : (*((char *) __mempcpy (strchr (__dest, '\0'),	      \ +						src, n)) = '\0', __dest))     \  		    : strncat (dest, src, n); }))  # else  #  define strncat(dest, src, n) \ @@ -915,7 +915,7 @@ __strcspn_c3 (__const char *__s, char __reject1, char __reject2,    ({ char __a0, __a1, __a2;						      \       (__builtin_constant_p (accept) && __string2_1bptr_p (accept)	      \        ? ((__a0 = ((__const char *) (accept))[0], __a0 == '\0')		      \ -	 ? 0								      \ +	 ? ((void) (s), 0)						      \  	 : ((__a1 = ((__const char *) (accept))[1], __a1 == '\0')	      \  	    ? __strspn_c1 (s, __a0)					      \  	    : ((__a2 = ((__const char *) (accept))[2], __a2 == '\0')	      \ @@ -970,7 +970,7 @@ __strspn_c3 (__const char *__s, char __accept1, char __accept2, char __accept3)    ({ char __a0, __a1, __a2;						      \       (__builtin_constant_p (accept) && __string2_1bptr_p (accept)	      \        ? ((__a0 = ((__const char  *) (accept))[0], __a0 == '\0')		      \ -	 ? NULL								      \ +	 ? ((void) (s), NULL)						      \  	 : ((__a1 = ((__const char *) (accept))[1], __a1 == '\0')	      \  	    ? strchr (s, __a0)						      \  	    : ((__a2 = ((__const char *) (accept))[2], __a2 == '\0')	      \ @@ -980,10 +980,10 @@ __strspn_c3 (__const char *__s, char __accept1, char __accept2, char __accept3)  		  : strpbrk (s, accept)))))				      \        : strpbrk (s, accept)); }) -__STRING_INLINE char *__strpbrk_c2 (__const char *__s, char __accept1, -				     char __accept2); +__STRING_INLINE char *__strpbrk_c2 (__const char *__s, int __accept1, +				     int __accept2);  __STRING_INLINE char * -__strpbrk_c2 (__const char *__s, char __accept1, char __accept2) +__strpbrk_c2 (__const char *__s, int __accept1, int __accept2)  {    /* Please note that __accept1 and __accept2 never can be '\0'.  */    while (*__s != '\0' && *__s != __accept1 && *__s != __accept2) @@ -991,11 +991,11 @@ __strpbrk_c2 (__const char *__s, char __accept1, char __accept2)    return *__s == '\0' ? NULL : (char *) (size_t) __s;  } -__STRING_INLINE char *__strpbrk_c3 (__const char *__s, char __accept1, -				     char __accept2, char __accept3); +__STRING_INLINE char *__strpbrk_c3 (__const char *__s, int __accept1, +				     int __accept2, int __accept3);  __STRING_INLINE char * -__strpbrk_c3 (__const char *__s, char __accept1, char __accept2, -	      char __accept3) +__strpbrk_c3 (__const char *__s, int __accept1, int __accept2, +	      int __accept3)  {    /* Please note that __accept1 to __accept3 never can be '\0'.  */    while (*__s != '\0' && *__s != __accept1 && *__s != __accept2 @@ -1006,8 +1006,9 @@ __strpbrk_c3 (__const char *__s, char __accept1, char __accept2,  #endif -/* Find the first occurrence of NEEDLE in HAYSTACK.  */ -#ifndef _HAVE_STRING_ARCH_strstr +/* Find the first occurrence of NEEDLE in HAYSTACK.  Newer gcc versions +   do this itself.  */ +#if !defined _HAVE_STRING_ARCH_strstr && !__GNUC_PREREQ (2, 97)  # define strstr(haystack, needle) \    (__extension__ (__builtin_constant_p (needle) && __string2_1bptr_p (needle) \  		  ? (((__const char *) (needle))[0] == '\0'		      \ @@ -1189,6 +1190,7 @@ __strsep_g (char **__s, __const char *__reject)  # ifndef _HAVE_STRING_ARCH_strdup +extern char *__strdup (__const char *__string) __THROW __attribute_malloc__;  #  define __strdup(s) \    (__extension__ (__builtin_constant_p (s) && __string2_1bptr_p (s)	      \  		  ? (((__const char *) (s))[0] == '\0'			      \ @@ -1205,6 +1207,34 @@ __strsep_g (char **__s, __const char *__reject)  #  endif  # endif +# ifndef _HAVE_STRING_ARCH_strndup + +extern char *__strndup (__const char *__string, size_t __n) +     __THROW __attribute_malloc__; +#  define __strndup(s, n) \ +  (__extension__ (__builtin_constant_p (s) && __string2_1bptr_p (s)	      \ +		  ? (((__const char *) (s))[0] == '\0'			      \ +		     ? (char *) calloc (1, 1)				      \ +		     : ({ size_t __len = strlen (s) + 1;		      \ +			  size_t __n = (n);				      \ +			  char *__retval;				      \ +			  if (__n < __len)				      \ +			    __len = __n;				      \ +			  __retval = (char *) malloc (__len);		      \ +			  if (__retval != NULL)				      \ +			    {						      \ +			      __retval[__len - 1] = '\0';		      \ +			      __retval = (char *) memcpy (__retval, s,	      \ +							  __len - 1);	      \ +			    }						      \ +			  __retval; }))					      \ +		  : __strndup ((s), (n)))) + +#  ifdef __USE_GNU +#   define strndup(s, n) __strndup ((s), (n)) +#  endif +# endif +  #endif /* Use misc. or use GNU.  */  #ifndef _FORCE_INLINES diff --git a/libc/sysdeps/linux/sh/bits/stropts.h b/libc/sysdeps/linux/sh/bits/stropts.h index ed807473c..21538c31d 100644 --- a/libc/sysdeps/linux/sh/bits/stropts.h +++ b/libc/sysdeps/linux/sh/bits/stropts.h @@ -1,20 +1,20 @@ -/* Copyright (C) 1998, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1998, 1999, 2000 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #ifndef _BITS_STROPTS_H  #define _BITS_STROPTS_H	1 @@ -61,7 +61,7 @@  				   of a STREAMS pipe.  */  #define I_RECVFD    (__SID |14) /* Non-EFT definition.  */  #define I_SWROPT    (__SID |19) /* Set the write mode.  */ -#define I_GWRSET    (__SID |20) /* Return the current write mode setting.  */ +#define I_GWROPT    (__SID |20) /* Return the current write mode setting.  */  #define I_LIST	    (__SID |21) /* List all the module names on the STREAM, up  				   to and including the topmost driver name. */  #define I_PLINK	    (__SID |22) /* Connect two STREAMs with a persistent @@ -91,7 +91,9 @@  #define FLUSHR		0x01	/* Flush read queues.  */  #define FLUSHW		0x02	/* Flush write queues.  */  #define FLUSHRW		0x03	/* Flush read and write queues.  */ -#define FLUSHBAND	0x04	/* Flush only specified band.  */ +#ifdef __USE_GNU +# define FLUSHBAND	0x04	/* Flush only specified band.  */ +#endif  /* Possible arguments for `I_SETSIG'.  */  #define S_INPUT		0x0001	/* A message, other than a high-priority @@ -129,13 +131,17 @@  #define RPROTNORM	0x0010	/* Fail `read' with EBADMSG if a message  				   containing a control part is at the front  				   of the STREAM head read queue.  */ -#define RPROTMASK	0x001C	/* The RPROT bits */ +#ifdef __USE_GNU +# define RPROTMASK	0x001C	/* The RPROT bits */ +#endif  /* Possible mode for `I_SWROPT'.  */  #define SNDZERO		0x001	/* Send a zero-length message downstream when a  				   `write' of 0 bytes occurs.  */ -#define	SNDPIPE		0x002	/* Send SIGPIPE on write and putmsg if +#ifdef __USE_GNU +# define SNDPIPE	0x002	/* Send SIGPIPE on write and putmsg if  				   sd_werror is set.  */ +#endif  /* Arguments for `I_ATMARK'.  */  #define ANYMARK		0x01	/* Check if the message is marked.  */ @@ -143,8 +149,10 @@  				   on the queue.  */  /* Argument for `I_UNLINK'.  */ -#define MUXID_ALL	(-1)	/* Unlink all STREAMs linked to the STREAM +#ifdef __USE_GNU +# define MUXID_ALL	(-1)	/* Unlink all STREAMs linked to the STREAM  				   associated with `fildes'.  */ +#endif  /* Macros for `getmsg', `getpmsg', `putmsg' and `putpmsg'.  */ @@ -176,14 +184,14 @@ struct strpeek    {      struct strbuf ctlbuf;      struct strbuf databuf; -    __t_uscalar_t flags;		/* UnixWare/Solaris compatibility.  */ +    t_uscalar_t flags;			/* UnixWare/Solaris compatibility.  */    };  struct strfdinsert    {      struct strbuf ctlbuf;      struct strbuf databuf; -    __t_uscalar_t flags;		/* UnixWare/Solaris compatibility.  */ +    t_uscalar_t flags;			/* UnixWare/Solaris compatibility.  */      int fildes;      int offset;    }; @@ -199,9 +207,9 @@ struct strioctl  struct strrecvfd    {      int fd; -    __uid_t uid; -    __gid_t gid; -    char fill[8];			/* UnixWare/Solaris compatibility */ +    uid_t uid; +    gid_t gid; +    char __fill[8];			/* UnixWare/Solaris compatibility */    }; diff --git a/libc/sysdeps/linux/sh/bits/syscalls.h b/libc/sysdeps/linux/sh/bits/syscalls.h index 31db04f84..9759f0b4a 100644 --- a/libc/sysdeps/linux/sh/bits/syscalls.h +++ b/libc/sysdeps/linux/sh/bits/syscalls.h @@ -1,4 +1,106 @@ +/* This file is based on the asm/unistd.h kernel header file. + * Including asm/unistd.h is hereby officially forbidden.   + * Don't do it.  It is bad for you.  */  + +#include <features.h> + +/* FIXME: perhaps sh needs separate PIC syscalls? */  + + +#define __syscall_return(type, res) \ +do { \ +	if ((unsigned long)(res) >= (unsigned long)(-125)) { \ +	/* Avoid using "res" which is declared to be in register r0; \ +	   errno might expand to a function call and clobber it.  */ \ +		int __err = -(res); \ +		errno = __err; \ +		res = -1; \ +	} \ +	return (type) (res); \ +} while (0) + +/* XXX - _foo needs to be __foo, while __NR_bar could be _NR_bar. */ +#define _syscall0(type,name) \ +type name(void) \ +{ \ +register long __sc0 __asm__ ("r3") = __NR_##name; \ +__asm__ __volatile__ ("trapa	#0x10" \ +	: "=z" (__sc0) \ +	: "0" (__sc0) \ +	: "memory" ); \ +__syscall_return(type,__sc0); \ +} + +#define _syscall1(type,name,type1,arg1) \ +type name(type1 arg1) \ +{ \ +register long __sc0 __asm__ ("r3") = __NR_##name; \ +register long __sc4 __asm__ ("r4") = (long) arg1; \ +__asm__ __volatile__ ("trapa	#0x11" \ +	: "=z" (__sc0) \ +	: "0" (__sc0), "r" (__sc4) \ +	: "memory"); \ +__syscall_return(type,__sc0); \ +} + +#define _syscall2(type,name,type1,arg1,type2,arg2) \ +type name(type1 arg1,type2 arg2) \ +{ \ +register long __sc0 __asm__ ("r3") = __NR_##name; \ +register long __sc4 __asm__ ("r4") = (long) arg1; \ +register long __sc5 __asm__ ("r5") = (long) arg2; \ +__asm__ __volatile__ ("trapa	#0x12" \ +	: "=z" (__sc0) \ +	: "0" (__sc0), "r" (__sc4), "r" (__sc5) \ +	: "memory"); \ +__syscall_return(type,__sc0); \ +} + +#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \ +type name(type1 arg1,type2 arg2,type3 arg3) \ +{ \ +register long __sc0 __asm__ ("r3") = __NR_##name; \ +register long __sc4 __asm__ ("r4") = (long) arg1; \ +register long __sc5 __asm__ ("r5") = (long) arg2; \ +register long __sc6 __asm__ ("r6") = (long) arg3; \ +__asm__ __volatile__ ("trapa	#0x13" \ +	: "=z" (__sc0) \ +	: "0" (__sc0), "r" (__sc4), "r" (__sc5), "r" (__sc6) \ +	: "memory"); \ +__syscall_return(type,__sc0); \ +} + +#define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \ +type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4) \ +{ \ +register long __sc0 __asm__ ("r3") = __NR_##name; \ +register long __sc4 __asm__ ("r4") = (long) arg1; \ +register long __sc5 __asm__ ("r5") = (long) arg2; \ +register long __sc6 __asm__ ("r6") = (long) arg3; \ +register long __sc7 __asm__ ("r7") = (long) arg4; \ +__asm__ __volatile__ ("trapa	#0x14" \ +	: "=z" (__sc0) \ +	: "0" (__sc0), "r" (__sc4), "r" (__sc5), "r" (__sc6),  \ +	  "r" (__sc7) \ +	: "memory" ); \ +__syscall_return(type,__sc0); \ +} + +#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5) \ +type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) \ +{ \ +register long __sc3 __asm__ ("r3") = __NR_##name; \ +register long __sc4 __asm__ ("r4") = (long) arg1; \ +register long __sc5 __asm__ ("r5") = (long) arg2; \ +register long __sc6 __asm__ ("r6") = (long) arg3; \ +register long __sc7 __asm__ ("r7") = (long) arg4; \ +register long __sc0 __asm__ ("r0") = (long) arg5; \ +__asm__ __volatile__ ("trapa	#0x15" \ +	: "=z" (__sc0) \ +	: "0" (__sc0), "r" (__sc4), "r" (__sc5), "r" (__sc6), "r" (__sc7),  \ +	  "r" (__sc3) \ +	: "memory" ); \ +__syscall_return(type,__sc0); \ +} -/* not much needed here unless you want some special */ -#include <asm/unistd.h> diff --git a/libc/sysdeps/linux/sh/bits/termios.h b/libc/sysdeps/linux/sh/bits/termios.h index a5ba1d258..887b309ad 100644 --- a/libc/sysdeps/linux/sh/bits/termios.h +++ b/libc/sysdeps/linux/sh/bits/termios.h @@ -3,19 +3,19 @@     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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #ifndef _TERMIOS_H  # error "Never include <bits/termios.h> directly; use <termios.h> instead." @@ -165,6 +165,7 @@ struct termios  #define  B3000000 0010015  #define  B3500000 0010016  #define  B4000000 0010017 +#define __MAX_BAUD B4000000  #ifdef __USE_MISC  # define CIBAUD	  002003600000		/* input baud rate (not used) */  # define CRTSCTS  020000000000		/* flow control */ diff --git a/libc/sysdeps/linux/sh/bits/time.h b/libc/sysdeps/linux/sh/bits/time.h index 274d61677..2a6873f00 100644 --- a/libc/sysdeps/linux/sh/bits/time.h +++ b/libc/sysdeps/linux/sh/bits/time.h @@ -1,21 +1,21 @@  /* System-dependent timing definitions.  Linux version. -   Copyright (C) 1996, 1997 Free Software Foundation, Inc. +   Copyright (C) 1996, 1997, 1999, 2000, 2001 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  /*   * Never include this file directly; use <time.h> instead. @@ -31,18 +31,28 @@  /* CAE XSH, Issue 4, Version 2: <time.h>     The value of CLOCKS_PER_SEC is required to be 1 million on all     XSI-conformant systems. */ -#  define CLOCKS_PER_SEC  1000000 +#  define CLOCKS_PER_SEC  1000000l -#  ifndef __STRICT_ANSI__ +#  if !defined __STRICT_ANSI__ && !defined __USE_XOPEN2K  /* Even though CLOCKS_PER_SEC has such a strange value CLK_TCK     presents the real value for clock ticks per second for the system.  */ -#   define CLK_TCK 100 +#   include <bits/types.h> +extern long int __sysconf (int); +#   define CLK_TCK ((__clock_t) __sysconf (2))	/* 2 is _SC_CLK_TCK */ +#  endif + +#  ifdef __USE_POSIX199309 +/* Identifier for system-wide realtime clock.  */ +#   define CLOCK_REALTIME	0 + +/* Flag to indicate time is absolute.  */ +#   define TIMER_ABSTIME	1  #  endif  # endif	/* bits/time.h */  #endif -#ifdef __need_timeval  +#ifdef __need_timeval  # undef __need_timeval  # ifndef _STRUCT_TIMEVAL  #  define _STRUCT_TIMEVAL	1 @@ -53,7 +63,7 @@  struct timeval    {      __time_t tv_sec;		/* Seconds.  */ -    __time_t tv_usec;		/* Microseconds.  */ +    __suseconds_t tv_usec;	/* Microseconds.  */    };  # endif	/* struct timeval */ -#endif	/* need timeval */  +#endif	/* need timeval */ diff --git a/libc/sysdeps/linux/sh/bits/types.h b/libc/sysdeps/linux/sh/bits/types.h index 2b6504d91..bdda9388a 100644 --- a/libc/sysdeps/linux/sh/bits/types.h +++ b/libc/sysdeps/linux/sh/bits/types.h @@ -1,20 +1,20 @@ -/* Copyright (C) 1991,92,94,95,96,97,98,99 Free Software Foundation, Inc. +/* Copyright (C) 1991,92,1994-1999,2000,2001 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  /*   * Never include this file directly; use <sys/types.h> instead. @@ -81,34 +81,21 @@ typedef struct  typedef int __daddr_t;			/* The type of a disk address.  */  typedef char *__caddr_t;  typedef long int __time_t; +typedef unsigned int __useconds_t; +typedef long int __suseconds_t;  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 long int __fd_mask; +/* Clock ID used in clock and timer functions.  */ +typedef int __clockid_t; -/* Number of descriptors that can fit in an `fd_set'.  */ -#define __FD_SETSIZE	1024 +/* Timer ID returned by `timer_create'.  */ +typedef int __timer_t; -/* It's easier to assume 8-bit bytes than to get CHAR_BIT.  */ -#define __NFDBITS	(8 * sizeof (__fd_mask)) -#define	__FDELT(d)	((d) / __NFDBITS) -#define	__FDMASK(d)	((__fd_mask) 1 << ((d) % __NFDBITS)) -/* fd_set for select and pselect.  */ -typedef struct -  { -    /* XPG4.2 requires this member name.  Otherwise avoid the name -       from the global namespace.  */ -#ifdef __USE_XOPEN -    __fd_mask fds_bits[__FD_SETSIZE / __NFDBITS]; -# define __FDS_BITS(set) ((set)->fds_bits) -#else -    __fd_mask __fds_bits[__FD_SETSIZE / __NFDBITS]; -# define __FDS_BITS(set) ((set)->__fds_bits) -#endif -  } __fd_set; +/* Number of descriptors that can fit in an `fd_set'.  */ +#define __FD_SETSIZE	1024  typedef int __key_t; @@ -117,6 +104,9 @@ typedef int __key_t;  typedef unsigned short int __ipc_pid_t; +/* Type to represent block size.  */ +typedef long int __blksize_t; +  /* Types from the Large File Support interface.  */  /* Type to count number os disk blocks.  */ @@ -132,7 +122,7 @@ typedef __u_long __fsfilcnt_t;  typedef __u_quad_t __fsfilcnt64_t;  /* Type of file serial numbers.  */ -typedef __u_long __ino64_t; +typedef __u_quad_t __ino64_t;  /* Type of file sizes and offsets.  */  typedef __loff_t __off64_t; @@ -144,9 +134,12 @@ typedef unsigned long int __t_uscalar_t;  /* Duplicates info from stdint.h but this is used in unistd.h.  */  typedef int __intptr_t; +/* Duplicate info from sys/socket.h.  */ +typedef unsigned int __socklen_t; +  /* Now add the thread types.  */ -#ifdef __USE_UNIX98 +#if defined __USE_POSIX199506 || defined __USE_UNIX98  # include <bits/pthreadtypes.h>  #endif diff --git a/libc/sysdeps/linux/sh/bits/uio.h b/libc/sysdeps/linux/sh/bits/uio.h index 38ac17baa..84b4805fe 100644 --- a/libc/sysdeps/linux/sh/bits/uio.h +++ b/libc/sysdeps/linux/sh/bits/uio.h @@ -2,19 +2,19 @@     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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #ifndef _SYS_UIO_H  # error "Never include <bits/uio.h> directly; use <sys/uio.h> instead." diff --git a/libc/sysdeps/linux/sh/bits/ustat.h b/libc/sysdeps/linux/sh/bits/ustat.h index 526069a7f..aeafc22a5 100644 --- a/libc/sysdeps/linux/sh/bits/ustat.h +++ b/libc/sysdeps/linux/sh/bits/ustat.h @@ -2,19 +2,19 @@     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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #include <sys/types.h> diff --git a/libc/sysdeps/linux/sh/bits/utmp.h b/libc/sysdeps/linux/sh/bits/utmp.h index d07486e9c..2ed29bbb4 100644 --- a/libc/sysdeps/linux/sh/bits/utmp.h +++ b/libc/sysdeps/linux/sh/bits/utmp.h @@ -1,20 +1,21 @@  /* The `struct utmp' type, describing entries in the utmp file.  GNU version.     Copyright (C) 1993, 1996, 1997, 1998, 1999 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #ifndef _UTMP_H  # error "Never include <bits/utmp.h> directly; use <utmp.h> instead." diff --git a/libc/sysdeps/linux/sh/bits/utmpx.h b/libc/sysdeps/linux/sh/bits/utmpx.h index 74befe59e..99735370b 100644 --- a/libc/sysdeps/linux/sh/bits/utmpx.h +++ b/libc/sysdeps/linux/sh/bits/utmpx.h @@ -1,20 +1,21 @@ -/* Structures and defenitions for the user accounting database.  GNU version. -   Copyright (C) 1997, 1998 Free Software Foundation, Inc. +/* Structures and definitions for the user accounting database.  GNU version. +   Copyright (C) 1997, 1998, 2000, 2001 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #ifndef _UTMPX_H  # error "Never include <bits/utmpx.h> directly; use <utmpx.h> instead." @@ -71,7 +72,9 @@ struct utmpx  /* Values for the `ut_type' field of a `struct utmpx'.  */  #define EMPTY		0	/* No valid user accounting information.  */ -#define RUN_LVL		1	/* The system's runlevel.  */ +#ifdef __USE_GNU +# define RUN_LVL	1	/* The system's runlevel.  */ +#endif  #define BOOT_TIME	2	/* Time of system boot.  */  #define NEW_TIME	3	/* Time after system clock changed.  */  #define OLD_TIME	4	/* Time when system clock changed.  */ diff --git a/libc/sysdeps/linux/sh/bits/utsname.h b/libc/sysdeps/linux/sh/bits/utsname.h index 8f4bf16f5..35e71e3ba 100644 --- a/libc/sysdeps/linux/sh/bits/utsname.h +++ b/libc/sysdeps/linux/sh/bits/utsname.h @@ -2,19 +2,19 @@     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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #ifndef _SYS_UTSNAME_H  # error "Never include <bits/utsname.h> directly; use <sys/utsname.h> instead." diff --git a/libc/sysdeps/linux/sh/bits/waitflags.h b/libc/sysdeps/linux/sh/bits/waitflags.h index afc8b2229..1303c6c36 100644 --- a/libc/sysdeps/linux/sh/bits/waitflags.h +++ b/libc/sysdeps/linux/sh/bits/waitflags.h @@ -3,21 +3,21 @@     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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */ -#ifndef _SYS_WAIT_H +#if !defined _SYS_WAIT_H && !defined _STDLIB_H  # error "Never include <bits/waitflags.h> directly; use <sys/wait.h> instead."  #endif diff --git a/libc/sysdeps/linux/sh/bits/waitstatus.h b/libc/sysdeps/linux/sh/bits/waitstatus.h index 1ec55107f..982c9dbb2 100644 --- a/libc/sysdeps/linux/sh/bits/waitstatus.h +++ b/libc/sysdeps/linux/sh/bits/waitstatus.h @@ -1,23 +1,23 @@  /* Definitions of status bits for `wait' et al. -   Copyright (C) 1992, 1994, 1996, 1997 Free Software Foundation, Inc. +   Copyright (C) 1992, 1994, 1996, 1997, 2000 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */ -#ifndef _SYS_WAIT_H +#if !defined _SYS_WAIT_H && !defined _STDLIB_H  # error "Never include <bits/waitstatus.h> directly; use <sys/wait.h> instead."  #endif diff --git a/libc/sysdeps/linux/sh/bits/wchar.h b/libc/sysdeps/linux/sh/bits/wchar.h new file mode 100644 index 000000000..ef1f56363 --- /dev/null +++ b/libc/sysdeps/linux/sh/bits/wchar.h @@ -0,0 +1,26 @@ +/* wchar_t type related definitions. +   Copyright (C) 2000 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 Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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 +   Lesser General Public License for more details. + +   You should have received a copy of the GNU Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */ + +#ifndef _BITS_WCHAR_H +#define _BITS_WCHAR_H	1 + +#define __WCHAR_MIN	(-2147483647 - 1) +#define __WCHAR_MAX	(2147483647) + +#endif	/* bits/wchar.h */ diff --git a/libc/sysdeps/linux/sh/bits/wordsize.h b/libc/sysdeps/linux/sh/bits/wordsize.h index 62dad0c71..ba643b60a 100644 --- a/libc/sysdeps/linux/sh/bits/wordsize.h +++ b/libc/sysdeps/linux/sh/bits/wordsize.h @@ -2,18 +2,18 @@     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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  #define __WORDSIZE	32 diff --git a/libc/sysdeps/linux/sh/bits/xopen_lim.h b/libc/sysdeps/linux/sh/bits/xopen_lim.h index 9f22e44e2..7f3611860 100644 --- a/libc/sysdeps/linux/sh/bits/xopen_lim.h +++ b/libc/sysdeps/linux/sh/bits/xopen_lim.h @@ -1,20 +1,20 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1999, 2001 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. +   modify it under the terms of the GNU Lesser General Public +   License as published by the Free Software Foundation; either +   version 2.1 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. +   Lesser 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 Lesser General Public +   License along with the GNU C Library; if not, write to the Free +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +   02111-1307 USA.  */  /*   * Never include this file directly; use <limits.h> instead. @@ -30,7 +30,7 @@  #ifndef _XOPEN_LIM_H  #define _XOPEN_LIM_H	1 -#define __need_FOPEN_MAX +#define __need_IOV_MAX  #include <bits/stdio_lim.h>  /* We do not provide fixed values for @@ -51,18 +51,14 @@     PAGE_SIZE	Size of bytes of a page.     PASS_MAX	Maximum number of significant bytes in a password. -*/ - -/* Maximum number of `iovec' structures that one process has available -   for use with `readv' or writev'.  */ -#define IOV_MAX		_XOPEN_IOV_MAX +   We only provide a fixed limit for -/* The number of streams that one process can have open at one time.  */ -#define STREAM_MAX	FOPEN_MAX +   IOV_MAX	Maximum number of `iovec' structures that one process has +		available for use with `readv' or writev'. -/* Maximum number of bytes supported for the name of a time zone.  */ -#define TZNAME_MAX	_POSIX_TZNAME_MAX +   if this is indeed fixed by the underlying system. +*/  /* Maximum number of `iovec' structures that one process has available @@ -93,4 +89,56 @@  /* Default process priority.  */  #define NZERO		20 + +/* Number of bits in a word of type `int'.  */ +#ifdef INT_MAX +# if INT_MAX == 32767 +#  define WORD_BIT	16 +# else +#  if INT_MAX == 2147483647 +#   define WORD_BIT	32 +#  else +/* Safe assumption.  */ +#   define WORD_BIT	64 +#  endif +# endif +#elif defined __INT_MAX__ +# if __INT_MAX__ == 32767 +#  define WORD_BIT	16 +# else +#  if __INT_MAX__ == 2147483647 +#   define WORD_BIT	32 +#  else +/* Safe assumption.  */ +#   define WORD_BIT	64 +#  endif +# endif +#else +# define WORD_BIT	32 +#endif + +/* Number of bits in a word of type `long int'.  */ +#ifdef LONG_MAX +# if LONG_MAX == 2147483647 +#  define LONG_BIT	32 +# else +/* Safe assumption.  */ +#  define LONG_BIT	64 +# endif +#elif defined __LONG_MAX__ +# if __LONG_MAX__ == 2147483647 +#  define LONG_BIT	32 +# else +/* Safe assumption.  */ +#  define LONG_BIT	64 +# endif +#else +# include <bits/wordsize.h> +# if __WORDSIZE == 64 +#  define LONG_BIT	64 +# else +#  define LONG_BIT	32 +# endif +#endif +  #endif /* bits/xopen_lim.h */  | 
