about summary refs log tree commit diff
path: root/sysdeps/unix/sysv
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2002-10-23 23:50:19 +0000
committerRoland McGrath <roland@gnu.org>2002-10-23 23:50:19 +0000
commit3efdabe7624ae0a574d3919cfe9ffcb5bca21692 (patch)
tree0fff21e87bcf8b20c622f1a109f88566df789d2f /sysdeps/unix/sysv
parentb02c687fd362f0a517aac69f4e934d9126e4032a (diff)
downloadglibc-3efdabe7624ae0a574d3919cfe9ffcb5bca21692.tar.gz
glibc-3efdabe7624ae0a574d3919cfe9ffcb5bca21692.tar.xz
glibc-3efdabe7624ae0a574d3919cfe9ffcb5bca21692.zip
* libio/ftello.c (ftello): Use _IO_off64_t for type of POS.
	Check for the result overflowing off_t and fail with EOVERFLOW.
	* libio/ioftell.c (_IO_ftell): Likewise.
	* libio/iofgetpos.c (_IO_new_fgetpos): Likewise.

	* login/logwtmp.c (logwtmp): If sizeof ut_tv != sizeof struct timeval,
	use a temporary timeval on the stack for gettimeofday and copy it.
	* login/logout.c (logout): Likewise.
	Reported by Steven Munroe <sjmunroe@us.ibm.com>.

	* sysdeps/unix/sysv/linux/bits/statfs.h (struct statfs):
	Use __SWORD_TYPE instead of int for member types.
	(struct statfs64): Likewise.
	* sysdeps/unix/sysv/linux/alpha/bits/statfs.h: New file.
	* sysdeps/unix/sysv/linux/s390/bits/statfs.h: New file.
	* sysdeps/unix/sysv/linux/ia64/bits/statfs.h: File removed.
	* sysdeps/unix/sysv/linux/sparc/bits/statfs.h: File removed.
	* sysdeps/unix/sysv/linux/x86_64/bits/statfs.h: File removed.

	* sysdeps/unix/sysv/linux/sparc/bits/statvfs.h: Moved to ...
	* sysdeps/unix/sysv/linux/bits/statvfs.h: ... here.
	(ST_NODIRATIME): Restore fixed value of 2048.
	* sysdeps/unix/sysv/linux/alpha/bits/statvfs.h: File removed.
	* sysdeps/unix/sysv/linux/ia64/bits/statvfs.h: File removed.

	Rearranged <bits/types.h> definitions to reduce duplication.
	* sysdeps/generic/bits/types.h: Rewritten, using macros from
	<bits/wordsize.h> and new header <bits/typesizes.h>.
	* posix/Makefile (headers): Add bits/typesizes.h here.
	* sysdeps/generic/bits/typesizes.h: New file.
	* sysdeps/unix/sysv/linux/alpha/bits/typesizes.h: New file.
	* sysdeps/unix/sysv/linux/sparc/bits/typesizes.h: New file.
	* sysdeps/mach/hurd/bits/typesizes.h: New file.
	* sysdeps/unix/sysv/linux/alpha/bits/types.h: File removed.
	* sysdeps/unix/sysv/linux/bits/types.h: File removed.
	* sysdeps/unix/sysv/linux/ia64/bits/types.h: File removed.
	* sysdeps/unix/sysv/linux/mips/bits/types.h: File removed.
	* sysdeps/unix/sysv/linux/s390/bits/types.h: File removed.
	* sysdeps/unix/sysv/linux/sparc/bits/types.h: File removed.
	* sysdeps/unix/sysv/linux/x86_64/bits/types.h: File removed.
	* posix/sys/types.h [__USE_POSIX199506 || __USE_UNIX98]: Include
	<bits/pthreadtypes.h> here, not in <bits/types.h>.
	* signal/signal.h: Likewise.

	* streams/stropts.h: Include <bits/xtitypes.h>.
	* streams/Makefile (headers): Add bits/xtitypes.h here.
	* sysdeps/generic/bits/xtitypes.h: New file.
	* sysdeps/s390/bits/xtitypes.h: New file.
	* sysdeps/ia64/bits/xtitypes.h: New file.
	* sysdeps/x86_64/bits/xtitypes.h: New file.

	* sysvipc/Makefile (headers): Add bits/ipctypes.h here.
	* sysdeps/generic/bits/ipctypes.h: New file.
	* sysdeps/mips/bits/ipctypes.h: New file.
	* sysdeps/gnu/bits/shm.h: Include <bits/ipctypes.h>.
	* sysdeps/gnu/bits/msq.h: Likewise.
	* sysvipc/sys/ipc.h: Likewise.

2002-10-22  Roland McGrath  <roland@redhat.com>

	* sysdeps/generic/libc-tls.c (_dl_tls_static_used): New variable.
	* sysdeps/generic/ldsodefs.h (struct rtld_global): New member
	`_dl_tls_static_used'.
	(TLS_STATIC_MIN): New macro.
	* elf/dl-reloc.c [USE_TLS] (allocate_static_tls): New function.
	(CHECK_STATIC_TLS): Use it.
Diffstat (limited to 'sysdeps/unix/sysv')
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/statfs.h (renamed from sysdeps/unix/sysv/linux/sparc/bits/statfs.h)22
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/statvfs.h97
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/types.h115
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/typesizes.h65
-rw-r--r--sysdeps/unix/sysv/linux/bits/statfs.h20
-rw-r--r--sysdeps/unix/sysv/linux/bits/statvfs.h9
-rw-r--r--sysdeps/unix/sysv/linux/bits/types.h146
-rw-r--r--sysdeps/unix/sysv/linux/ia64/bits/statfs.h58
-rw-r--r--sysdeps/unix/sysv/linux/ia64/bits/statvfs.h97
-rw-r--r--sysdeps/unix/sysv/linux/ia64/bits/types.h116
-rw-r--r--sysdeps/unix/sysv/linux/mips/bits/types.h145
-rw-r--r--sysdeps/unix/sysv/linux/s390/bits/statfs.h (renamed from sysdeps/unix/sysv/linux/x86_64/bits/statfs.h)38
-rw-r--r--sysdeps/unix/sysv/linux/s390/bits/types.h161
-rw-r--r--sysdeps/unix/sysv/linux/sparc/bits/statvfs.h107
-rw-r--r--sysdeps/unix/sysv/linux/sparc/bits/types.h164
-rw-r--r--sysdeps/unix/sysv/linux/sparc/bits/typesizes.h65
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/bits/types.h185
17 files changed, 181 insertions, 1429 deletions
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/statfs.h b/sysdeps/unix/sysv/linux/alpha/bits/statfs.h
index 6390f1c85c..b8e37e6102 100644
--- a/sysdeps/unix/sysv/linux/sparc/bits/statfs.h
+++ b/sysdeps/unix/sysv/linux/alpha/bits/statfs.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998, 1999, 2000 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
@@ -20,12 +20,12 @@
 # error "Never include <bits/statfs.h> directly; use <sys/statfs.h> instead."
 #endif
 
-#include <bits/types.h>  /* for __fsid_t and __fsblkcnt_t*/
+#include <bits/types.h>  /* for __fsid_t and __fsblkcnt_t.  */
 
 struct statfs
   {
-    long int f_type;
-    long int f_bsize;
+    int f_type;
+    int f_bsize;
 #ifndef __USE_FILE_OFFSET64
     __fsblkcnt_t f_blocks;
     __fsblkcnt_t f_bfree;
@@ -40,25 +40,25 @@ struct statfs
     __fsfilcnt64_t f_ffree;
 #endif
     __fsid_t f_fsid;
-    long int f_namelen;
-    long int f_spare[6];
+    int f_namelen;
+    int f_spare[6];
   };
 
 #ifdef __USE_LARGEFILE64
 struct statfs64
   {
-    long int f_type;
-    long int f_bsize;
+    int f_type;
+    int f_bsize;
     __fsblkcnt64_t f_blocks;
     __fsblkcnt64_t f_bfree;
     __fsblkcnt64_t f_bavail;
     __fsfilcnt64_t f_files;
     __fsfilcnt64_t f_ffree;
     __fsid_t f_fsid;
-    long int f_namelen;
-    long int f_spare[6];
+    int f_namelen;
+    int f_spare[6];
   };
 #endif
 
-/* Tell code we have these members.  */
+/* Tell code we have this member.  */
 #define _STATFS_F_NAMELEN
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/statvfs.h b/sysdeps/unix/sysv/linux/alpha/bits/statvfs.h
deleted file mode 100644
index 16bb895228..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/bits/statvfs.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/* Copyright (C) 1997, 1998, 2000, 2001, 2002 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 _SYS_STATVFS_H
-# error "Never include <bits/statvfs.h> directly; use <sys/statvfs.h> instead."
-#endif
-
-#include <bits/types.h>  /* For __fsblkcnt_t and __fsfilcnt_t.  */
-
-struct statvfs
-  {
-    unsigned long int f_bsize;
-    unsigned long int f_frsize;
-#ifndef __USE_FILE_OFFSET64
-    __fsblkcnt_t f_blocks;
-    __fsblkcnt_t f_bfree;
-    __fsblkcnt_t f_bavail;
-    __fsfilcnt_t f_files;
-    __fsfilcnt_t f_ffree;
-    __fsfilcnt_t f_favail;
-#else
-    __fsblkcnt64_t f_blocks;
-    __fsblkcnt64_t f_bfree;
-    __fsblkcnt64_t f_bavail;
-    __fsfilcnt64_t f_files;
-    __fsfilcnt64_t f_ffree;
-    __fsfilcnt64_t f_favail;
-#endif
-    unsigned long int f_fsid;
-    unsigned long int f_flag;
-    unsigned long int f_namemax;
-    int __f_spare[6];
-  };
-
-#ifdef __USE_LARGEFILE64
-struct statvfs64
-  {
-    unsigned long int f_bsize;
-    unsigned long int f_frsize;
-    __fsblkcnt64_t f_blocks;
-    __fsblkcnt64_t f_bfree;
-    __fsblkcnt64_t f_bavail;
-    __fsfilcnt64_t f_files;
-    __fsfilcnt64_t f_ffree;
-    __fsfilcnt64_t f_favail;
-    unsigned long int f_fsid;
-    unsigned long int f_flag;
-    unsigned long int f_namemax;
-    int __f_spare[6];
-  };
-#endif
-
-/* Definitions for the flag in `f_flag'.  These definitions should be
-   kept in sync with the definitions in <sys/mount.h>.  */
-enum
-{
-  ST_RDONLY = 1,		/* Mount read-only.  */
-#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
-  ST_NOEXEC = 8,		/* Disallow program execution.  */
-# define ST_NOEXEC	ST_NOEXEC
-  ST_SYNCHRONOUS = 16,		/* Writes are synced at once.  */
-# define ST_SYNCHRONOUS	ST_SYNCHRONOUS
-  ST_MANDLOCK = 64,		/* Allow mandatory locks on an FS.  */
-# define ST_MANDLOCK	ST_MANDLOCK
-  ST_WRITE = 128,		/* Write on file/directory/symlink.  */
-# define ST_WRITE	ST_WRITE
-  ST_APPEND = 256,		/* Append-only file.  */
-# define ST_APPEND	ST_APPEND
-  ST_IMMUTABLE = 512,		/* Immutable file.  */
-# define ST_IMMUTABLE	ST_IMMUTABLE
-  ST_NOATIME = 1024,		/* Do not update access times.  */
-# define ST_NOATIME	ST_NOATIME
-  ST_NODIRATIME			/* Do not update directory access times.  */
-# define ST_NODIRATIME	ST_NODIRATIME
-#endif	/* Use GNU.  */
-};
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/types.h b/sysdeps/unix/sysv/linux/alpha/bits/types.h
deleted file mode 100644
index 1b809e235e..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/bits/types.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/* 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 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.  */
-
-/*
- * Never include this file directly; use <sys/types.h> instead.
- */
-
-#ifndef	_BITS_TYPES_H
-#define	_BITS_TYPES_H	1
-
-#include <features.h>
-
-#define __need_size_t
-#include <stddef.h>
-
-/* Convenience types.  */
-typedef unsigned char __u_char;
-typedef unsigned short int __u_short;
-typedef unsigned int __u_int;
-typedef unsigned long int __u_long;
-typedef unsigned long int __u_quad_t;
-typedef long int __quad_t;
-typedef signed char __int8_t;
-typedef unsigned char __uint8_t;
-typedef signed short int __int16_t;
-typedef unsigned short int __uint16_t;
-typedef signed int __int32_t;
-typedef unsigned int __uint32_t;
-typedef signed long int __int64_t;
-typedef unsigned long int __uint64_t;
-typedef __quad_t *__qaddr_t;
-
-typedef __uint64_t __dev_t;		/* Type of device numbers.  */
-typedef __uint32_t __uid_t;		/* Type of user identifications.  */
-typedef __uint32_t __gid_t;		/* Type of group identifications.  */
-typedef __uint32_t __ino_t;		/* Type of file serial numbers.  */
-typedef __uint64_t __ino64_t;		/*  "" (LFS) */
-typedef __uint32_t __mode_t;		/* Type of file attribute bitmasks.  */
-typedef __uint32_t __nlink_t; 		/* Type of file link counts.  */
-typedef __int64_t  __off_t;		/* Type of file sizes and offsets.  */
-typedef __int64_t  __off64_t;		/*  "" (LFS) */
-typedef __int64_t  __loff_t;		/* Type of file sizes and offsets.  */
-typedef __int32_t  __pid_t;		/* Type of process identifications.  */
-typedef __int64_t  __ssize_t;		/* Type of a byte count, or error.  */
-typedef __uint64_t  __rlim_t;		/* Type of resource counts.  */
-typedef __uint64_t  __rlim64_t;		/*  "" (LFS) */
-typedef __uint32_t __blksize_t;		/* Type to represnet block size.  */
-typedef __uint32_t __blkcnt_t;		/* Type to count nr disk blocks.  */
-typedef __uint64_t __blkcnt64_t;	/*  "" (LFS) */
-typedef __int32_t __fsblkcnt_t;		/* Type to count file system blocks. */
-typedef __int64_t __fsblkcnt64_t;	/*  "" (LFS) */
-typedef __uint32_t __fsfilcnt_t;	/* Type to count file system inodes. */
-typedef __uint64_t __fsfilcnt64_t;	/*  "" (LFS) */
-typedef __uint32_t __id_t;		/* General type for IDs.  */
-
-typedef struct
-  {
-    int __val[2];
-  } __fsid_t;				/* Type of file system IDs.  */
-
-/* Everythin' else.  */
-typedef int __daddr_t;			/* Type of a disk address.  */
-typedef char *__caddr_t;		/* Type of a core address.  */
-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;
-typedef int __key_t;			/* Type of a SYSV IPC key. */
-
-/* Clock ID used in clock and timer functions.  */
-typedef int __clockid_t;
-
-/* Timer ID returned by `timer_create'.  */
-typedef int __timer_t;
-
-/* Used in `struct shmid_ds'.  */
-typedef int __ipc_pid_t;
-
-/* Number of descriptors that can fit in an `fd_set'.  */
-#define __FD_SETSIZE	1024
-
-
-/* Used in XTI.  */
-typedef long int __t_scalar_t;
-typedef unsigned long int __t_uscalar_t;
-
-/* Duplicates info from stdint.h but this is used in unistd.h.  */
-typedef long int __intptr_t;
-
-/* Duplicate info from sys/socket.h.  */
-typedef unsigned int __socklen_t;
-
-
-/* Now add the thread types.  */
-#if defined __USE_POSIX199506 || defined __USE_UNIX98
-# include <bits/pthreadtypes.h>
-#endif
-
-#endif /* bits/types.h */
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h b/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h
new file mode 100644
index 0000000000..235acf8a2f
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/alpha/bits/typesizes.h
@@ -0,0 +1,65 @@
+/* bits/typesizes.h -- underlying types for *_t.  Linux/Alpha version.
+   Copyright (C) 2002 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_TYPES_H
+# error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead."
+#endif
+
+#ifndef	_BITS_TYPESIZES_H
+#define	_BITS_TYPESIZES_H	1
+
+/* See <bits/types.h> for the meaning of these macros.  This file exists so
+   that <bits/types.h> need not vary across different GNU platforms.  */
+
+#define __DEV_T_TYPE		__U64_TYPE
+#define __UID_T_TYPE		__U32_TYPE
+#define __GID_T_TYPE		__U32_TYPE
+#define __INO_T_TYPE		__U32_TYPE
+#define __INO64_T_TYPE		__U64_TYPE
+#define __MODE_T_TYPE		__U32_TYPE
+#define __NLINK_T_TYPE		__U32_TYPE
+#define __OFF_T_TYPE		__SLONGWORD_TYPE
+#define __OFF64_T_TYPE		__S64_TYPE
+#define __PID_T_TYPE		__S32_TYPE
+#define __RLIM_T_TYPE		__ULONGWORD_TYPE
+#define __RLIM64_T_TYPE		__U64_TYPE
+#define	__BLKCNT_T_TYPE		__U32_TYPE
+#define	__BLKCNT64_T_TYPE	__U64_TYPE
+#define	__FSBLKCNT_T_TYPE	__S32_TYPE
+#define	__FSBLKCNT64_T_TYPE	__S64_TYPE
+#define	__FSFILCNT_T_TYPE	__U32_TYPE
+#define	__FSFILCNT64_T_TYPE	__U64_TYPE
+#define	__ID_T_TYPE		__U32_TYPE
+#define __CLOCK_T_TYPE		__SLONGWORD_TYPE
+#define __TIME_T_TYPE		__SLONGWORD_TYPE
+#define __USECONDS_T_TYPE	__U32_TYPE
+#define __SUSECONDS_T_TYPE	__S64_TYPE
+#define __DADDR_T_TYPE		__S32_TYPE
+#define __SWBLK_T_TYPE		__SLONGWORD_TYPE
+#define __KEY_T_TYPE		__S32_TYPE
+#define __CLOCKID_T_TYPE	__S32_TYPE
+#define __TIMER_T_TYPE		__S32_TYPE
+#define __BLKSIZE_T_TYPE	__U32_TYPE
+#define __FSID_T_TYPE		struct { int __val[2]; }
+
+/* Number of descriptors that can fit in an `fd_set'.  */
+#define	__FD_SETSIZE		1024
+
+
+#endif /* bits/typesizes.h */
diff --git a/sysdeps/unix/sysv/linux/bits/statfs.h b/sysdeps/unix/sysv/linux/bits/statfs.h
index 78c9bdbbc3..367e59d6df 100644
--- a/sysdeps/unix/sysv/linux/bits/statfs.h
+++ b/sysdeps/unix/sysv/linux/bits/statfs.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 2000, 2002 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
@@ -20,12 +20,12 @@
 # error "Never include <bits/statfs.h> directly; use <sys/statfs.h> instead."
 #endif
 
-#include <bits/types.h>  /* for __fsid_t and __fsblkcnt_t*/
+#include <bits/types.h>
 
 struct statfs
   {
-    int f_type;
-    int f_bsize;
+    __SWORD_TYPE f_type;
+    __SWORD_TYPE f_bsize;
 #ifndef __USE_FILE_OFFSET64
     __fsblkcnt_t f_blocks;
     __fsblkcnt_t f_bfree;
@@ -40,23 +40,23 @@ struct statfs
     __fsfilcnt64_t f_ffree;
 #endif
     __fsid_t f_fsid;
-    int f_namelen;
-    int f_spare[6];
+    __SWORD_TYPE f_namelen;
+    __SWORD_TYPE f_spare[6];
   };
 
 #ifdef __USE_LARGEFILE64
 struct statfs64
   {
-    int f_type;
-    int f_bsize;
+    __SWORD_TYPE f_type;
+    __SWORD_TYPE f_bsize;
     __fsblkcnt64_t f_blocks;
     __fsblkcnt64_t f_bfree;
     __fsblkcnt64_t f_bavail;
     __fsfilcnt64_t f_files;
     __fsfilcnt64_t f_ffree;
     __fsid_t f_fsid;
-    int f_namelen;
-    int f_spare[6];
+    __SWORD_TYPE f_namelen;
+    __SWORD_TYPE f_spare[6];
   };
 #endif
 
diff --git a/sysdeps/unix/sysv/linux/bits/statvfs.h b/sysdeps/unix/sysv/linux/bits/statvfs.h
index 0bd4935681..cca0871ac0 100644
--- a/sysdeps/unix/sysv/linux/bits/statvfs.h
+++ b/sysdeps/unix/sysv/linux/bits/statvfs.h
@@ -22,6 +22,10 @@
 
 #include <bits/types.h>  /* For __fsblkcnt_t and __fsfilcnt_t.  */
 
+#if __WORDSIZE == 32
+#define _STATVFSBUF_F_UNUSED
+#endif
+
 struct statvfs
   {
     unsigned long int f_bsize;
@@ -42,12 +46,13 @@ struct statvfs
     __fsfilcnt64_t f_favail;
 #endif
     unsigned long int f_fsid;
+#ifdef _STATVFSBUF_F_UNUSED
     int __f_unused;
+#endif
     unsigned long int f_flag;
     unsigned long int f_namemax;
     int __f_spare[6];
   };
-#define _STATVFSBUF_F_UNUSED
 
 #ifdef __USE_LARGEFILE64
 struct statvfs64
@@ -61,7 +66,9 @@ struct statvfs64
     __fsfilcnt64_t f_ffree;
     __fsfilcnt64_t f_favail;
     unsigned long int f_fsid;
+#ifdef _STATVFSBUF_F_UNUSED
     int __f_unused;
+#endif
     unsigned long int f_flag;
     unsigned long int f_namemax;
     int __f_spare[6];
diff --git a/sysdeps/unix/sysv/linux/bits/types.h b/sysdeps/unix/sysv/linux/bits/types.h
deleted file mode 100644
index ffc346fc75..0000000000
--- a/sysdeps/unix/sysv/linux/bits/types.h
+++ /dev/null
@@ -1,146 +0,0 @@
-/* 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 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.  */
-
-/*
- * Never include this file directly; use <sys/types.h> instead.
- */
-
-#ifndef	_BITS_TYPES_H
-#define	_BITS_TYPES_H	1
-
-#include <features.h>
-
-#define __need_size_t
-#include <stddef.h>
-
-/* Convenience types.  */
-typedef unsigned char __u_char;
-typedef unsigned short __u_short;
-typedef unsigned int __u_int;
-typedef unsigned long __u_long;
-#ifdef __GLIBC_HAVE_LONG_LONG
-__extension__ typedef unsigned long long int __u_quad_t;
-__extension__ typedef long long int __quad_t;
-#else
-typedef struct
-  {
-    long int __val[2];
-  } __quad_t;
-typedef struct
-  {
-    __u_long __val[2];
-  } __u_quad_t;
-#endif
-typedef signed char __int8_t;
-typedef unsigned char __uint8_t;
-typedef signed short int __int16_t;
-typedef unsigned short int __uint16_t;
-typedef signed int __int32_t;
-typedef unsigned int __uint32_t;
-#ifdef __GLIBC_HAVE_LONG_LONG
-__extension__ typedef signed long long int __int64_t;
-__extension__ typedef unsigned long long int __uint64_t;
-#endif
-typedef __quad_t *__qaddr_t;
-
-typedef __u_quad_t __dev_t;		/* Type of device numbers.  */
-typedef __u_int __uid_t;		/* Type of user identifications.  */
-typedef __u_int __gid_t;		/* Type of group identifications.  */
-typedef __u_long __ino_t;		/* Type of file serial numbers.  */
-typedef __u_int __mode_t;		/* Type of file attribute bitmasks.  */
-typedef __u_int __nlink_t;		/* Type of file link counts.  */
-typedef long int __off_t;		/* Type of file sizes and offsets.  */
-typedef __quad_t __loff_t;		/* Type of file sizes and offsets.  */
-typedef int __pid_t;			/* Type of process identifications.  */
-typedef int __ssize_t;			/* Type of a byte count, or error.  */
-typedef __u_long __rlim_t;		/* Type of resource counts.  */
-typedef __u_quad_t __rlim64_t;		/* Type of resource counts (LFS).  */
-typedef __u_int __id_t;			/* General type for ID.  */
-
-typedef struct
-  {
-    int __val[2];
-  } __fsid_t;				/* Type of file system IDs.  */
-
-/* Everythin' else.  */
-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;
-
-/* Clock ID used in clock and timer functions.  */
-typedef int __clockid_t;
-
-/* Timer ID returned by `timer_create'.  */
-typedef int __timer_t;
-
-
-/* Number of descriptors that can fit in an `fd_set'.  */
-#define __FD_SETSIZE	1024
-
-
-typedef int __key_t;
-
-/* Used in `struct shmid_ds'.  */
-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.  */
-typedef long int __blkcnt_t;
-typedef __quad_t __blkcnt64_t;
-
-/* Type to count file system blocks.  */
-typedef __u_long __fsblkcnt_t;
-typedef __u_quad_t __fsblkcnt64_t;
-
-/* Type to count file system inodes.  */
-typedef __u_long __fsfilcnt_t;
-typedef __u_quad_t __fsfilcnt64_t;
-
-/* Type of file serial numbers.  */
-typedef __u_quad_t __ino64_t;
-
-/* Type of file sizes and offsets.  */
-typedef __loff_t __off64_t;
-
-/* Used in XTI.  */
-typedef long int __t_scalar_t;
-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.  */
-#if defined __USE_POSIX199506 || defined __USE_UNIX98
-# include <bits/pthreadtypes.h>
-#endif
-
-#endif /* bits/types.h */
diff --git a/sysdeps/unix/sysv/linux/ia64/bits/statfs.h b/sysdeps/unix/sysv/linux/ia64/bits/statfs.h
deleted file mode 100644
index 4e76534d9b..0000000000
--- a/sysdeps/unix/sysv/linux/ia64/bits/statfs.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/* Copyright (C) 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 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 _SYS_STATFS_H
-# error "Never include <bits/statfs.h> directly; use <sys/statfs.h> instead."
-#endif
-
-#include <bits/types.h>  /* for __fsid_t and __fsblkcnt_t. */
-
-struct statfs
-  {
-    long int f_type;
-    long int f_bsize;
-    __fsblkcnt_t f_blocks;
-    __fsblkcnt_t f_bfree;
-    __fsblkcnt_t f_bavail;
-    __fsblkcnt_t f_files;
-    __fsblkcnt_t f_ffree;
-    __fsid_t f_fsid;
-    long int f_namelen;
-    long int f_spare[6];
-  };
-
-#ifdef __USE_LARGEFILE64
-/* We already use 64-bit types in the normal structure,
-   so this is the same as the above.  */
-struct statfs64
-  {
-    long int f_type;
-    long int f_bsize;
-    __fsblkcnt64_t f_blocks;
-    __fsblkcnt64_t f_bfree;
-    __fsblkcnt64_t f_bavail;
-    __fsblkcnt64_t f_files;
-    __fsblkcnt64_t f_ffree;
-    __fsid_t f_fsid;
-    long int f_namelen;
-    long int f_spare[6];
-  };
-#endif
-
-/* Tell code we have this member.  */
-#define _STATFS_F_NAMELEN
diff --git a/sysdeps/unix/sysv/linux/ia64/bits/statvfs.h b/sysdeps/unix/sysv/linux/ia64/bits/statvfs.h
deleted file mode 100644
index 16bb895228..0000000000
--- a/sysdeps/unix/sysv/linux/ia64/bits/statvfs.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/* Copyright (C) 1997, 1998, 2000, 2001, 2002 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 _SYS_STATVFS_H
-# error "Never include <bits/statvfs.h> directly; use <sys/statvfs.h> instead."
-#endif
-
-#include <bits/types.h>  /* For __fsblkcnt_t and __fsfilcnt_t.  */
-
-struct statvfs
-  {
-    unsigned long int f_bsize;
-    unsigned long int f_frsize;
-#ifndef __USE_FILE_OFFSET64
-    __fsblkcnt_t f_blocks;
-    __fsblkcnt_t f_bfree;
-    __fsblkcnt_t f_bavail;
-    __fsfilcnt_t f_files;
-    __fsfilcnt_t f_ffree;
-    __fsfilcnt_t f_favail;
-#else
-    __fsblkcnt64_t f_blocks;
-    __fsblkcnt64_t f_bfree;
-    __fsblkcnt64_t f_bavail;
-    __fsfilcnt64_t f_files;
-    __fsfilcnt64_t f_ffree;
-    __fsfilcnt64_t f_favail;
-#endif
-    unsigned long int f_fsid;
-    unsigned long int f_flag;
-    unsigned long int f_namemax;
-    int __f_spare[6];
-  };
-
-#ifdef __USE_LARGEFILE64
-struct statvfs64
-  {
-    unsigned long int f_bsize;
-    unsigned long int f_frsize;
-    __fsblkcnt64_t f_blocks;
-    __fsblkcnt64_t f_bfree;
-    __fsblkcnt64_t f_bavail;
-    __fsfilcnt64_t f_files;
-    __fsfilcnt64_t f_ffree;
-    __fsfilcnt64_t f_favail;
-    unsigned long int f_fsid;
-    unsigned long int f_flag;
-    unsigned long int f_namemax;
-    int __f_spare[6];
-  };
-#endif
-
-/* Definitions for the flag in `f_flag'.  These definitions should be
-   kept in sync with the definitions in <sys/mount.h>.  */
-enum
-{
-  ST_RDONLY = 1,		/* Mount read-only.  */
-#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
-  ST_NOEXEC = 8,		/* Disallow program execution.  */
-# define ST_NOEXEC	ST_NOEXEC
-  ST_SYNCHRONOUS = 16,		/* Writes are synced at once.  */
-# define ST_SYNCHRONOUS	ST_SYNCHRONOUS
-  ST_MANDLOCK = 64,		/* Allow mandatory locks on an FS.  */
-# define ST_MANDLOCK	ST_MANDLOCK
-  ST_WRITE = 128,		/* Write on file/directory/symlink.  */
-# define ST_WRITE	ST_WRITE
-  ST_APPEND = 256,		/* Append-only file.  */
-# define ST_APPEND	ST_APPEND
-  ST_IMMUTABLE = 512,		/* Immutable file.  */
-# define ST_IMMUTABLE	ST_IMMUTABLE
-  ST_NOATIME = 1024,		/* Do not update access times.  */
-# define ST_NOATIME	ST_NOATIME
-  ST_NODIRATIME			/* Do not update directory access times.  */
-# define ST_NODIRATIME	ST_NODIRATIME
-#endif	/* Use GNU.  */
-};
diff --git a/sysdeps/unix/sysv/linux/ia64/bits/types.h b/sysdeps/unix/sysv/linux/ia64/bits/types.h
deleted file mode 100644
index 5821e59ded..0000000000
--- a/sysdeps/unix/sysv/linux/ia64/bits/types.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/* Copyright (C) 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 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.  */
-
-/*
- * Never include this file directly; use <sys/types.h> instead.
- */
-
-#ifndef	_BITS_TYPES_H
-#define	_BITS_TYPES_H	1
-
-#include <features.h>
-
-#define __need_size_t
-#include <stddef.h>
-
-/* Convenience types.  */
-typedef unsigned char __u_char;
-typedef unsigned short int __u_short;
-typedef unsigned int __u_int;
-typedef unsigned long int __u_long;
-typedef unsigned long int __u_quad_t;
-typedef long int __quad_t;
-typedef signed char __int8_t;
-typedef unsigned char __uint8_t;
-typedef signed short int __int16_t;
-typedef unsigned short int __uint16_t;
-typedef signed int __int32_t;
-typedef unsigned int __uint32_t;
-typedef signed long int __int64_t;
-typedef unsigned long int __uint64_t;
-typedef __quad_t *__qaddr_t;
-
-typedef __uint64_t __dev_t;		/* Type of device numbers.  */
-typedef __uint32_t __uid_t;		/* Type of user identifications.  */
-typedef __uint32_t __gid_t;		/* Type of group identifications.  */
-typedef __uint64_t __ino_t;		/* Type of file serial numbers.  */
-typedef __uint64_t __ino64_t;		/*  "" (LFS) */
-typedef __uint32_t __mode_t;		/* Type of file attribute bitmasks.  */
-typedef __uint64_t __nlink_t; 		/* Type of file link counts.  */
-typedef __int64_t  __off_t;		/* Type of file sizes and offsets.  */
-typedef __int64_t  __off64_t;		/*  "" (LFS) */
-typedef __int64_t  __loff_t;		/* Type of file sizes and offsets.  */
-typedef __int32_t  __pid_t;		/* Type of process identifications.  */
-typedef __int64_t  __ssize_t;		/* Type of a byte count, or error.  */
-typedef __uint64_t  __rlim_t;		/* Type of resource counts.  */
-typedef __uint64_t  __rlim64_t;		/*  "" (LFS) */
-typedef __int64_t  __blkcnt_t;		/* Type to count nr disk blocks.  */
-typedef __int64_t  __blkcnt64_t;	/*  "" (LFS) */
-typedef __uint64_t __fsblkcnt_t;	/* Type to count file system blocks.  */
-typedef __uint64_t __fsblkcnt64_t;	/*  "" (LFS) */
-typedef __uint64_t __fsfilcnt_t;	/* Type to count file system inodes.  */
-typedef __uint64_t __fsfilcnt64_t;	/*  "" (LFS) */
-typedef __uint32_t __id_t;		/* General type for IDs.  */
-
-typedef struct
-  {
-    int __val[2];
-  } __fsid_t;				/* Type of file system IDs.  */
-
-/* Everythin' else.  */
-typedef int __daddr_t;			/* Type of a disk address.  */
-typedef char *__caddr_t;		/* Type of a core address.  */
-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;
-typedef int __key_t;			/* Type of a SYSV IPC key. */
-
-/* Clock ID used in clock and timer functions.  */
-typedef int __clockid_t;
-
-/* Timer ID returned by `timer_create'.  */
-typedef int __timer_t;
-
-/* Used in `struct shmid_ds'.  */
-typedef int __ipc_pid_t;
-
-/* type to represent block size. */
-typedef long int __blksize_t;
-
-/* Number of descriptors that can fit in an `fd_set'.  */
-#define __FD_SETSIZE	1024
-
-
-/* Used in XTI.  */
-typedef int __t_scalar_t;
-typedef unsigned int __t_uscalar_t;
-
-/* Duplicates info from stdint.h but this is used in unistd.h.  */
-typedef long int __intptr_t;
-
-/* Duplicate info from sys/socket.h.  */
-typedef unsigned int __socklen_t;
-
-/* Now add the thread types.  */
-#if defined __USE_POSIX199506 || defined __USE_UNIX98
-# include <bits/pthreadtypes.h>
-#endif
-
-#endif /* bits/types.h */
diff --git a/sysdeps/unix/sysv/linux/mips/bits/types.h b/sysdeps/unix/sysv/linux/mips/bits/types.h
deleted file mode 100644
index 141f0b29e4..0000000000
--- a/sysdeps/unix/sysv/linux/mips/bits/types.h
+++ /dev/null
@@ -1,145 +0,0 @@
-/* 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 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.  */
-
-/*
- * Never include this file directly; use <sys/types.h> instead.
- */
-
-#ifndef	_BITS_TYPES_H
-#define	_BITS_TYPES_H	1
-
-#include <features.h>
-
-#define __need_size_t
-#include <stddef.h>
-
-/* Convenience types.  */
-typedef unsigned char __u_char;
-typedef unsigned short __u_short;
-typedef unsigned int __u_int;
-typedef unsigned long __u_long;
-#ifdef __GNUC__
-__extension__ typedef unsigned long long int __u_quad_t;
-__extension__ typedef long long int __quad_t;
-#else
-typedef struct
-  {
-    long int __val[2];
-  } __quad_t;
-typedef struct
-  {
-    __u_long __val[2];
-  } __u_quad_t;
-#endif
-typedef signed char __int8_t;
-typedef unsigned char __uint8_t;
-typedef signed short int __int16_t;
-typedef unsigned short int __uint16_t;
-typedef signed int __int32_t;
-typedef unsigned int __uint32_t;
-#ifdef __GNUC__
-__extension__ typedef signed long long int __int64_t;
-__extension__ typedef unsigned long long int __uint64_t;
-#endif
-typedef __quad_t *__qaddr_t;
-
-typedef __u_quad_t __dev_t;		/* Type of device numbers.  */
-typedef __u_int __uid_t;		/* Type of user identifications.  */
-typedef __u_int __gid_t;		/* Type of group identifications.  */
-typedef __u_long __ino_t;		/* Type of file serial numbers.  */
-typedef __u_int __mode_t;		/* Type of file attribute bitmasks.  */
-typedef __u_int __nlink_t; 		/* Type of file link counts.  */
-typedef long int __off_t;		/* Type of file sizes and offsets.  */
-typedef __quad_t __loff_t;		/* Type of file sizes and offsets.  */
-typedef int __pid_t;			/* Type of process identifications.  */
-typedef int __ssize_t;			/* Type of a byte count, or error.  */
-typedef __u_long __rlim_t;		/* Type of resource counts.  */
-typedef __u_quad_t __rlim64_t;		/* Type of resource counts (LFS).  */
-typedef __u_int __id_t;			/* General type for ID.  */
-
-typedef struct
-  {
-    int __val[2];
-  } __fsid_t;				/* Type of file system IDs.  */
-
-/* Everythin' else.  */
-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;
-
-/* Clock ID used in clock and timer functions.  */
-typedef int __clockid_t;
-
-/* Timer ID returned by `timer_create'.  */
-typedef int __timer_t;
-
-/* Number of descriptors that can fit in an `fd_set'.  */
-#define __FD_SETSIZE	1024
-
-
-typedef int __key_t;
-
-/* Used in `struct shmid_ds'.  */
-typedef long 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.  */
-typedef long int __blkcnt_t;
-typedef __quad_t __blkcnt64_t;
-
-/* Type to count file system blocks.  */
-typedef __u_long __fsblkcnt_t;
-typedef __u_quad_t __fsblkcnt64_t;
-
-/* Type to count file system inodes.  */
-typedef __u_long __fsfilcnt_t;
-typedef __u_quad_t __fsfilcnt64_t;
-
-/* Type of file serial numbers.  */
-typedef __u_quad_t __ino64_t;
-
-/* Type of file sizes and offsets.  */
-typedef __loff_t __off64_t;
-
-/* Used in XTI.  */
-typedef long int __t_scalar_t;
-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.  */
-#if defined __USE_POSIX199506 || defined __USE_UNIX98
-# include <bits/pthreadtypes.h>
-#endif
-
-#endif /* bits/types.h */
diff --git a/sysdeps/unix/sysv/linux/x86_64/bits/statfs.h b/sysdeps/unix/sysv/linux/s390/bits/statfs.h
index 8fbcec22e2..b8e37e6102 100644
--- a/sysdeps/unix/sysv/linux/x86_64/bits/statfs.h
+++ b/sysdeps/unix/sysv/linux/s390/bits/statfs.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001 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
@@ -20,37 +20,43 @@
 # error "Never include <bits/statfs.h> directly; use <sys/statfs.h> instead."
 #endif
 
-#include <bits/types.h>  /* for __fsid_t and __fsblkcnt_t. */
+#include <bits/types.h>  /* for __fsid_t and __fsblkcnt_t.  */
 
 struct statfs
   {
-    long int f_type;
-    long int f_bsize;
+    int f_type;
+    int f_bsize;
+#ifndef __USE_FILE_OFFSET64
     __fsblkcnt_t f_blocks;
     __fsblkcnt_t f_bfree;
     __fsblkcnt_t f_bavail;
-    __fsblkcnt_t f_files;
-    __fsblkcnt_t f_ffree;
+    __fsfilcnt_t f_files;
+    __fsfilcnt_t f_ffree;
+#else
+    __fsblkcnt64_t f_blocks;
+    __fsblkcnt64_t f_bfree;
+    __fsblkcnt64_t f_bavail;
+    __fsfilcnt64_t f_files;
+    __fsfilcnt64_t f_ffree;
+#endif
     __fsid_t f_fsid;
-    long int f_namelen;
-    long int f_spare[6];
+    int f_namelen;
+    int f_spare[6];
   };
 
 #ifdef __USE_LARGEFILE64
-/* We already use 64-bit types in the normal structure,
-   so this is the same as the above.  */
 struct statfs64
   {
-    long int f_type;
-    long int f_bsize;
+    int f_type;
+    int f_bsize;
     __fsblkcnt64_t f_blocks;
     __fsblkcnt64_t f_bfree;
     __fsblkcnt64_t f_bavail;
-    __fsblkcnt64_t f_files;
-    __fsblkcnt64_t f_ffree;
+    __fsfilcnt64_t f_files;
+    __fsfilcnt64_t f_ffree;
     __fsid_t f_fsid;
-    long int f_namelen;
-    long int f_spare[6];
+    int f_namelen;
+    int f_spare[6];
   };
 #endif
 
diff --git a/sysdeps/unix/sysv/linux/s390/bits/types.h b/sysdeps/unix/sysv/linux/s390/bits/types.h
deleted file mode 100644
index 693fcee1cf..0000000000
--- a/sysdeps/unix/sysv/linux/s390/bits/types.h
+++ /dev/null
@@ -1,161 +0,0 @@
-/* Copyright (C) 2001, 2002 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.  */
-
-/*
- * Never include this file directly; use <sys/types.h> instead.
- */
-
-#ifndef	_BITS_TYPES_H
-#define	_BITS_TYPES_H	1
-
-#include <features.h>
-
-#define __need_size_t
-#include <stddef.h>
-
-#include <bits/wordsize.h>
-
-/* Convenience types.  */
-typedef unsigned char __u_char;
-typedef unsigned short __u_short;
-typedef unsigned int __u_int;
-typedef unsigned long __u_long;
-#if __WORDSIZE == 64
-typedef unsigned long __u_quad_t;
-typedef long __quad_t;
-#else
-# ifdef __GLIBC_HAVE_LONG_LONG
-__extension__ typedef unsigned long long int __u_quad_t;
-__extension__ typedef long long int __quad_t;
-# else
-typedef struct
-  {
-    long int __val[2];
-  } __quad_t;
-typedef struct
-  {
-    __u_long __val[2];
-  } __u_quad_t;
-# endif
-#endif
-typedef signed char __int8_t;
-typedef unsigned char __uint8_t;
-typedef signed short int __int16_t;
-typedef unsigned short int __uint16_t;
-typedef signed int __int32_t;
-typedef unsigned int __uint32_t;
-#if __WORDSIZE == 64
-typedef signed long int __int64_t;
-typedef unsigned long int __uint64_t;
-#else
-# ifdef __GLIBC_HAVE_LONG_LONG
-__extension__ typedef signed long long int __int64_t;
-__extension__ typedef unsigned long long int __uint64_t;
-# endif
-#endif
-typedef __quad_t *__qaddr_t;
-
-typedef __u_quad_t __dev_t;		/* Type of device numbers.  */
-typedef __u_int __uid_t;		/* Type of user identifications.  */
-typedef __u_int __gid_t;		/* Type of group identifications.  */
-typedef __u_long __ino_t;		/* Type of file serial numbers.	 */
-typedef __u_int __mode_t;		/* Type of file attribute bitmasks.  */
-typedef __u_long __nlink_t;		/* Type of file link counts.  */
-typedef long int  __off_t;		/* Type of file sizes and offsets.  */
-typedef __quad_t __loff_t;		/* Type of file sizes and offsets.  */
-typedef int __pid_t;			/* Type of process identifications.  */
-typedef long __ssize_t;			/* Type of a byte count, or error.  */
-typedef __u_long __rlim_t;		/* Type of resource counts.  */
-typedef __u_quad_t __rlim64_t;		/* Type of resource counts (LFS).  */
-typedef __u_int __id_t;			/* General type for ID.  */
-
-typedef struct
-  {
-    int __val[2];
-  } __fsid_t;				/* Type of file system IDs.  */
-
-/* Everythin' else.  */
-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;
-
-/* Clock ID used in clock and timer functions.	*/
-typedef int __clockid_t;
-
-/* Timer ID returned by `timer_create'.	 */
-typedef int __timer_t;
-
-
-/* Number of descriptors that can fit in an `fd_set'.  */
-#define __FD_SETSIZE	1024
-
-
-typedef int __key_t;
-
-/* Used in `struct shmid_ds'.  */
-#if __WORDSIZE == 64
-typedef int __ipc_pid_t;
-#else
-typedef unsigned short int __ipc_pid_t;
-#endif
-
-/* Type to represent block size. */
-typedef long int __blksize_t;
-
-/* Types from the Large File Support interface.  */
-
-/* Type to count number os disk blocks.  */
-typedef long int __blkcnt_t;
-typedef __quad_t __blkcnt64_t;
-
-/* Type to count file system blocks.  */
-typedef __u_long __fsblkcnt_t;
-typedef __u_quad_t __fsblkcnt64_t;
-
-/* Type to count file system inodes.  */
-typedef __u_long __fsfilcnt_t;
-typedef __u_quad_t __fsfilcnt64_t;
-
-/* Type of file serial numbers.  */
-typedef __u_quad_t __ino64_t;
-
-/* Type of file sizes and offsets.  */
-typedef __loff_t __off64_t;
-
-/* Used in XTI.	 */
-typedef int __t_scalar_t;
-typedef unsigned int __t_uscalar_t;
-
-/* Duplicates info from stdint.h but this is used in unistd.h.	*/
-typedef long int __intptr_t;
-
-/* Duplicate info from sys/socket.h.  */
-typedef unsigned int __socklen_t;
-
-
-/* Now add the thread types.  */
-#if defined __USE_POSIX199506 || defined __USE_UNIX98
-# include <bits/pthreadtypes.h>
-#endif
-
-#endif /* bits/types.h */
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/statvfs.h b/sysdeps/unix/sysv/linux/sparc/bits/statvfs.h
deleted file mode 100644
index 463dc9e1ca..0000000000
--- a/sysdeps/unix/sysv/linux/sparc/bits/statvfs.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/* Copyright (C) 1997, 1998, 2000, 2001, 2002 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 _SYS_STATVFS_H
-# error "Never include <bits/statvfs.h> directly; use <sys/statvfs.h> instead."
-#endif
-
-#include <bits/types.h>  /* For __fsblkcnt_t and __fsfilcnt_t.  */
-
-#if __WORDSIZE == 32
-#define _STATVFSBUF_F_UNUSED
-#endif
-
-struct statvfs
-  {
-    unsigned long int f_bsize;
-    unsigned long int f_frsize;
-#ifndef __USE_FILE_OFFSET64
-    __fsblkcnt_t f_blocks;
-    __fsblkcnt_t f_bfree;
-    __fsblkcnt_t f_bavail;
-    __fsfilcnt_t f_files;
-    __fsfilcnt_t f_ffree;
-    __fsfilcnt_t f_favail;
-#else
-    __fsblkcnt64_t f_blocks;
-    __fsblkcnt64_t f_bfree;
-    __fsblkcnt64_t f_bavail;
-    __fsfilcnt64_t f_files;
-    __fsfilcnt64_t f_ffree;
-    __fsfilcnt64_t f_favail;
-#endif
-    unsigned long int f_fsid;
-#ifdef _STATVFSBUF_F_UNUSED
-    int __f_unused;
-#endif
-    unsigned long int f_flag;
-    unsigned long int f_namemax;
-    int __f_spare[6];
-  };
-
-#ifdef __USE_LARGEFILE64
-struct statvfs64
-  {
-    unsigned long int f_bsize;
-    unsigned long int f_frsize;
-    __fsblkcnt64_t f_blocks;
-    __fsblkcnt64_t f_bfree;
-    __fsblkcnt64_t f_bavail;
-    __fsfilcnt64_t f_files;
-    __fsfilcnt64_t f_ffree;
-    __fsfilcnt64_t f_favail;
-    unsigned long int f_fsid;
-#ifdef _STATVFSBUF_F_UNUSED
-    int __f_unused;
-#endif
-    unsigned long int f_flag;
-    unsigned long int f_namemax;
-    int __f_spare[6];
-  };
-#endif
-
-/* Definitions for the flag in `f_flag'.  These definitions should be
-   kept in sync with the definitions in <sys/mount.h>.  */
-enum
-{
-  ST_RDONLY = 1,		/* Mount read-only.  */
-#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
-  ST_NOEXEC = 8,		/* Disallow program execution.  */
-# define ST_NOEXEC	ST_NOEXEC
-  ST_SYNCHRONOUS = 16,		/* Writes are synced at once.  */
-# define ST_SYNCHRONOUS	ST_SYNCHRONOUS
-  ST_MANDLOCK = 64,		/* Allow mandatory locks on an FS.  */
-# define ST_MANDLOCK	ST_MANDLOCK
-  ST_WRITE = 128,		/* Write on file/directory/symlink.  */
-# define ST_WRITE	ST_WRITE
-  ST_APPEND = 256,		/* Append-only file.  */
-# define ST_APPEND	ST_APPEND
-  ST_IMMUTABLE = 512,		/* Immutable file.  */
-# define ST_IMMUTABLE	ST_IMMUTABLE
-  ST_NOATIME = 1024,		/* Do not update access times.  */
-# define ST_NOATIME	ST_NOATIME
-  ST_NODIRATIME			/* Do not update directory access times.  */
-# define ST_NODIRATIME	ST_NODIRATIME
-#endif	/* Use GNU.  */
-};
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/types.h b/sysdeps/unix/sysv/linux/sparc/bits/types.h
deleted file mode 100644
index 0d357a930e..0000000000
--- a/sysdeps/unix/sysv/linux/sparc/bits/types.h
+++ /dev/null
@@ -1,164 +0,0 @@
-/* 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 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.  */
-
-/*
- * Never include this file directly; use <sys/types.h> instead.
- */
-
-#ifndef	_BITS_TYPES_H
-#define	_BITS_TYPES_H	1
-
-#include <features.h>
-
-#define __need_size_t
-#include <stddef.h>
-#include <bits/wordsize.h>
-
-/* Convenience types.  */
-typedef unsigned char __u_char;
-typedef unsigned short int __u_short;
-typedef unsigned int __u_int;
-typedef unsigned long int __u_long;
-#if __WORDSIZE == 64
-typedef unsigned long int __u_quad_t;
-typedef long int __quad_t;
-#else
-# ifdef __GNUC__
-__extension__ typedef unsigned long long int __u_quad_t;
-__extension__ typedef long long int __quad_t;
-# else
-typedef struct
-  {
-    long int __val[2];
-  } __quad_t;
-typedef struct
-  {
-    __u_long __val[2];
-  } __u_quad_t;
-# endif
-#endif
-typedef signed char __int8_t;
-typedef unsigned char __uint8_t;
-typedef signed short int __int16_t;
-typedef unsigned short int __uint16_t;
-typedef signed int __int32_t;
-typedef unsigned int __uint32_t;
-#if __WORDSIZE == 64
-typedef signed long int __int64_t;
-typedef unsigned long int __uint64_t;
-#else
-# ifdef __GNUC__
-__extension__ typedef signed long long int __int64_t;
-__extension__ typedef unsigned long long int __uint64_t;
-# endif
-#endif
-typedef __quad_t *__qaddr_t;
-
-typedef __u_quad_t __dev_t;		/* Type of device numbers.  */
-typedef __u_int __uid_t;		/* Type of user identifications.  */
-typedef __u_int __gid_t;		/* Type of group identifications.  */
-typedef __u_long __ino_t;		/* Type of file serial numbers.  */
-typedef __u_quad_t __ino64_t;		/* Type of file serial numbers.  */
-typedef __u_int __mode_t;		/* Type of file attribute bitmasks.  */
-typedef __u_int __nlink_t; 		/* Type of file link counts.  */
-typedef long int __off_t;		/* Type of file sizes and offsets.  */
-typedef __quad_t  __off64_t;		/*  "" (LFS) */
-typedef __quad_t __loff_t;		/* Type of file sizes and offsets.  */
-typedef int __pid_t;			/* Type of process identifications.  */
-#if __WORDSIZE == 64
-typedef long int __ssize_t;		/* Type of a byte count, or error.  */
-#else
-typedef int __ssize_t;			/* Type of a byte count, or error.  */
-#endif
-typedef __u_long __rlim_t;		/* Type of resource counts.  */
-typedef __u_quad_t __rlim64_t;		/* Type of resource counts (LFS).  */
-typedef __u_int __id_t;			/* General type for IDs.  */
-
-typedef struct
-  {
-    int __val[2];
-  } __fsid_t;				/* Type of file system IDs.  */
-
-/* Everythin' else.  */
-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 int __suseconds_t;
-typedef long int __swblk_t;		/* Type of a swap block maybe?  */
-
-typedef long int __clock_t;
-
-/* Clock ID used in clock and timer functions.  */
-typedef int __clockid_t;
-
-/* Timer ID returned by `timer_create'.  */
-typedef int __timer_t;
-
-/* Number of descriptors that can fit in an `fd_set'.  */
-#define __FD_SETSIZE	1024
-
-
-typedef int __key_t;
-
-/* Used in `struct shmid_ds'.  */
-#if __WORDSIZE == 64
-typedef int		   __ipc_pid_t;
-#else
-typedef unsigned short int __ipc_pid_t;
-#endif
-
-
-/* Type to represent block size.  */
-typedef long int __blksize_t;
-
-/* Types from the Large File Support interface.  */
-
-/* Type to count number os disk blocks.  */
-typedef long int __blkcnt_t;
-typedef __quad_t __blkcnt64_t;
-
-/* Type to count file system blocks.  */
-typedef __u_long     __fsblkcnt_t;
-typedef __u_quad_t __fsblkcnt64_t;
-
-/* Type to count file system inodes.  */
-typedef unsigned long int __fsfilcnt_t;
-typedef __u_quad_t __fsfilcnt64_t;
-
-/* Used in XTI.  */
-typedef long int __t_scalar_t;
-typedef unsigned long int __t_uscalar_t;
-
-/* Duplicates info from stdint.h but this is used in unistd.h.  */
-#if __WORDSIZE == 64
-typedef long int __intptr_t;
-#else
-typedef int      __intptr_t;
-#endif
-
-/* Duplicate info from sys/socket.h.  */
-typedef unsigned int __socklen_t;
-
-
-/* Now add the thread types.  */
-#if defined __USE_POSIX199506 || defined __USE_UNIX98
-# include <bits/pthreadtypes.h>
-#endif
-
-#endif /* bits/types.h */
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h b/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h
new file mode 100644
index 0000000000..71b88986ee
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sparc/bits/typesizes.h
@@ -0,0 +1,65 @@
+/* bits/typesizes.h -- underlying types for *_t.  Linux/SPARC version.
+   Copyright (C) 2002 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_TYPES_H
+# error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead."
+#endif
+
+#ifndef	_BITS_TYPESIZES_H
+#define	_BITS_TYPESIZES_H	1
+
+/* See <bits/types.h> for the meaning of these macros.  This file exists so
+   that <bits/types.h> need not vary across different GNU platforms.  */
+
+#define __DEV_T_TYPE		__UQUAD_TYPE
+#define __UID_T_TYPE		__U32_TYPE
+#define __GID_T_TYPE		__U32_TYPE
+#define __INO_T_TYPE		__ULONGWORD_TYPE
+#define __INO64_T_TYPE		__UQUAD_TYPE
+#define __MODE_T_TYPE		__U32_TYPE
+#define __NLINK_T_TYPE		__U32_TYPE
+#define __OFF_T_TYPE		__SLONGWORD_TYPE
+#define __OFF64_T_TYPE		__SQUAD_TYPE
+#define __PID_T_TYPE		__S32_TYPE
+#define __RLIM_T_TYPE		__ULONGWORD_TYPE
+#define __RLIM64_T_TYPE		__UQUAD_TYPE
+#define	__BLKCNT_T_TYPE		__SLONGWORD_TYPE
+#define	__BLKCNT64_T_TYPE	__SQUAD_TYPE
+#define	__FSBLKCNT_T_TYPE	__ULONGWORD_TYPE
+#define	__FSBLKCNT64_T_TYPE	__UQUAD_TYPE
+#define	__FSFILCNT_T_TYPE	__ULONGWORD_TYPE
+#define	__FSFILCNT64_T_TYPE	__UQUAD_TYPE
+#define	__ID_T_TYPE		__U32_TYPE
+#define __CLOCK_T_TYPE		__SLONGWORD_TYPE
+#define __TIME_T_TYPE		__SLONGWORD_TYPE
+#define __USECONDS_T_TYPE	__U32_TYPE
+#define __SUSECONDS_T_TYPE	__S32_TYPE
+#define __DADDR_T_TYPE		__S32_TYPE
+#define __SWBLK_T_TYPE		__SLONGWORD_TYPE
+#define __KEY_T_TYPE		__S32_TYPE
+#define __CLOCKID_T_TYPE	__S32_TYPE
+#define __TIMER_T_TYPE		__S32_TYPE
+#define __BLKSIZE_T_TYPE	__SLONGWORD_TYPE
+#define __FSID_T_TYPE		struct { int __val[2]; }
+
+/* Number of descriptors that can fit in an `fd_set'.  */
+#define	__FD_SETSIZE		1024
+
+
+#endif /* bits/typesizes.h */
diff --git a/sysdeps/unix/sysv/linux/x86_64/bits/types.h b/sysdeps/unix/sysv/linux/x86_64/bits/types.h
deleted file mode 100644
index e46e5a0f12..0000000000
--- a/sysdeps/unix/sysv/linux/x86_64/bits/types.h
+++ /dev/null
@@ -1,185 +0,0 @@
-/* Copyright (C) 2001, 2002 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.  */
-
-/*
- * Never include this file directly; use <sys/types.h> instead.
- */
-
-#ifndef	_BITS_TYPES_H
-#define	_BITS_TYPES_H	1
-
-#include <features.h>
-
-#define __need_size_t
-#include <stddef.h>
-#include <bits/wordsize.h>
-
-/* Convenience types.  */
-typedef unsigned char __u_char;
-typedef unsigned short int __u_short;
-typedef unsigned int __u_int;
-typedef unsigned long int __u_long;
-#if __WORDSIZE == 64
-typedef unsigned long int __u_quad_t;
-typedef long int __quad_t;
-#else
-# ifdef __GLIBC_HAVE_LONG_LONG
-__extension__ typedef unsigned long long int __u_quad_t;
-__extension__ typedef long long int __quad_t;
-# else
-typedef struct
-  {
-    long int __val[2];
-  } __quad_t;
-typedef struct
-  {
-    __u_long __val[2];
-  } __u_quad_t;
-# endif
-#endif
-typedef signed char __int8_t;
-typedef unsigned char __uint8_t;
-typedef signed short int __int16_t;
-typedef unsigned short int __uint16_t;
-typedef signed int __int32_t;
-typedef unsigned int __uint32_t;
-#if __WORDSIZE == 64
-typedef signed long int __int64_t;
-typedef unsigned long int __uint64_t;
-#else
-# ifdef __GLIBC_HAVE_LONG_LONG
-__extension__ typedef signed long long int __int64_t;
-__extension__ typedef unsigned long long int __uint64_t;
-# endif
-#endif
-typedef __quad_t *__qaddr_t;
-
-#if __WORDSIZE == 64
-typedef __uint64_t __dev_t;		/* Type of device numbers.  */
-#else
-typedef __u_quad_t __dev_t;		/* Type of device numbers.  */
-#endif
-typedef __uint32_t __uid_t;		/* Type of user identifications.  */
-typedef __uint32_t __gid_t;		/* Type of group identifications.  */
-#if __WORDSIZE == 64
-typedef __uint64_t __ino_t;		/* Type of file serial numbers.  */
-typedef __uint64_t __ino64_t;		/*  "" (LFS) */
-#else
-typedef __u_long __ino_t;		/* Type of file serial numbers.  */
-typedef __u_quad_t __ino64_t;		/*  "" (LFS) */
-#endif
-typedef __uint32_t __mode_t;		/* Type of file attribute bitmasks.  */
-#if __WORDSIZE == 64
-typedef __uint64_t __nlink_t;		/* Type of file link counts.  */
-typedef __int64_t  __off_t;		/* Type of file sizes and offsets.  */
-typedef __quad_t __loff_t;		/* Type of file sizes and offsets.  */
-typedef __loff_t  __off64_t;		/*  "" (LFS) */
-#else
-typedef __u_int __nlink_t;		/* Type of file link counts.  */
-typedef long int __off_t;		/* Type of file sizes and offsets.  */
-typedef __int64_t  __loff_t;		/* Type of file sizes and offsets.  */
-typedef __int64_t  __off64_t;		/*  "" (LFS) */
-#endif
-typedef __int32_t  __pid_t;		/* Type of process identifications.  */
-#if __WORDSIZE == 64
-typedef __int64_t  __ssize_t;		/* Type of a byte count, or error.  */
-typedef __uint64_t  __rlim_t;		/* Type of resource counts.  */
-typedef __uint64_t  __rlim64_t;		/*  "" (LFS) */
-typedef __int64_t  __blkcnt_t;		/* Type to count nr disk blocks.  */
-typedef __int64_t  __blkcnt64_t;	/*  "" (LFS) */
-typedef __uint64_t __fsblkcnt_t;	/* Type to count file system blocks.  */
-typedef __uint64_t __fsblkcnt64_t;	/*  "" (LFS) */
-typedef __uint64_t __fsfilcnt_t;	/* Type to count file system inodes.  */
-typedef __uint64_t __fsfilcnt64_t;	/*  "" (LFS) */
-typedef __uint32_t __id_t;		/* General type for IDs.  */
-#else
-typedef int __ssize_t;			/* Type of a byte count, or error.  */
-typedef __u_long __rlim_t;		/* Type of resource counts.  */
-typedef __u_quad_t __rlim64_t;		/* Type of resource counts (LFS).  */
-typedef long int  __blkcnt_t;		/* Type to count nr disk blocks.  */
-typedef __quad_t  __blkcnt64_t;		/*  "" (LFS) */
-typedef __u_long __fsblkcnt_t;		/* Type to count file system blocks.  */
-typedef __u_quad_t __fsblkcnt64_t;	/*  "" (LFS) */
-typedef __u_long __fsfilcnt_t;		/* Type to count file system inodes.  */
-typedef __u_quad_t __fsfilcnt64_t;	/*  "" (LFS) */
-typedef __u_int __id_t;			/* General type for ID.  */
-#endif
-
-typedef struct
-  {
-    int __val[2];
-  } __fsid_t;				/* Type of file system IDs.  */
-
-/* Everythin' else.  */
-typedef int __daddr_t;			/* Type of a disk address.  */
-typedef char *__caddr_t;		/* Type of a core address.  */
-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;
-typedef int __key_t;			/* Type of a SYSV IPC key. */
-
-/* Clock ID used in clock and timer functions.  */
-typedef int __clockid_t;
-
-/* Timer ID returned by `timer_create'.  */
-typedef int __timer_t;
-
-/* Used in `struct shmid_ds'.  */
-#if __WORDSIZE == 64
-typedef int __ipc_pid_t;
-#else
-typedef unsigned short int __ipc_pid_t;
-#endif
-
-/* type to represent block size. */
-typedef long int __blksize_t;
-
-/* Due to incaution, we may have gotten these from a kernel header file.  */
-#undef __FD_SETSIZE
-#undef __FDMASK
-
-/* Number of descriptors that can fit in an `fd_set'.  */
-#define __FD_SETSIZE	1024
-
-/* Used in XTI.  */
-#if __WORDSIZE == 64
-typedef int __t_scalar_t;
-typedef unsigned int __t_uscalar_t;
-#else
-typedef long int __t_scalar_t;
-typedef unsigned long int __t_uscalar_t;
-#endif
-
-/* Duplicates info from stdint.h but this is used in unistd.h.  */
-#if __WORDSIZE == 64
-typedef long int __intptr_t;
-#else
-typedef int __intptr_t;
-#endif
-
-/* Duplicate info from sys/socket.h.  */
-typedef unsigned int __socklen_t;
-
-/* Now add the thread types.  */
-#if defined __USE_POSIX199506 || defined __USE_UNIX98
-# include <bits/pthreadtypes.h>
-#endif
-
-#endif /* bits/types.h */