about summary refs log tree commit diff
path: root/sysdeps/unix
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix')
-rw-r--r--sysdeps/unix/Makefile49
-rw-r--r--sysdeps/unix/bsd/bits/dirent.h (renamed from sysdeps/unix/bsd/direntry.h)0
-rw-r--r--sysdeps/unix/bsd/bits/fcntl.h (renamed from sysdeps/unix/bsd/fcntlbits.h)11
-rw-r--r--sysdeps/unix/bsd/bits/posix_opt.h (renamed from sysdeps/unix/bsd/posix_opt.h)0
-rw-r--r--sysdeps/unix/bsd/bits/signum.h (renamed from sysdeps/unix/bsd/signum.h)0
-rw-r--r--sysdeps/unix/bsd/bits/stat.h (renamed from sysdeps/unix/bsd/statbuf.h)11
-rw-r--r--sysdeps/unix/bsd/bits/waitflags.h (renamed from sysdeps/unix/bsd/waitflags.h)9
-rw-r--r--sysdeps/unix/bsd/bsd4.4/bits/dirent.h (renamed from sysdeps/unix/bsd/bsd4.4/direntry.h)0
-rw-r--r--sysdeps/unix/bsd/bsd4.4/bits/errno.h (renamed from sysdeps/unix/bsd/bsd4.4/errnos.h)0
-rw-r--r--sysdeps/unix/bsd/bsd4.4/bits/fcntl.h (renamed from sysdeps/unix/bsd/bsd4.4/fcntlbits.h)11
-rw-r--r--sysdeps/unix/bsd/bsd4.4/bits/ioctls.h (renamed from sysdeps/unix/bsd/bsd4.4/ioctls.h)0
-rw-r--r--sysdeps/unix/bsd/bsd4.4/bits/sockaddr.h (renamed from sysdeps/unix/bsd/bsd4.4/sockaddrcom.h)10
-rw-r--r--sysdeps/unix/bsd/bsd4.4/tcgetattr.c2
-rw-r--r--sysdeps/unix/bsd/bsd4.4/tcsetattr.c2
-rw-r--r--sysdeps/unix/bsd/m68k/sysdep.S2
-rw-r--r--sysdeps/unix/bsd/osf/alpha/bits/stat.h (renamed from sysdeps/unix/bsd/osf/alpha/statbuf.h)14
-rw-r--r--sysdeps/unix/bsd/osf/bits/sigaction.h (renamed from sysdeps/unix/bsd/osf/sigaction.h)0
-rw-r--r--sysdeps/unix/bsd/osf/sys/mman.h2
-rw-r--r--sysdeps/unix/bsd/sun/bits/signum.h (renamed from sysdeps/unix/bsd/sun/signum.h)0
-rw-r--r--sysdeps/unix/bsd/sun/m68k/bits/sigcontext.h (renamed from sysdeps/unix/bsd/sun/m68k/sigcontext.h)0
-rw-r--r--sysdeps/unix/bsd/sun/m68k/sethostid.S2
-rw-r--r--sysdeps/unix/bsd/sun/sparc/bits/sigcontext.h (renamed from sysdeps/unix/bsd/sun/sparc/sigcontext.h)0
-rw-r--r--sysdeps/unix/bsd/sun/sparc/sethostid.S4
-rw-r--r--sysdeps/unix/bsd/sun/sunos4/bits/fcntl.h (renamed from sysdeps/unix/bsd/sun/sunos4/fcntlbits.h)11
-rw-r--r--sysdeps/unix/bsd/sun/sunos4/bits/resource.h (renamed from sysdeps/unix/bsd/sun/sunos4/resourcebits.h)0
-rw-r--r--sysdeps/unix/bsd/sun/sunos4/bits/termios.h (renamed from sysdeps/unix/bsd/sun/sunos4/termbits.h)0
-rw-r--r--sysdeps/unix/bsd/sun/sunos4/bits/utsname.h (renamed from sysdeps/unix/bsd/sun/sunos4/utsnamelen.h)0
-rw-r--r--sysdeps/unix/bsd/sun/sunos4/sys/mman.h2
-rw-r--r--sysdeps/unix/bsd/ultrix4/bits/fcntl.h (renamed from sysdeps/unix/bsd/ultrix4/fcntlbits.h)11
-rw-r--r--sysdeps/unix/bsd/ultrix4/bits/posix_opt.h (renamed from sysdeps/unix/bsd/ultrix4/posix_opt.h)0
-rw-r--r--sysdeps/unix/bsd/ultrix4/bits/utsname.h (renamed from sysdeps/unix/bsd/ultrix4/utsnamelen.h)0
-rw-r--r--sysdeps/unix/bsd/ultrix4/mips/bits/sigcontext.h (renamed from sysdeps/unix/bsd/ultrix4/mips/sigcontext.h)0
-rw-r--r--sysdeps/unix/bsd/ultrix4/sys/mman.h2
-rw-r--r--sysdeps/unix/bsd/vax/sysdep.S2
-rw-r--r--sysdeps/unix/common/bits/dirent.h (renamed from sysdeps/unix/common/direntry.h)0
-rw-r--r--sysdeps/unix/common/bits/fcntl.h (renamed from sysdeps/unix/common/fcntlbits.h)11
-rw-r--r--sysdeps/unix/dirstream.h2
-rw-r--r--sysdeps/unix/i386/sysdep.S2
-rw-r--r--sysdeps/unix/mips/sysdep.S2
-rw-r--r--sysdeps/unix/mk-local_lim.c3
-rw-r--r--sysdeps/unix/sparc/sysdep.S2
-rw-r--r--sysdeps/unix/sysv/bits/dirent.h (renamed from sysdeps/unix/sysv/direntry.h)0
-rw-r--r--sysdeps/unix/sysv/bits/fcntl.h (renamed from sysdeps/unix/sysv/fcntlbits.h)10
-rw-r--r--sysdeps/unix/sysv/bits/local_lim.h (renamed from sysdeps/unix/sysv/local_lim.h)0
-rw-r--r--sysdeps/unix/sysv/bits/signum.h (renamed from sysdeps/unix/sysv/signum.h)0
-rw-r--r--sysdeps/unix/sysv/bits/stat.h (renamed from sysdeps/unix/sysv/statbuf.h)12
-rw-r--r--sysdeps/unix/sysv/bits/utmp.h57
-rw-r--r--sysdeps/unix/sysv/bits/utsname.h (renamed from sysdeps/unix/sysv/utsnamelen.h)0
-rw-r--r--sysdeps/unix/sysv/irix4/bits/confname.h (renamed from sysdeps/unix/sysv/irix4/confname.h)0
-rw-r--r--sysdeps/unix/sysv/irix4/bits/fcntl.h (renamed from sysdeps/unix/sysv/irix4/fcntlbits.h)11
-rw-r--r--sysdeps/unix/sysv/irix4/bits/signum.h (renamed from sysdeps/unix/sysv/irix4/signum.h)0
-rw-r--r--sysdeps/unix/sysv/irix4/bits/stat.h (renamed from sysdeps/unix/sysv/irix4/statbuf.h)12
-rw-r--r--sysdeps/unix/sysv/irix4/sys/mman.h2
-rw-r--r--sysdeps/unix/sysv/linux/Dist4
-rw-r--r--sysdeps/unix/sysv/linux/Makefile4
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/fcntl.h (renamed from sysdeps/unix/sysv/linux/alpha/fcntlbits.h)8
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/ioctls.h (renamed from sysdeps/unix/sysv/linux/sparc/ioctls.h)12
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/ipc.h (renamed from sysdeps/unix/sysv/linux/alpha/sys/ipc_buf.h)0
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/sigaction.h (renamed from sysdeps/unix/sysv/linux/alpha/sigaction.h)0
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/signum.h (renamed from sysdeps/unix/sysv/linux/alpha/signum.h)0
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/stat.h (renamed from sysdeps/unix/sysv/linux/alpha/statbuf.h)10
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/termios.h (renamed from sysdeps/unix/sysv/linux/alpha/termbits.h)0
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/time.h (renamed from sysdeps/unix/sysv/linux/alpha/timebits.h)12
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/types.h (renamed from sysdeps/unix/sysv/linux/alpha/gnu/types.h)33
-rw-r--r--sysdeps/unix/sysv/linux/alpha/brk.S2
-rw-r--r--sysdeps/unix/sysv/linux/alpha/clone.S2
-rw-r--r--sysdeps/unix/sysv/linux/alpha/kernel_termios.h (renamed from sysdeps/unix/sysv/linux/powerpc/sys/kernel_termios.h)15
-rw-r--r--sysdeps/unix/sysv/linux/alpha/sys/kernel_termios.h25
-rw-r--r--sysdeps/unix/sysv/linux/arm/clone.S2
-rw-r--r--sysdeps/unix/sysv/linux/arm/profil-counter.h2
-rw-r--r--sysdeps/unix/sysv/linux/arm/socket.S2
-rw-r--r--sysdeps/unix/sysv/linux/bits/dirent.h (renamed from sysdeps/unix/sysv/linux/direntry.h)0
-rw-r--r--sysdeps/unix/sysv/linux/bits/errno.h (renamed from sysdeps/unix/sysv/linux/errnos.h)0
-rw-r--r--sysdeps/unix/sysv/linux/bits/fcntl.h (renamed from sysdeps/unix/sysv/linux/fcntlbits.h)8
-rw-r--r--sysdeps/unix/sysv/linux/bits/ioctl-types.h (renamed from sysdeps/unix/sysv/linux/ioctl-types.h)10
-rw-r--r--sysdeps/unix/sysv/linux/bits/ioctls.h (renamed from sysdeps/unix/sysv/linux/ioctls.h)10
-rw-r--r--sysdeps/unix/sysv/linux/bits/ipc.h (renamed from sysdeps/unix/sysv/linux/sys/ipc_buf.h)0
-rw-r--r--sysdeps/unix/sysv/linux/bits/local_lim.h (renamed from sysdeps/unix/sysv/linux/local_lim.h)0
-rw-r--r--sysdeps/unix/sysv/linux/bits/msq.h (renamed from sysdeps/unix/sysv/linux/sys/msq_buf.h)0
-rw-r--r--sysdeps/unix/sysv/linux/bits/posix_opt.h (renamed from sysdeps/unix/sysv/linux/posix_opt.h)10
-rw-r--r--sysdeps/unix/sysv/linux/bits/resource.h (renamed from sysdeps/unix/sysv/linux/resourcebits.h)0
-rw-r--r--sysdeps/unix/sysv/linux/bits/sched.h (renamed from sysdeps/unix/sysv/linux/schedbits.h)9
-rw-r--r--sysdeps/unix/sysv/linux/bits/sem.h (renamed from sysdeps/unix/sysv/linux/sys/sem_buf.h)0
-rw-r--r--sysdeps/unix/sysv/linux/bits/shm.h (renamed from sysdeps/unix/sysv/linux/sys/shm_buf.h)0
-rw-r--r--sysdeps/unix/sysv/linux/bits/sigaction.h (renamed from sysdeps/unix/sysv/linux/sigaction.h)0
-rw-r--r--sysdeps/unix/sysv/linux/bits/sigcontext.h (renamed from sysdeps/unix/sysv/linux/sigcontext.h)9
-rw-r--r--sysdeps/unix/sysv/linux/bits/signum.h (renamed from sysdeps/unix/sysv/linux/signum.h)0
-rw-r--r--sysdeps/unix/sysv/linux/bits/sigset.h (renamed from sysdeps/unix/sysv/linux/sigset.h)0
-rw-r--r--sysdeps/unix/sysv/linux/bits/socket.h (renamed from sysdeps/unix/sysv/linux/socketbits.h)10
-rw-r--r--sysdeps/unix/sysv/linux/bits/stat.h (renamed from sysdeps/unix/sysv/linux/statbuf.h)10
-rw-r--r--sysdeps/unix/sysv/linux/bits/statfs.h (renamed from sysdeps/unix/sysv/linux/statfsbuf.h)12
-rw-r--r--sysdeps/unix/sysv/linux/bits/termios.h (renamed from sysdeps/unix/sysv/linux/termbits.h)11
-rw-r--r--sysdeps/unix/sysv/linux/bits/time.h (renamed from sysdeps/unix/sysv/linux/timebits.h)10
-rw-r--r--sysdeps/unix/sysv/linux/bits/types.h (renamed from sysdeps/unix/sysv/linux/gnu/types.h)20
-rw-r--r--sysdeps/unix/sysv/linux/bits/uio.h (renamed from sysdeps/unix/sysv/linux/iovec.h)7
-rw-r--r--sysdeps/unix/sysv/linux/bits/ustat.h (renamed from sysdeps/unix/sysv/linux/ustatbits.h)0
-rw-r--r--sysdeps/unix/sysv/linux/bits/utsname.h (renamed from sysdeps/unix/sysv/linux/utsnamelen.h)0
-rw-r--r--sysdeps/unix/sysv/linux/bits/waitflags.h (renamed from sysdeps/unix/sysv/linux/waitflags.h)9
-rw-r--r--sysdeps/unix/sysv/linux/i386/clone.S2
-rw-r--r--sysdeps/unix/sysv/linux/i386/profil-counter.h2
-rw-r--r--sysdeps/unix/sysv/linux/i386/socket.S2
-rw-r--r--sysdeps/unix/sysv/linux/kernel_termios.h38
-rw-r--r--sysdeps/unix/sysv/linux/m68k/clone.S2
-rw-r--r--sysdeps/unix/sysv/linux/m68k/socket.S2
-rw-r--r--sysdeps/unix/sysv/linux/netinet/ip.h4
-rw-r--r--sysdeps/unix/sysv/linux/netinet/tcp.h2
-rw-r--r--sysdeps/unix/sysv/linux/netipx/ipx.h90
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/bits/ioctl-types.h (renamed from sysdeps/unix/sysv/linux/powerpc/ioctl-types.h)0
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/bits/termios.h (renamed from sysdeps/unix/sysv/linux/powerpc/termbits.h)0
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/clone.S2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/kernel_termios.h26
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/socket.S2
-rw-r--r--sysdeps/unix/sysv/linux/socketcall.h (renamed from sysdeps/unix/sysv/linux/sys/socketcall.h)0
-rw-r--r--sysdeps/unix/sysv/linux/sparc/bits/fcntl.h (renamed from sysdeps/unix/sysv/linux/sparc/fcntlbits.h)0
-rw-r--r--sysdeps/unix/sysv/linux/sparc/bits/ioctls.h (renamed from sysdeps/unix/sysv/linux/alpha/ioctls.h)12
-rw-r--r--sysdeps/unix/sysv/linux/sparc/bits/sigaction.h (renamed from sysdeps/unix/sysv/linux/sparc/sigaction.h)0
-rw-r--r--sysdeps/unix/sysv/linux/sparc/bits/signum.h (renamed from sysdeps/unix/sysv/linux/sparc/signum.h)0
-rw-r--r--sysdeps/unix/sysv/linux/sparc/bits/termios.h (renamed from sysdeps/unix/sysv/linux/sparc/termbits.h)0
-rw-r--r--sysdeps/unix/sysv/linux/sparc/profil-counter.h2
-rw-r--r--sysdeps/unix/sysv/linux/sparc/socket.S2
-rw-r--r--sysdeps/unix/sysv/linux/sys/kernel_termios.h20
-rw-r--r--sysdeps/unix/sysv/linux/sys/mman.h2
-rw-r--r--sysdeps/unix/sysv/linux/sys/syscall.h4
-rw-r--r--sysdeps/unix/sysv/linux/tcgetattr.c2
-rw-r--r--sysdeps/unix/sysv/linux/tcsetattr.c2
-rw-r--r--sysdeps/unix/sysv/minix/bits/sigaction.h (renamed from sysdeps/unix/sysv/minix/sigaction.h)0
-rw-r--r--sysdeps/unix/sysv/sco3.2.4/bits/confname.h (renamed from sysdeps/unix/sysv/sco3.2.4/confname.h)0
-rw-r--r--sysdeps/unix/sysv/sco3.2.4/bits/sigaction.h (renamed from sysdeps/unix/sysv/sco3.2.4/sigaction.h)0
-rw-r--r--sysdeps/unix/sysv/sco3.2.4/sysconf.S2
-rw-r--r--sysdeps/unix/sysv/sco3.2/bits/local_lim.h (renamed from sysdeps/unix/sysv/sco3.2/local_lim.h)6
-rw-r--r--sysdeps/unix/sysv/sysv4/bits/sigaction.h (renamed from sysdeps/unix/sysv/sysv4/sigaction.h)0
-rw-r--r--sysdeps/unix/sysv/sysv4/bits/signum.h (renamed from sysdeps/unix/sysv/sysv4/signum.h)0
-rw-r--r--sysdeps/unix/sysv/sysv4/bits/sigset.h (renamed from sysdeps/unix/sysv/sysv4/sigset.h)0
-rw-r--r--sysdeps/unix/sysv/sysv4/bits/utsname.h (renamed from sysdeps/unix/sysv/sysv4/utsnamelen.h)0
-rw-r--r--sysdeps/unix/sysv/sysv4/bits/waitflags.h (renamed from sysdeps/unix/sysv/sysv4/waitflags.h)9
-rw-r--r--sysdeps/unix/sysv/sysv4/i386/bits/stat.h (renamed from sysdeps/unix/sysv/sysv4/i386/statbuf.h)12
-rw-r--r--sysdeps/unix/sysv/sysv4/i386/sysdep.h2
-rw-r--r--sysdeps/unix/sysv/sysv4/solaris2/bits/signum.h (renamed from sysdeps/unix/sysv/sysv4/solaris2/signum.h)0
-rw-r--r--sysdeps/unix/sysv/sysv4/solaris2/bits/stat.h (renamed from sysdeps/unix/sysv/sysv4/solaris2/statbuf.h)14
-rw-r--r--sysdeps/unix/sysv/sysv4/solaris2/sparc/bits/sigcontext.h1
-rw-r--r--sysdeps/unix/sysv/sysv4/solaris2/sparc/sigcontext.h1
-rw-r--r--sysdeps/unix/sysv/sysv4/solaris2/sparc/sysdep.S2
-rw-r--r--sysdeps/unix/sysv/utmpbits.h58
143 files changed, 523 insertions, 365 deletions
diff --git a/sysdeps/unix/Makefile b/sysdeps/unix/Makefile
index f51dc508a0..0e837ca2e7 100644
--- a/sysdeps/unix/Makefile
+++ b/sysdeps/unix/Makefile
@@ -20,7 +20,7 @@
 config-generated := $(config-generated) $(unix-generated)
 
 ifeq (,$(filter-out $(sysdep_dir)/stub/ $(common-objpfx),\
-	$(dir $(firstword $(wildcard $(+sysdep_dirs:%=%/local_lim.h))))))
+	$(dir $(firstword $(wildcard $(+sysdep_dirs:%=%/bits/local_lim.h))))))
 
 ifneq (,$(wildcard $(sysincludedir)/sys/param.h))
 mk-local_lim-CFLAGS += -DHAVE_SYS_PARAM_H
@@ -32,13 +32,13 @@ ifneq (,$(wildcard $(sysincludedir)/limits.h))
 mk-local_lim-CFLAGS += -DHAVE_LIMITS_H
 endif
 
-$(common-objpfx)local_lim.h: $(common-objpfx)mk-local_lim
+$(common-objpfx)bits/local_lim.h: $(common-objpfx)mk-local_lim
 	$(dir $<)$(notdir $<) > $@-t
 	mv -f $@-t $@
 $(common-objpfx)mk-local_lim: $(sysdep_dir)/unix/mk-local_lim.c
 	$(common-objdir-compile)
 
-before-compile := $(before-compile) $(common-objpfx)local_lim.h
+before-compile := $(before-compile) $(common-objpfx)bits/local_lim.h
 common-generated := $(common-generated) local_lim.h mk-local_lim
 
 endif
@@ -51,8 +51,8 @@ before-compile := $(before-compile) $(common-objpfx)sys/param.h
 
 $(common-objpfx)sys/param.h: $(sysincludedir)/sys/param.h
 	$(make-target-directory)
-	(echo '#ifndef _GNU_SYS_PARAM_H';	\
-	 echo '#define _GNU_SYS_PARAM_H 1';	\
+	(echo '#ifndef _SYS_PARAM_H';	\
+	 echo '#define _SYS_PARAM_H 1';	\
 	 echo '#include <endian.h>';		\
 	 awk < $<			\
 	   '/^#define[ 	]*NULL/ { print "#ifndef NULL";	\
@@ -127,13 +127,13 @@ endif # misc
 endif # No sysdep sys/param.h.
 
 ifeq (,$(filter-out $(sysdep_dir)/stub/ $(common-objpfx),\
-	$(dir $(firstword $(wildcard $(+sysdep_dirs:%=%/errnos.h))))))
+	$(dir $(firstword $(wildcard $(+sysdep_dirs:%=%/bits/errno.h))))))
 
 # These need to exist before any compiling is done,
 # so cpp doesn't instead find the stub versions.
-before-compile := $(before-compile) $(common-objpfx)errnos.h
+before-compile := $(before-compile) $(common-objpfx)bits/errno.h
 
-$(common-objpfx)errnos.h: $(common-objpfx)make-errnos
+$(common-objpfx)bits/errno.h: $(common-objpfx)make-errnos
 	$(dir $<)$(notdir $<) > $@-tmp
 	mv $@-tmp $@
 
@@ -156,11 +156,11 @@ common-generated := $(common-generated) \
 endif
 
 ifeq (,$(filter-out $(sysdep_dir)/stub/ $(common-objpfx),\
-	$(dir $(firstword $(wildcard $(+sysdep_dirs:%=%/ioctls.h))))))
+	$(dir $(firstword $(wildcard $(+sysdep_dirs:%=%/bits/ioctls.h))))))
 
-before-compile := $(before-compile) $(common-objpfx)ioctls.h
+before-compile := $(before-compile) $(common-objpfx)bits/ioctls.h
 
-$(common-objpfx)ioctls.h: $(common-objpfx)make-ioctls
+$(common-objpfx)bits/ioctls.h: $(common-objpfx)make-ioctls
 	$(dir $<)$(notdir $<) > $@-tmp
 	mv $@-tmp $@
 
@@ -180,25 +180,26 @@ $(common-objpfx)make-ioctls.c: $(sysdep_dir)/unix/ioctls-tmpl.c \
 	mv $@T $@
 
 
-termbits.h := $(firstword $(wildcard $(+sysdep_dirs:%=%/termbits.h)))
-ifeq ($(termbits.h),$(sysdep_dir)/generic/termbits.h)
-termbits.h := # Ignore the generic version.
+bits_termios.h := $(firstword $(wildcard $(+sysdep_dirs:%=%/bits/termios.h)))
+ifeq ($(bits_termios.h),$(sysdep_dir)/generic/bits/termios.h)
+bits_termios.h := # Ignore the generic version.
 endif
 
-# If there is a system-specific <termbits.h> file, we want to omit all the
-# symbols it defines from ioctls.  Otherwise, both ioctls.h and termbits.h
-# would define them.  The system-specific <termbits.h> file presumably
-# defines them with the same values as we find from the system's headers.
-# We also want to omit from ioctls the symbols defined in our own
+# If there is a system-specific <bits/termios.h> file, we want to omit
+# all the symbols it defines from ioctls.  Otherwise, both
+# <bits/ioctls.h> and <bits/termios.h> would define them.  The
+# system-specific <bits/termios.h> file presumably defines them with
+# the same values as we find from the system's headers.  We also want
+# to omit from ioctls the symbols defined in our own
 # <sys/ttydefaults.h>, to avoid multiple definition conflicts.  We use
-# snarf-ioctls on these files to find what symbols we want to omit.  fgrep
-# -xv gives all lines which do not match in their entirety; without -x,
-# CSTOP's presence elided TIOCSTOP.
+# snarf-ioctls on these files to find what symbols we want to omit.
+# fgrep -xv gives all lines which do not match in their entirety;
+# without -x, CSTOP's presence elided TIOCSTOP.
 
 $(common-objpfx)ioctls: $(sysdep_dir)/unix/snarf-ioctls \
 			$(sysincludedir)/sys/ioctl.h $(ioctl-includes)
 	$(dir $<)$(notdir $<) $(filter-out $<,$^) \
-	| fgrep -xv "`($(dir $<)$(notdir $<) $(termbits.h) \
+	| fgrep -xv "`($(dir $<)$(notdir $<) $(bits_termios.h) \
 					     $(..)sysdeps/generic/sys/ttydefaults.h; \
 		      echo NULL) \
 		     | sort | uniq`" \
@@ -206,7 +207,7 @@ $(common-objpfx)ioctls: $(sysdep_dir)/unix/snarf-ioctls \
 	mv $@-tmp $@
 
 common-generated := $(common-generated) \
-		    ioctls.h ioctls make-ioctls make-ioctls.c
+		    bits/ioctls.h ioctls make-ioctls make-ioctls.c
 endif
 
 ifeq ($(subdir),stdio-common)
diff --git a/sysdeps/unix/bsd/direntry.h b/sysdeps/unix/bsd/bits/dirent.h
index 2f563ec306..2f563ec306 100644
--- a/sysdeps/unix/bsd/direntry.h
+++ b/sysdeps/unix/bsd/bits/dirent.h
diff --git a/sysdeps/unix/bsd/fcntlbits.h b/sysdeps/unix/bsd/bits/fcntl.h
index 1e87a379e4..3d9bcb5c60 100644
--- a/sysdeps/unix/bsd/fcntlbits.h
+++ b/sysdeps/unix/bsd/bits/fcntl.h
@@ -17,9 +17,9 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef	_FCNTLBITS_H
-
-#define	_FCNTLBITS_H	1
+#ifndef	_FCNTL_H
+#error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
+#endif
 
 
 /* File access modes for `open' and `fcntl'.  */
@@ -94,7 +94,7 @@
 #define	FD_CLOEXEC	1	/* Close on exec.  */
 
 
-#include <gnu/types.h>
+#include <bits/types.h>
 
 /* The structure describing an advisory lock.  This is the type of the third
    argument to `fcntl' for the F_GETLK, F_SETLK, and F_SETLKW requests.  */
@@ -112,6 +112,3 @@ struct flock
 #define	F_RDLCK	1	/* Read lock.  */
 #define	F_WRLCK	2	/* Write lock.  */
 #define	F_UNLCK	3	/* Remove lock.  */
-
-
-#endif	/* fcntlbits.h */
diff --git a/sysdeps/unix/bsd/posix_opt.h b/sysdeps/unix/bsd/bits/posix_opt.h
index 7d5e5782eb..7d5e5782eb 100644
--- a/sysdeps/unix/bsd/posix_opt.h
+++ b/sysdeps/unix/bsd/bits/posix_opt.h
diff --git a/sysdeps/unix/bsd/signum.h b/sysdeps/unix/bsd/bits/signum.h
index 775240fc05..775240fc05 100644
--- a/sysdeps/unix/bsd/signum.h
+++ b/sysdeps/unix/bsd/bits/signum.h
diff --git a/sysdeps/unix/bsd/statbuf.h b/sysdeps/unix/bsd/bits/stat.h
index c4a4e0964b..037433f388 100644
--- a/sysdeps/unix/bsd/statbuf.h
+++ b/sysdeps/unix/bsd/bits/stat.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992, 1996 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1992, 1996, 1997 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -16,11 +16,14 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef	_STATBUF_H
+/*
+ * Never include this file directly; use <sys/stat.h> instead.
+ */
 
+#ifndef	_STATBUF_H
 #define	_STATBUF_H	1
 
-#include <gnu/types.h>
+#include <bits/types.h>
 
 /* Structure describing file characteristics.  */
 struct stat
@@ -81,4 +84,4 @@ struct stat
 #define	__S_IEXEC	0100	/* Execute by owner.  */
 
 
-#endif /* statbuf.h */
+#endif /* bits/stat.h */
diff --git a/sysdeps/unix/bsd/waitflags.h b/sysdeps/unix/bsd/bits/waitflags.h
index 00a1520db4..ca952f90b4 100644
--- a/sysdeps/unix/bsd/waitflags.h
+++ b/sysdeps/unix/bsd/bits/waitflags.h
@@ -1,5 +1,5 @@
 /* Definitions of flag bits for `waitpid' et al.  Hurd version.
-   Copyright (C) 1992, 1996 Free Software Foundation, Inc.
+   Copyright (C) 1992, 1996, 1997 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -17,9 +17,10 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef	_WAITFLAGS_H
+#ifndef _SYS_WAIT_H
+#error "Never use <bits/waitflags.h> directly; include <sys/wait.h> instead."
+#endif
 
-#define	_WAITFLAGS_H	1
 
 /* Bits in the third argument to `waitpid'.  */
 #define	WNOHANG		1	/* Don't block waiting.  */
@@ -27,5 +28,3 @@
 #ifdef  __USE_GNU
 #define WNOREAP		4	/* Don't remove record of child reported.  */
 #endif
-
-#endif	/* waitflags.h */
diff --git a/sysdeps/unix/bsd/bsd4.4/direntry.h b/sysdeps/unix/bsd/bsd4.4/bits/dirent.h
index b9e0d7277e..b9e0d7277e 100644
--- a/sysdeps/unix/bsd/bsd4.4/direntry.h
+++ b/sysdeps/unix/bsd/bsd4.4/bits/dirent.h
diff --git a/sysdeps/unix/bsd/bsd4.4/errnos.h b/sysdeps/unix/bsd/bsd4.4/bits/errno.h
index c2a9c08413..c2a9c08413 100644
--- a/sysdeps/unix/bsd/bsd4.4/errnos.h
+++ b/sysdeps/unix/bsd/bsd4.4/bits/errno.h
diff --git a/sysdeps/unix/bsd/bsd4.4/fcntlbits.h b/sysdeps/unix/bsd/bsd4.4/bits/fcntl.h
index 3ab2bf027d..c00a0e80dd 100644
--- a/sysdeps/unix/bsd/bsd4.4/fcntlbits.h
+++ b/sysdeps/unix/bsd/bsd4.4/bits/fcntl.h
@@ -17,9 +17,9 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef	_FCNTLBITS_H
-
-#define	_FCNTLBITS_H	1
+#ifndef	_FCNTL_H
+#error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
+#endif
 
 
 /* File access modes for `open' and `fcntl'.  */
@@ -94,7 +94,7 @@
 #define	FD_CLOEXEC	1	/* Close on exec.  */
 
 
-#include <gnu/types.h>
+#include <bits/types.h>
 
 /* The structure describing an advisory lock.  This is the type of the third
    argument to `fcntl' for the F_GETLK, F_SETLK, and F_SETLKW requests.  */
@@ -111,6 +111,3 @@ struct flock
 #define	F_RDLCK	1	/* Read lock.  */
 #define	F_WRLCK	2	/* Write lock.  */
 #define	F_UNLCK	3	/* Remove lock.  */
-
-
-#endif	/* fcntlbits.h */
diff --git a/sysdeps/unix/bsd/bsd4.4/ioctls.h b/sysdeps/unix/bsd/bsd4.4/bits/ioctls.h
index 6c351f46a6..6c351f46a6 100644
--- a/sysdeps/unix/bsd/bsd4.4/ioctls.h
+++ b/sysdeps/unix/bsd/bsd4.4/bits/ioctls.h
diff --git a/sysdeps/unix/bsd/bsd4.4/sockaddrcom.h b/sysdeps/unix/bsd/bsd4.4/bits/sockaddr.h
index 87da37df90..d70dfe4031 100644
--- a/sysdeps/unix/bsd/bsd4.4/sockaddrcom.h
+++ b/sysdeps/unix/bsd/bsd4.4/bits/sockaddr.h
@@ -17,8 +17,12 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef _SOCKADDRCOM_H
-#define _SOCKADDRCOM_H	1
+/*
+ * Never include this file directly; use <sys/socket.h> instead.
+ */
+
+#ifndef _BITS_SOCKADDR_H
+#define _BITS_SOCKADDR_H	1
 
 
 /* POSIX.1g specifies this type name for the `sa_family' member.  */
@@ -35,4 +39,4 @@ typedef unsigned char sa_family_t;
 #define __SOCKADDR_COMMON_SIZE	(2 * sizeof (unsigned char))
 
 
-#endif	/* sockaddrcom.h */
+#endif	/* bits/sockaddr.h */
diff --git a/sysdeps/unix/bsd/bsd4.4/tcgetattr.c b/sysdeps/unix/bsd/bsd4.4/tcgetattr.c
index d47443a335..29c7e28b8e 100644
--- a/sysdeps/unix/bsd/bsd4.4/tcgetattr.c
+++ b/sysdeps/unix/bsd/bsd4.4/tcgetattr.c
@@ -19,7 +19,7 @@
 #include <stddef.h>
 #include <termios.h>
 
-/* These are defined both in termbits.h and in ioctls.h.
+/* These are defined both in <bits/termios.h> and in <bits/ioctls.h>.
    They should have the same values, but perhaps not written the same way.  */
 #undef ECHO
 #undef MDMBUF
diff --git a/sysdeps/unix/bsd/bsd4.4/tcsetattr.c b/sysdeps/unix/bsd/bsd4.4/tcsetattr.c
index 7c09f90f0e..2e4b00b68d 100644
--- a/sysdeps/unix/bsd/bsd4.4/tcsetattr.c
+++ b/sysdeps/unix/bsd/bsd4.4/tcsetattr.c
@@ -20,7 +20,7 @@
 #include <stddef.h>
 #include <termios.h>
 
-/* These are defined both in termbits.h and in ioctls.h.
+/* These are defined both in <bits/termios.h> and in <bits/ioctls.h>.
    They should have the same values, but perhaps not written the same way.  */
 #undef ECHO
 #undef MDMBUF
diff --git a/sysdeps/unix/bsd/m68k/sysdep.S b/sysdeps/unix/bsd/m68k/sysdep.S
index cef8990eea..1be2d5a23f 100644
--- a/sysdeps/unix/bsd/m68k/sysdep.S
+++ b/sysdeps/unix/bsd/m68k/sysdep.S
@@ -17,7 +17,7 @@ not, write to the Free Software Foundation, Inc., 675 Mass Ave,
 Cambridge, MA 02139, USA.  */
 
 #define _ERRNO_H
-#include <errnos.h>
+#include <bits/errno.h>
 
 .globl syscall_error
 syscall_error:
diff --git a/sysdeps/unix/bsd/osf/alpha/statbuf.h b/sysdeps/unix/bsd/osf/alpha/bits/stat.h
index 8541922b37..752d4eede1 100644
--- a/sysdeps/unix/bsd/osf/alpha/statbuf.h
+++ b/sysdeps/unix/bsd/osf/alpha/bits/stat.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1996 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1996, 1997 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Brendan Kehoe (brendan@zen.org).
 
@@ -17,10 +17,14 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef	_STATBUF_H
-#define	_STATBUF_H
+/*
+ * Never include this file directly; use <sys/stat.h> instead.
+ */
 
-#include <gnu/types.h>
+#ifndef	_BITS_STAT_H
+#define	_BITS_STAT_H
+
+#include <bits/types.h>
 
 /* Structure describing file characteristics.  */
 struct stat
@@ -73,4 +77,4 @@ struct stat
 #define	__S_IWRITE	0200	/* Write by owner.  */
 #define	__S_IEXEC	0100	/* Execute by owner.  */
 
-#endif	/* statbuf.h */
+#endif	/* bits/stat.h */
diff --git a/sysdeps/unix/bsd/osf/sigaction.h b/sysdeps/unix/bsd/osf/bits/sigaction.h
index df400d4aaa..df400d4aaa 100644
--- a/sysdeps/unix/bsd/osf/sigaction.h
+++ b/sysdeps/unix/bsd/osf/bits/sigaction.h
diff --git a/sysdeps/unix/bsd/osf/sys/mman.h b/sysdeps/unix/bsd/osf/sys/mman.h
index 6dc3e4e0cf..72846195d2 100644
--- a/sysdeps/unix/bsd/osf/sys/mman.h
+++ b/sysdeps/unix/bsd/osf/sys/mman.h
@@ -22,7 +22,7 @@
 #define	_SYS_MMAN_H	1
 #include <features.h>
 
-#include <gnu/types.h>
+#include <bits/types.h>
 #define __need_size_t
 #include <stddef.h>
 
diff --git a/sysdeps/unix/bsd/sun/signum.h b/sysdeps/unix/bsd/sun/bits/signum.h
index a327401d0b..a327401d0b 100644
--- a/sysdeps/unix/bsd/sun/signum.h
+++ b/sysdeps/unix/bsd/sun/bits/signum.h
diff --git a/sysdeps/unix/bsd/sun/m68k/sigcontext.h b/sysdeps/unix/bsd/sun/m68k/bits/sigcontext.h
index 471b516bdc..471b516bdc 100644
--- a/sysdeps/unix/bsd/sun/m68k/sigcontext.h
+++ b/sysdeps/unix/bsd/sun/m68k/bits/sigcontext.h
diff --git a/sysdeps/unix/bsd/sun/m68k/sethostid.S b/sysdeps/unix/bsd/sun/m68k/sethostid.S
index 8b30f3fe65..ab76d75f7b 100644
--- a/sysdeps/unix/bsd/sun/m68k/sethostid.S
+++ b/sysdeps/unix/bsd/sun/m68k/sethostid.S
@@ -25,7 +25,7 @@ SYSCALL (sethostid, 1)
 
 #else
 
-#include <errnos.h>
+#include <bits/errno.h>
 
 .globl _sethostid
 .even
diff --git a/sysdeps/unix/bsd/sun/sparc/sigcontext.h b/sysdeps/unix/bsd/sun/sparc/bits/sigcontext.h
index 290bf817af..290bf817af 100644
--- a/sysdeps/unix/bsd/sun/sparc/sigcontext.h
+++ b/sysdeps/unix/bsd/sun/sparc/bits/sigcontext.h
diff --git a/sysdeps/unix/bsd/sun/sparc/sethostid.S b/sysdeps/unix/bsd/sun/sparc/sethostid.S
index fbafba5277..f8ee805c75 100644
--- a/sysdeps/unix/bsd/sun/sparc/sethostid.S
+++ b/sysdeps/unix/bsd/sun/sparc/sethostid.S
@@ -25,9 +25,9 @@ SYSCALL (sethostid, 1)
 
 #else
 
-/* <errnos.h> only defines E* #ifdef _ERRNO_H.  */
+/* <bits/errno.h> only defines E* #ifdef _ERRNO_H.  */
 #define	_ERRNO_H
-#include <errnos.h>
+#include <bits/errno.h>
 
 ENTRY (sethostid)
 	mov ENOSYS, %o0
diff --git a/sysdeps/unix/bsd/sun/sunos4/fcntlbits.h b/sysdeps/unix/bsd/sun/sunos4/bits/fcntl.h
index a9f66c47a3..b74c80e170 100644
--- a/sysdeps/unix/bsd/sun/sunos4/fcntlbits.h
+++ b/sysdeps/unix/bsd/sun/sunos4/bits/fcntl.h
@@ -17,9 +17,9 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef	_FCNTLBITS_H
-
-#define	_FCNTLBITS_H	1
+#ifndef	_FCNTL_H
+#error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
+#endif
 
 
 /* File access modes for `open' and `fcntl'.  */
@@ -104,7 +104,7 @@
 #define	FD_CLOEXEC	1	/* Close on exec.  */
 
 
-#include <gnu/types.h>
+#include <bits/types.h>
 
 /* The structure describing an advisory lock.  This is the type of the third
    argument to `fcntl' for the F_GETLK, F_SETLK, and F_SETLKW requests.  */
@@ -140,6 +140,3 @@ struct eflock
 #define	F_RDLCK	1	/* Read lock.  */
 #define	F_WRLCK	2	/* Write lock.  */
 #define	F_UNLCK	3	/* Remove lock.  */
-
-
-#endif	/* fcntlbits.h */
diff --git a/sysdeps/unix/bsd/sun/sunos4/resourcebits.h b/sysdeps/unix/bsd/sun/sunos4/bits/resource.h
index ff55773e69..ff55773e69 100644
--- a/sysdeps/unix/bsd/sun/sunos4/resourcebits.h
+++ b/sysdeps/unix/bsd/sun/sunos4/bits/resource.h
diff --git a/sysdeps/unix/bsd/sun/sunos4/termbits.h b/sysdeps/unix/bsd/sun/sunos4/bits/termios.h
index dc0a007208..dc0a007208 100644
--- a/sysdeps/unix/bsd/sun/sunos4/termbits.h
+++ b/sysdeps/unix/bsd/sun/sunos4/bits/termios.h
diff --git a/sysdeps/unix/bsd/sun/sunos4/utsnamelen.h b/sysdeps/unix/bsd/sun/sunos4/bits/utsname.h
index e9111b6504..e9111b6504 100644
--- a/sysdeps/unix/bsd/sun/sunos4/utsnamelen.h
+++ b/sysdeps/unix/bsd/sun/sunos4/bits/utsname.h
diff --git a/sysdeps/unix/bsd/sun/sunos4/sys/mman.h b/sysdeps/unix/bsd/sun/sunos4/sys/mman.h
index fb38c34d90..65771a2aac 100644
--- a/sysdeps/unix/bsd/sun/sunos4/sys/mman.h
+++ b/sysdeps/unix/bsd/sun/sunos4/sys/mman.h
@@ -22,7 +22,7 @@
 #define	_SYS_MMAN_H	1
 #include <features.h>
 
-#include <gnu/types.h>
+#include <bits/types.h>
 #define __need_size_t
 #include <stddef.h>
 
diff --git a/sysdeps/unix/bsd/ultrix4/fcntlbits.h b/sysdeps/unix/bsd/ultrix4/bits/fcntl.h
index ba736e428e..1398b811ce 100644
--- a/sysdeps/unix/bsd/ultrix4/fcntlbits.h
+++ b/sysdeps/unix/bsd/ultrix4/bits/fcntl.h
@@ -17,9 +17,9 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef	_FCNTLBITS_H
-
-#define	_FCNTLBITS_H	1
+#ifndef	_FCNTL_H
+#error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
+#endif
 
 
 /* File access modes for `open' and `fcntl'.  */
@@ -103,7 +103,7 @@
 #define	FD_CLOEXEC	1	/* Close on exec.  */
 
 
-#include <gnu/types.h>
+#include <bits/types.h>
 
 /* The structure describing an advisory lock.  This is the type of the third
    argument to `fcntl' for the F_GETLK, F_SETLK, and F_SETLKW requests.  */
@@ -120,6 +120,3 @@ struct flock
 #define	F_RDLCK	1	/* Read lock.  */
 #define	F_WRLCK	2	/* Write lock.  */
 #define	F_UNLCK	3	/* Remove lock.  */
-
-
-#endif	/* fcntlbits.h */
diff --git a/sysdeps/unix/bsd/ultrix4/posix_opt.h b/sysdeps/unix/bsd/ultrix4/bits/posix_opt.h
index ecd04d1f0e..ecd04d1f0e 100644
--- a/sysdeps/unix/bsd/ultrix4/posix_opt.h
+++ b/sysdeps/unix/bsd/ultrix4/bits/posix_opt.h
diff --git a/sysdeps/unix/bsd/ultrix4/utsnamelen.h b/sysdeps/unix/bsd/ultrix4/bits/utsname.h
index ad4389ab02..ad4389ab02 100644
--- a/sysdeps/unix/bsd/ultrix4/utsnamelen.h
+++ b/sysdeps/unix/bsd/ultrix4/bits/utsname.h
diff --git a/sysdeps/unix/bsd/ultrix4/mips/sigcontext.h b/sysdeps/unix/bsd/ultrix4/mips/bits/sigcontext.h
index 4bddcf2f4b..4bddcf2f4b 100644
--- a/sysdeps/unix/bsd/ultrix4/mips/sigcontext.h
+++ b/sysdeps/unix/bsd/ultrix4/mips/bits/sigcontext.h
diff --git a/sysdeps/unix/bsd/ultrix4/sys/mman.h b/sysdeps/unix/bsd/ultrix4/sys/mman.h
index 2d3c8fe2ef..989bf21754 100644
--- a/sysdeps/unix/bsd/ultrix4/sys/mman.h
+++ b/sysdeps/unix/bsd/ultrix4/sys/mman.h
@@ -22,7 +22,7 @@
 #define	_SYS_MMAN_H	1
 #include <features.h>
 
-#include <gnu/types.h>
+#include <bits/types.h>
 #define __need_size_t
 #include <stddef.h>
 
diff --git a/sysdeps/unix/bsd/vax/sysdep.S b/sysdeps/unix/bsd/vax/sysdep.S
index 618d889742..b5b76aaba5 100644
--- a/sysdeps/unix/bsd/vax/sysdep.S
+++ b/sysdeps/unix/bsd/vax/sysdep.S
@@ -17,7 +17,7 @@ not, write to the Free Software Foundation, Inc., 675 Mass Ave,
 Cambridge, MA 02139, USA.  */
 
 #define _ERRNO_H
-#include <errnos.h>
+#include <bits/errno.h>
 
 .globl _errno
 .globl syscall_error
diff --git a/sysdeps/unix/common/direntry.h b/sysdeps/unix/common/bits/dirent.h
index aa065474bf..aa065474bf 100644
--- a/sysdeps/unix/common/direntry.h
+++ b/sysdeps/unix/common/bits/dirent.h
diff --git a/sysdeps/unix/common/fcntlbits.h b/sysdeps/unix/common/bits/fcntl.h
index e416e0df13..31f213eab7 100644
--- a/sysdeps/unix/common/fcntlbits.h
+++ b/sysdeps/unix/common/bits/fcntl.h
@@ -17,9 +17,9 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef	_FCNTLBITS_H
-
-#define	_FCNTLBITS_H	1
+#ifndef	_FCNTL_H
+#error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
+#endif
 
 
 /* File access modes for `open' and `fcntl'.  */
@@ -98,7 +98,7 @@
 #define	FD_CLOEXEC	1	/* Close on exec.  */
 
 
-#include <gnu/types.h>
+#include <bits/types.h>
 
 /* The structure describing an advisory lock.  This is the type of the third
    argument to `fcntl' for the F_GETLK, F_SETLK, and F_SETLKW requests.  */
@@ -117,6 +117,3 @@ struct flock
 #define	F_RDLCK	1	/* Read lock.  */
 #define	F_WRLCK	2	/* Write lock.  */
 #define	F_UNLCK	3	/* Remove lock.  */
-
-
-#endif	/* fcntlbits.h */
diff --git a/sysdeps/unix/dirstream.h b/sysdeps/unix/dirstream.h
index cbbdb6b659..424627e740 100644
--- a/sysdeps/unix/dirstream.h
+++ b/sysdeps/unix/dirstream.h
@@ -22,7 +22,7 @@
 
 #include <sys/types.h>
 
-#include <libc-lock.h>
+#include <bits/libc-lock.h>
 
 /* Directory stream type.
 
diff --git a/sysdeps/unix/i386/sysdep.S b/sysdeps/unix/i386/sysdep.S
index a65589df72..b296bb707a 100644
--- a/sysdeps/unix/i386/sysdep.S
+++ b/sysdeps/unix/i386/sysdep.S
@@ -18,7 +18,7 @@
 
 #include <sysdep.h>
 #define _ERRNO_H
-#include <errnos.h>
+#include <bits/errno.h>
 
 .globl C_SYMBOL_NAME(errno)
 .globl syscall_error
diff --git a/sysdeps/unix/mips/sysdep.S b/sysdeps/unix/mips/sysdep.S
index f17ba44341..1791801ec5 100644
--- a/sysdeps/unix/mips/sysdep.S
+++ b/sysdeps/unix/mips/sysdep.S
@@ -18,7 +18,7 @@ Cambridge, MA 02139, USA.  */
 
 #include <sysdep.h>
 #define _ERRNO_H
-#include <errnos.h>
+#include <bits/errno.h>
 
 /* .globl errno */
 .set noreorder
diff --git a/sysdeps/unix/mk-local_lim.c b/sysdeps/unix/mk-local_lim.c
index b2212ee46d..27dfbc2dfc 100644
--- a/sysdeps/unix/mk-local_lim.c
+++ b/sysdeps/unix/mk-local_lim.c
@@ -31,7 +31,8 @@ Cambridge, MA 02139, USA.  */
 #include <sys/limits.h>
 #endif
 
-/* Generate local_lim.h from the values defined in the system's headers.  */
+/* Generate bits/local_lim.h from the values defined in the system's
+   headers.  */
 
 struct param
   {
diff --git a/sysdeps/unix/sparc/sysdep.S b/sysdeps/unix/sparc/sysdep.S
index d04a778794..5eea06939e 100644
--- a/sysdeps/unix/sparc/sysdep.S
+++ b/sysdeps/unix/sparc/sysdep.S
@@ -18,7 +18,7 @@ Cambridge, MA 02139, USA.  */
 
 #include <sysdep.h>
 #define _ERRNO_H
-#include <errnos.h>
+#include <bits/errno.h>
 
 .global C_SYMBOL_NAME(errno)
 .global syscall_error
diff --git a/sysdeps/unix/sysv/direntry.h b/sysdeps/unix/sysv/bits/dirent.h
index 5035f143ce..5035f143ce 100644
--- a/sysdeps/unix/sysv/direntry.h
+++ b/sysdeps/unix/sysv/bits/dirent.h
diff --git a/sysdeps/unix/sysv/fcntlbits.h b/sysdeps/unix/sysv/bits/fcntl.h
index 7f38422707..22863ffa5e 100644
--- a/sysdeps/unix/sysv/fcntlbits.h
+++ b/sysdeps/unix/sysv/bits/fcntl.h
@@ -17,9 +17,9 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef	_FCNTLBITS_H
-
-#define	_FCNTLBITS_H	1
+#ifndef	_FCNTL_H
+#error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
+#endif
 
 
 /* File access modes for `open' and `fcntl'.  */
@@ -64,7 +64,7 @@
 #define	FD_CLOEXEC	1	/* Close on exec.  */
 
 
-#include <gnu/types.h>
+#include <bits/types.h>
 
 /* The structure describing an advisory lock.  This is the type of the third
    argument to `fcntl' for the F_GETLK, F_SETLK, and F_SETLKW requests.  */
@@ -92,5 +92,3 @@ struct flock
 #define	FNONBLOCK	O_NONBLOCK
 #define	FNDELAY		O_NDELAY
 #endif /* Use BSD.  */
-
-#endif	/* fcntlbits.h */
diff --git a/sysdeps/unix/sysv/local_lim.h b/sysdeps/unix/sysv/bits/local_lim.h
index a370928484..a370928484 100644
--- a/sysdeps/unix/sysv/local_lim.h
+++ b/sysdeps/unix/sysv/bits/local_lim.h
diff --git a/sysdeps/unix/sysv/signum.h b/sysdeps/unix/sysv/bits/signum.h
index 088ca2a1be..088ca2a1be 100644
--- a/sysdeps/unix/sysv/signum.h
+++ b/sysdeps/unix/sysv/bits/signum.h
diff --git a/sysdeps/unix/sysv/statbuf.h b/sysdeps/unix/sysv/bits/stat.h
index f74943c19a..56f4544594 100644
--- a/sysdeps/unix/sysv/statbuf.h
+++ b/sysdeps/unix/sysv/bits/stat.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1996 Free Software Foundation, Inc.
+/* Copyright (C) 1992, 1996, 1997 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -16,8 +16,12 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef	_STATBUF_H
-#define	_STATBUF_H	1
+/*
+ * Never include this file directly; use <sys/stat.h> instead.
+ */
+
+#ifndef	_BITS_STAT_H
+#define	_BITS_STAT_H	1
 
 struct stat
   {
@@ -58,4 +62,4 @@ struct stat
 #define	__S_IWRITE	0200	/* Write by owner.  */
 #define	__S_IEXEC	0100	/* Execute by owner.  */
 
-#endif	/* statbuf.h */
+#endif	/* bits/stat.h */
diff --git a/sysdeps/unix/sysv/bits/utmp.h b/sysdeps/unix/sysv/bits/utmp.h
new file mode 100644
index 0000000000..1bb1a55873
--- /dev/null
+++ b/sysdeps/unix/sysv/bits/utmp.h
@@ -0,0 +1,57 @@
+/* The `struct utmp' type, describing entries in the utmp file.  System V.
+   Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#ifndef _UTMP_H
+#error "Never use <bits/utmp.h> directly; include <utmp.h> instead."
+#endif
+
+
+#include <time.h>
+
+#define _PATH_UTMP      "/var/adm/utmp"
+#define _PATH_WTMP      "/var/adm/wtmp"
+#define _PATH_LASTLOG   "/var/adm/lastlog"
+
+__BEGIN_DECLS
+
+struct utmp
+  {
+#define	ut_name	ut_user
+    char ut_user[8];
+    char ut_id[4];
+    char ut_line[12];
+    short ut_pid;
+    short ut_type;
+    struct exit_status
+      {
+	short e_termination;
+	short e_exit;
+      } ut_exit;
+    time_t ut_time;
+  };
+
+
+/* Tell the user that we have a modern system with UT_HOST, UT_TYPE, UT_ID
+   and UT_TV fields.  */
+#define _HAVE_UT_TYPE	1
+#define _HAVE_UT_ID	1
+#define _HAVE_UT_TV	1
+#define _HAVE_UT_HOST	1
+
+__END_DECLS
diff --git a/sysdeps/unix/sysv/utsnamelen.h b/sysdeps/unix/sysv/bits/utsname.h
index 31473cf4ea..31473cf4ea 100644
--- a/sysdeps/unix/sysv/utsnamelen.h
+++ b/sysdeps/unix/sysv/bits/utsname.h
diff --git a/sysdeps/unix/sysv/irix4/confname.h b/sysdeps/unix/sysv/irix4/bits/confname.h
index 49d2f9c989..49d2f9c989 100644
--- a/sysdeps/unix/sysv/irix4/confname.h
+++ b/sysdeps/unix/sysv/irix4/bits/confname.h
diff --git a/sysdeps/unix/sysv/irix4/fcntlbits.h b/sysdeps/unix/sysv/irix4/bits/fcntl.h
index 318e483279..a926d049ec 100644
--- a/sysdeps/unix/sysv/irix4/fcntlbits.h
+++ b/sysdeps/unix/sysv/irix4/bits/fcntl.h
@@ -17,9 +17,9 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef	_FCNTLBITS_H
-
-#define	_FCNTLBITS_H	1
+#ifndef	_FCNTL_H
+#error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
+#endif
 
 
 /* File access modes for `open' and `fcntl'.  */
@@ -76,7 +76,7 @@
 #define	FD_CLOEXEC	1	/* Close on exec.  */
 
 
-#include <gnu/types.h>
+#include <bits/types.h>
 
 /* The structure describing an advisory lock.  This is the type of the third
    argument to `fcntl' for the F_GETLK, F_SETLK, and F_SETLKW requests.  */
@@ -105,6 +105,3 @@ struct flock
 #define	FNONBLOCK	O_NONBLOCK
 #define	FNDELAY		O_NDELAY
 #endif /* Use BSD.  */
-
-
-#endif	/* fcntlbits.h */
diff --git a/sysdeps/unix/sysv/irix4/signum.h b/sysdeps/unix/sysv/irix4/bits/signum.h
index 13314cff42..13314cff42 100644
--- a/sysdeps/unix/sysv/irix4/signum.h
+++ b/sysdeps/unix/sysv/irix4/bits/signum.h
diff --git a/sysdeps/unix/sysv/irix4/statbuf.h b/sysdeps/unix/sysv/irix4/bits/stat.h
index 579ccec8a6..0dab45cfa0 100644
--- a/sysdeps/unix/sysv/irix4/statbuf.h
+++ b/sysdeps/unix/sysv/irix4/bits/stat.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1996 Free Software Foundation, Inc.
+/* Copyright (C) 1992, 1996, 1997 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -16,8 +16,12 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef	_STATBUF_H
-#define	_STATBUF_H	1
+/*
+ * Never include this file directly; use <sys/stat.h> instead.
+ */
+
+#ifndef	_BITS_STAT_H
+#define	_BITS_STAT_H	1
 
 struct stat
   {
@@ -58,4 +62,4 @@ struct stat
 #define	__S_IWRITE	0200	/* Write by owner.  */
 #define	__S_IEXEC	0100	/* Execute by owner.  */
 
-#endif	/* statbuf.h */
+#endif	/* bits/stat.h */
diff --git a/sysdeps/unix/sysv/irix4/sys/mman.h b/sysdeps/unix/sysv/irix4/sys/mman.h
index 9ceca1fe96..f42a9f67aa 100644
--- a/sysdeps/unix/sysv/irix4/sys/mman.h
+++ b/sysdeps/unix/sysv/irix4/sys/mman.h
@@ -22,7 +22,7 @@
 #define	_SYS_MMAN_H	1
 #include <features.h>
 
-#include <gnu/types.h>
+#include <bits/types.h>
 #define __need_size_t
 #include <stddef.h>
 
diff --git a/sysdeps/unix/sysv/linux/Dist b/sysdeps/unix/sysv/linux/Dist
index ae79600717..53700850b9 100644
--- a/sysdeps/unix/sysv/linux/Dist
+++ b/sysdeps/unix/sysv/linux/Dist
@@ -2,8 +2,10 @@ cmsg_nxthdr.c
 init-first.h
 kernel_sigaction.h
 kernel_stat.h
+kernel_termios.h
 llseek.c
 siglist.h
+socketcall.h
 sysctl.c
 termio.h
 net/ethernet.h
@@ -30,14 +32,12 @@ sys/debugreg.h
 sys/io.h
 sys/kd.h
 sys/kdaemon.h
-sys/kernel_termios.h
 sys/klog.h
 sys/module.h
 sys/mount.h
 sys/mtio.h
 sys/procfs.h
 sys/quota.h
-sys/socketcall.h
 sys/socketvar.h
 sys/soundcard.h
 sys/sysctl.h
diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
index 7255a69ece..42f64638ca 100644
--- a/sysdeps/unix/sysv/linux/Makefile
+++ b/sysdeps/unix/sysv/linux/Makefile
@@ -36,7 +36,7 @@ sysdep_headers += sys/timex.h
 endif
 
 ifeq ($(subdir),socket)
-sysdep_headers += sys/socketcall.h net/if.h net/if_ppp.h net/ppp-comp.h \
+sysdep_headers += net/if.h net/if_ppp.h net/ppp-comp.h \
 		  net/ppp_defs.h net/if_arp.h net/route.h net/ethernet.h \
 		  net/if_slip.h
 sysdep_routines += cmsg_nxthdr
@@ -47,7 +47,7 @@ sysdep_headers += nfs/nfs.h
 endif
 
 ifeq ($(subdir),termios)
-sysdep_headers += termio.h sys/kernel_termios.h
+sysdep_headers += termio.h
 endif
 
 ifeq ($(subdir),stdio-common)
diff --git a/sysdeps/unix/sysv/linux/alpha/fcntlbits.h b/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h
index 6e1c843ccb..b70502f21a 100644
--- a/sysdeps/unix/sysv/linux/alpha/fcntlbits.h
+++ b/sysdeps/unix/sysv/linux/alpha/bits/fcntl.h
@@ -17,8 +17,10 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef	_FCNTLBITS_H
-#define	_FCNTLBITS_H	1
+#ifndef	_FCNTL_H
+#error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
+#endif
+
 
 #include <sys/types.h>
 
@@ -96,5 +98,3 @@ struct flock
 #define	FNONBLOCK	O_NONBLOCK
 #define	FNDELAY		O_NDELAY
 #endif /* Use BSD.  */
-
-#endif	/* fcntlbits.h */
diff --git a/sysdeps/unix/sysv/linux/sparc/ioctls.h b/sysdeps/unix/sysv/linux/alpha/bits/ioctls.h
index 80b2e62e77..8a14f99f43 100644
--- a/sysdeps/unix/sysv/linux/sparc/ioctls.h
+++ b/sysdeps/unix/sysv/linux/alpha/bits/ioctls.h
@@ -16,12 +16,16 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef _IOCTLS_H
-#define _IOCTLS_H 1
+/*
+ * Never include this file directly; use <sys/ioctl.h> instead.
+ */
+
+#ifndef _BITS_IOCTLS_H
+#define _BITS_IOCTLS_H 1
 
 /* Use the definitions from the kernel header files.  */
 #include <asm/ioctls.h>
-#include <sys/kernel_termios.h>
+#include <kernel_termios.h>
 
 /* Oh well, this is necessary since the kernel data structure is
    different from the user-level version.  */
@@ -36,4 +40,4 @@
 
 #include <linux/sockios.h>
 
-#endif /* ioctls.h  */
+#endif /* bits/ioctls.h  */
diff --git a/sysdeps/unix/sysv/linux/alpha/sys/ipc_buf.h b/sysdeps/unix/sysv/linux/alpha/bits/ipc.h
index 57830daae1..57830daae1 100644
--- a/sysdeps/unix/sysv/linux/alpha/sys/ipc_buf.h
+++ b/sysdeps/unix/sysv/linux/alpha/bits/ipc.h
diff --git a/sysdeps/unix/sysv/linux/alpha/sigaction.h b/sysdeps/unix/sysv/linux/alpha/bits/sigaction.h
index 57ce5e6ded..57ce5e6ded 100644
--- a/sysdeps/unix/sysv/linux/alpha/sigaction.h
+++ b/sysdeps/unix/sysv/linux/alpha/bits/sigaction.h
diff --git a/sysdeps/unix/sysv/linux/alpha/signum.h b/sysdeps/unix/sysv/linux/alpha/bits/signum.h
index be6132d42f..be6132d42f 100644
--- a/sysdeps/unix/sysv/linux/alpha/signum.h
+++ b/sysdeps/unix/sysv/linux/alpha/bits/signum.h
diff --git a/sysdeps/unix/sysv/linux/alpha/statbuf.h b/sysdeps/unix/sysv/linux/alpha/bits/stat.h
index 207fa0ca1c..768b8192ff 100644
--- a/sysdeps/unix/sysv/linux/alpha/statbuf.h
+++ b/sysdeps/unix/sysv/linux/alpha/bits/stat.h
@@ -16,8 +16,12 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef	_STATBUF_H
-#define	_STATBUF_H	1
+/*
+ * Never include this file directly; use <sys/stat.h> instead.
+ */
+
+#ifndef	_BITS_STAT_H
+#define	_BITS_STAT_H	1
 
 /* Versions of the `struct stat' data structure.  */
 #define _STAT_VER_LINUX_OLD	0
@@ -71,4 +75,4 @@ struct stat
 #define	__S_IWRITE	0200	/* Write by owner.  */
 #define	__S_IEXEC	0100	/* Execute by owner.  */
 
-#endif	/* statbuf.h */
+#endif	/* bits/stat.h */
diff --git a/sysdeps/unix/sysv/linux/alpha/termbits.h b/sysdeps/unix/sysv/linux/alpha/bits/termios.h
index d0932c1cd7..d0932c1cd7 100644
--- a/sysdeps/unix/sysv/linux/alpha/termbits.h
+++ b/sysdeps/unix/sysv/linux/alpha/bits/termios.h
diff --git a/sysdeps/unix/sysv/linux/alpha/timebits.h b/sysdeps/unix/sysv/linux/alpha/bits/time.h
index 1ad0df8c5b..7475b68f5b 100644
--- a/sysdeps/unix/sysv/linux/alpha/timebits.h
+++ b/sysdeps/unix/sysv/linux/alpha/bits/time.h
@@ -1,5 +1,5 @@
 /* System-dependent timing definitions.  Linux/Alpha version.
-   Copyright (C) 1996 Free Software Foundation, Inc.
+   Copyright (C) 1996, 1997 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -17,6 +17,10 @@
    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.
+ */
+
 #ifdef __need_timeval
 # undef __need_timeval
 # ifndef _STRUCT_TIMEVAL
@@ -32,8 +36,8 @@ struct timeval
 #endif	/* need timeval */
 
 
-#ifndef _TIMEBITS_H
-# define _TIMEBITS_H	1
+#ifndef _BITS_TIME_H
+#define _BITS_TIME_H	1
 
 /* ISO/IEC 9899:1990 7.12.1: <time.h>
    The macro `CLOCKS_PER_SEC' is the number per second of the value
@@ -47,4 +51,4 @@ struct timeval
    presents the real value for clock ticks per second for the system.  */
 # define CLK_TCK 1024
 
-#endif	/* timebits.h */
+#endif	/* bits/time.h */
diff --git a/sysdeps/unix/sysv/linux/alpha/gnu/types.h b/sysdeps/unix/sysv/linux/alpha/bits/types.h
index 2af77f70cf..9a4666a508 100644
--- a/sysdeps/unix/sysv/linux/alpha/gnu/types.h
+++ b/sysdeps/unix/sysv/linux/alpha/bits/types.h
@@ -16,8 +16,12 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef	_GNU_TYPES_H
-#define	_GNU_TYPES_H	1
+/*
+ * Never include this file directly; use <sys/types.h> instead.
+ */
+
+#ifndef	_BITS_TYPES_H
+#define	_BITS_TYPES_H	1
 
 #include <features.h>
 
@@ -26,19 +30,16 @@ typedef unsigned char __u_char;
 typedef unsigned short __u_short;
 typedef unsigned int __u_int;
 typedef unsigned long __u_long;
-#ifdef __GNUC__
-typedef unsigned long long int __u_quad_t;
-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 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 __u_long __dev_t;		/* Type of device numbers.  */
@@ -91,4 +92,4 @@ typedef struct
 
 typedef int __key_t;
 
-#endif /* gnu/types.h */
+#endif /* bits/types.h */
diff --git a/sysdeps/unix/sysv/linux/alpha/brk.S b/sysdeps/unix/sysv/linux/alpha/brk.S
index be0539b475..6f994937d3 100644
--- a/sysdeps/unix/sysv/linux/alpha/brk.S
+++ b/sysdeps/unix/sysv/linux/alpha/brk.S
@@ -23,7 +23,7 @@
 
 #include <sysdep.h>
 #define _ERRNO_H
-#include <errnos.h>
+#include <bits/errno.h>
 
 #ifdef PIC
 .section .bss
diff --git a/sysdeps/unix/sysv/linux/alpha/clone.S b/sysdeps/unix/sysv/linux/alpha/clone.S
index aab4e590a5..3f097fe068 100644
--- a/sysdeps/unix/sysv/linux/alpha/clone.S
+++ b/sysdeps/unix/sysv/linux/alpha/clone.S
@@ -22,7 +22,7 @@
 
 #include <sysdep.h>
 #define _ERRNO_H	1
-#include <errnos.h>
+#include <bits/errno.h>
 
 /* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg) */
 
diff --git a/sysdeps/unix/sysv/linux/powerpc/sys/kernel_termios.h b/sysdeps/unix/sysv/linux/alpha/kernel_termios.h
index c5e9e2684a..093ac25096 100644
--- a/sysdeps/unix/sysv/linux/powerpc/sys/kernel_termios.h
+++ b/sysdeps/unix/sysv/linux/alpha/kernel_termios.h
@@ -16,12 +16,13 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef _SYS_KERNEL_TERMIOS_H
-#define _SYS_KERNEL_TERMIOS_H 1
-/* The following corresponds to the values from the Linux 2.0.28 kernel.  */
+#ifndef _KERNEL_TERMIOS_H
+#define _KERNEL_TERMIOS_H 1
+
+/* The following corresponds to the values from the Linux 2.1.20 kernel.  */
 
 /* We need the definition of tcflag_t, cc_t, and speed_t.  */
-#include <termbits.h>
+#include <bits/termios.h>
 
 #define __KERNEL_NCCS 19
 
@@ -33,11 +34,11 @@ struct __kernel_termios
     tcflag_t c_lflag;		/* local mode flags */
     cc_t c_cc[__KERNEL_NCCS];	/* control characters */
     cc_t c_line;		/* line discipline */
-    int c_ispeed;               /* input speed */
-    int c_ospeed;               /* output speed */
+    speed_t c_ispeed;		/* input speed */
+    speed_t c_ospeed;		/* output speed */
   };
 
 #define _HAVE_C_ISPEED 1
 #define _HAVE_C_OSPEED 1
 
-#endif /* sys/kernel_termios.h */
+#endif /* kernel_termios.h */
diff --git a/sysdeps/unix/sysv/linux/alpha/sys/kernel_termios.h b/sysdeps/unix/sysv/linux/alpha/sys/kernel_termios.h
deleted file mode 100644
index 4be759a51f..0000000000
--- a/sysdeps/unix/sysv/linux/alpha/sys/kernel_termios.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef _SYS_KERNEL_TERMIOS_H
-#define _SYS_KERNEL_TERMIOS_H 1
-/* The following corresponds to the values from the Linux 2.1.20 kernel.  */
-
-/* We need the definition of tcflag_t, cc_t, and speed_t.  */
-#include <termbits.h>
-
-#define __KERNEL_NCCS 19
-
-struct __kernel_termios
-  {
-    tcflag_t c_iflag;		/* input mode flags */
-    tcflag_t c_oflag;		/* output mode flags */
-    tcflag_t c_cflag;		/* control mode flags */
-    tcflag_t c_lflag;		/* local mode flags */
-    cc_t c_cc[__KERNEL_NCCS];	/* control characters */
-    cc_t c_line;		/* line discipline */
-    speed_t c_ispeed;		/* input speed */
-    speed_t c_ospeed;		/* output speed */
-  };
-
-#define _HAVE_C_ISPEED 1
-#define _HAVE_C_OSPEED 1
-
-#endif /* sys/kernel_termios.h */
diff --git a/sysdeps/unix/sysv/linux/arm/clone.S b/sysdeps/unix/sysv/linux/arm/clone.S
index c7e7aed9c8..8125ebff20 100644
--- a/sysdeps/unix/sysv/linux/arm/clone.S
+++ b/sysdeps/unix/sysv/linux/arm/clone.S
@@ -21,7 +21,7 @@
 
 #include <sysdep.h>
 #define _ERRNO_H	1
-#include <errnos.h>
+#include <bits/errno.h>
 
 /* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg); */
 
diff --git a/sysdeps/unix/sysv/linux/arm/profil-counter.h b/sysdeps/unix/sysv/linux/arm/profil-counter.h
index a915da7788..802cbd5d63 100644
--- a/sysdeps/unix/sysv/linux/arm/profil-counter.h
+++ b/sysdeps/unix/sysv/linux/arm/profil-counter.h
@@ -17,7 +17,7 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#include <sigcontext.h>
+#include <signal.h>
 
 void
 profil_counter (int signo, struct sigcontext sc)
diff --git a/sysdeps/unix/sysv/linux/arm/socket.S b/sysdeps/unix/sysv/linux/arm/socket.S
index e8db072971..4d877e51d5 100644
--- a/sysdeps/unix/sysv/linux/arm/socket.S
+++ b/sysdeps/unix/sysv/linux/arm/socket.S
@@ -17,7 +17,7 @@
    Boston, MA 02111-1307, USA.  */
 
 #include <sysdep.h>
-#include <sys/socketcall.h>
+#include <socketcall.h>
 
 #define P(a, b) P2(a, b)
 #define P2(a, b) a##b
diff --git a/sysdeps/unix/sysv/linux/direntry.h b/sysdeps/unix/sysv/linux/bits/dirent.h
index ccf5080151..ccf5080151 100644
--- a/sysdeps/unix/sysv/linux/direntry.h
+++ b/sysdeps/unix/sysv/linux/bits/dirent.h
diff --git a/sysdeps/unix/sysv/linux/errnos.h b/sysdeps/unix/sysv/linux/bits/errno.h
index f676d35e49..f676d35e49 100644
--- a/sysdeps/unix/sysv/linux/errnos.h
+++ b/sysdeps/unix/sysv/linux/bits/errno.h
diff --git a/sysdeps/unix/sysv/linux/fcntlbits.h b/sysdeps/unix/sysv/linux/bits/fcntl.h
index f6ba880459..62c3052d8c 100644
--- a/sysdeps/unix/sysv/linux/fcntlbits.h
+++ b/sysdeps/unix/sysv/linux/bits/fcntl.h
@@ -17,8 +17,10 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef	_FCNTLBITS_H
-#define	_FCNTLBITS_H	1
+#ifndef	_FCNTL_H
+#error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
+#endif
+
 
 #include <sys/types.h>
 
@@ -95,5 +97,3 @@ struct flock
 #define	FNONBLOCK	O_NONBLOCK
 #define	FNDELAY		O_NDELAY
 #endif /* Use BSD.  */
-
-#endif	/* fcntlbits.h */
diff --git a/sysdeps/unix/sysv/linux/ioctl-types.h b/sysdeps/unix/sysv/linux/bits/ioctl-types.h
index 91fcc2653b..af988a3c9d 100644
--- a/sysdeps/unix/sysv/linux/ioctl-types.h
+++ b/sysdeps/unix/sysv/linux/bits/ioctl-types.h
@@ -17,8 +17,12 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef _IOCTL_TYPES_H
-#define _IOCTL_TYPES_H 1
+/*
+ * Never include this file directly; use <sys/ioctl.h> instead.
+ */
+
+#ifndef _BITS_IOCTL_TYPES_H
+#define _BITS_IOCTL_TYPES_H 1
 
 /* Get definition of constants for use with `ioctl'.  */
 #include <asm/ioctls.h>
@@ -67,4 +71,4 @@ struct termio
 #define N_AX25		5
 
 
-#endif /* ioctl-types.h */
+#endif /* bits/ioctl-types.h */
diff --git a/sysdeps/unix/sysv/linux/ioctls.h b/sysdeps/unix/sysv/linux/bits/ioctls.h
index 8b5326998a..265c857f92 100644
--- a/sysdeps/unix/sysv/linux/ioctls.h
+++ b/sysdeps/unix/sysv/linux/bits/ioctls.h
@@ -16,11 +16,15 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef _IOCTLS_H
-#define _IOCTLS_H 1
+/*
+ * Never include this file directly; use <sys/ioctl.h> instead.
+ */
+
+#ifndef _BITS_IOCTLS_H
+#define _BITS_IOCTLS_H 1
 
 /* Use the definitions from the kernel header files.  */
 #include <asm/ioctls.h>
 #include <linux/sockios.h>
 
-#endif /* ioctls.h  */
+#endif /* bits/ioctls.h  */
diff --git a/sysdeps/unix/sysv/linux/sys/ipc_buf.h b/sysdeps/unix/sysv/linux/bits/ipc.h
index f5fea0d295..f5fea0d295 100644
--- a/sysdeps/unix/sysv/linux/sys/ipc_buf.h
+++ b/sysdeps/unix/sysv/linux/bits/ipc.h
diff --git a/sysdeps/unix/sysv/linux/local_lim.h b/sysdeps/unix/sysv/linux/bits/local_lim.h
index 7ce423061a..7ce423061a 100644
--- a/sysdeps/unix/sysv/linux/local_lim.h
+++ b/sysdeps/unix/sysv/linux/bits/local_lim.h
diff --git a/sysdeps/unix/sysv/linux/sys/msq_buf.h b/sysdeps/unix/sysv/linux/bits/msq.h
index 0abc10f6e5..0abc10f6e5 100644
--- a/sysdeps/unix/sysv/linux/sys/msq_buf.h
+++ b/sysdeps/unix/sysv/linux/bits/msq.h
diff --git a/sysdeps/unix/sysv/linux/posix_opt.h b/sysdeps/unix/sysv/linux/bits/posix_opt.h
index a467acfb48..e9f8b7f8f3 100644
--- a/sysdeps/unix/sysv/linux/posix_opt.h
+++ b/sysdeps/unix/sysv/linux/bits/posix_opt.h
@@ -17,8 +17,12 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef	_POSIX_OPT_H
-#define	_POSIX_OPT_H	1
+/*
+ * Never include this file directly; use <unistd.h> instead.
+ */
+
+#ifndef	_BITS_POSIX_OPT_H
+#define	_BITS_POSIX_OPT_H	1
 
 /* Job control is supported.  */
 #define	_POSIX_JOB_CONTROL	1
@@ -66,4 +70,4 @@
 /* XPG4.2 shared memory is supported.  */
 #define	_XOPEN_SHM	1
 
-#endif /* posix_opt.h */
+#endif /* bits/posix_opt.h */
diff --git a/sysdeps/unix/sysv/linux/resourcebits.h b/sysdeps/unix/sysv/linux/bits/resource.h
index 05cae83244..05cae83244 100644
--- a/sysdeps/unix/sysv/linux/resourcebits.h
+++ b/sysdeps/unix/sysv/linux/bits/resource.h
diff --git a/sysdeps/unix/sysv/linux/schedbits.h b/sysdeps/unix/sysv/linux/bits/sched.h
index fccb5d834f..521bbb7177 100644
--- a/sysdeps/unix/sysv/linux/schedbits.h
+++ b/sysdeps/unix/sysv/linux/bits/sched.h
@@ -18,9 +18,11 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef	_SCHEDBITS_H
+#ifndef _SCHED_H
+#error "Never use <bits/sched.h> directly; include <sched.h> instead."
+#endif
+
 
-#define	_SCHEDBITS_H	1
 #include <features.h>
 
 /* Scheduling algorithms.  */
@@ -50,6 +52,3 @@ extern int __clone __P ((int (*__fn) (void *__arg), void *__child_stack,
 extern int clone __P ((int (*__fn) (void *__arg), void *__child_stack,
 		       int __flags, void *__arg));
 #endif
-
-
-#endif /* schedbits.h */
diff --git a/sysdeps/unix/sysv/linux/sys/sem_buf.h b/sysdeps/unix/sysv/linux/bits/sem.h
index 049a71bc47..049a71bc47 100644
--- a/sysdeps/unix/sysv/linux/sys/sem_buf.h
+++ b/sysdeps/unix/sysv/linux/bits/sem.h
diff --git a/sysdeps/unix/sysv/linux/sys/shm_buf.h b/sysdeps/unix/sysv/linux/bits/shm.h
index 642b7bd191..642b7bd191 100644
--- a/sysdeps/unix/sysv/linux/sys/shm_buf.h
+++ b/sysdeps/unix/sysv/linux/bits/shm.h
diff --git a/sysdeps/unix/sysv/linux/sigaction.h b/sysdeps/unix/sysv/linux/bits/sigaction.h
index 13a6a03248..13a6a03248 100644
--- a/sysdeps/unix/sysv/linux/sigaction.h
+++ b/sysdeps/unix/sysv/linux/bits/sigaction.h
diff --git a/sysdeps/unix/sysv/linux/sigcontext.h b/sysdeps/unix/sysv/linux/bits/sigcontext.h
index 71afc76c71..fb8bc5fc57 100644
--- a/sysdeps/unix/sysv/linux/sigcontext.h
+++ b/sysdeps/unix/sysv/linux/bits/sigcontext.h
@@ -16,14 +16,13 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef _SIGCONTEXT_H
-#define _SIGCONTEXT_H 1
+#ifndef _SIGNAL_H
+#error "Never use <bits/sigcontext.h> directly; include <signal.h> instead."
+#endif
+
 
 /* Kernel headers before 2.1.1 define a struct sigcontext_struct, but
    we need sigcontext.  */
 #define sigcontext_struct sigcontext
 
 #include <asm/sigcontext.h>
-
-
-#endif /* sigcontext.h */
diff --git a/sysdeps/unix/sysv/linux/signum.h b/sysdeps/unix/sysv/linux/bits/signum.h
index d8a716f2e0..d8a716f2e0 100644
--- a/sysdeps/unix/sysv/linux/signum.h
+++ b/sysdeps/unix/sysv/linux/bits/signum.h
diff --git a/sysdeps/unix/sysv/linux/sigset.h b/sysdeps/unix/sysv/linux/bits/sigset.h
index 741ff9ac9d..741ff9ac9d 100644
--- a/sysdeps/unix/sysv/linux/sigset.h
+++ b/sysdeps/unix/sysv/linux/bits/sigset.h
diff --git a/sysdeps/unix/sysv/linux/socketbits.h b/sysdeps/unix/sysv/linux/bits/socket.h
index e60f903fc5..e3f53a97be 100644
--- a/sysdeps/unix/sysv/linux/socketbits.h
+++ b/sysdeps/unix/sysv/linux/bits/socket.h
@@ -17,9 +17,11 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef	_SOCKETBITS_H
+#ifndef _SYS_SOCKET_H
+#error "Never include <bits/socket.h> directly; use <sys/socket.h> instead."
+#endif
+
 
-#define	_SOCKETBITS_H	1
 #include <features.h>
 
 #define	__need_size_t
@@ -101,7 +103,7 @@ enum __socket_type
 #define SOMAXCONN	128
 
 /* Get the definition of the macro to define the common sockaddr members.  */
-#include <sockaddrcom.h>
+#include <bits/sockaddr.h>
 
 /* Structure describing a generic socket address.  */
 struct sockaddr
@@ -201,5 +203,3 @@ struct linger
   };
 
 __END_DECLS
-
-#endif /* socketbits.h */
diff --git a/sysdeps/unix/sysv/linux/statbuf.h b/sysdeps/unix/sysv/linux/bits/stat.h
index 15ffe637bc..1c6e5f84ca 100644
--- a/sysdeps/unix/sysv/linux/statbuf.h
+++ b/sysdeps/unix/sysv/linux/bits/stat.h
@@ -16,8 +16,12 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef	_STATBUF_H
-#define	_STATBUF_H	1
+/*
+ * Never include this file directly; use <sys/stat.h> instead.
+ */
+
+#ifndef	_BITS_STAT_H
+#define	_BITS_STAT_H	1
 
 /* Versions of the `struct stat' data structure.  */
 #define _STAT_VER_LINUX_OLD	1
@@ -81,4 +85,4 @@ struct stat
 #define	__S_IWRITE	0200	/* Write by owner.  */
 #define	__S_IEXEC	0100	/* Execute by owner.  */
 
-#endif	/* statbuf.h */
+#endif	/* bits/stat.h */
diff --git a/sysdeps/unix/sysv/linux/statfsbuf.h b/sysdeps/unix/sysv/linux/bits/statfs.h
index 7e1aa55334..8b9501423c 100644
--- a/sysdeps/unix/sysv/linux/statfsbuf.h
+++ b/sysdeps/unix/sysv/linux/bits/statfs.h
@@ -16,10 +16,14 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef _STATFSBUF_H
-#define _STATFSBUF_H
+/*
+ * Never include this file directly; use <sys/statfs.h> instead.
+ */
 
-#include <gnu/types.h>  /* for __fsid_t */
+#ifndef _BITS_STATFS_H
+#define _BITS_STATFS_H
+
+#include <bits/types.h>  /* for __fsid_t */
 
 struct statfs
   {
@@ -35,4 +39,4 @@ struct statfs
     int f_spare[6];
   };
 
-#endif	/* statfsbuf.h */
+#endif	/* bits/statfs.h */
diff --git a/sysdeps/unix/sysv/linux/termbits.h b/sysdeps/unix/sysv/linux/bits/termios.h
index 8224ac5403..dd42012374 100644
--- a/sysdeps/unix/sysv/linux/termbits.h
+++ b/sysdeps/unix/sysv/linux/bits/termios.h
@@ -17,8 +17,13 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef _TERMBITS_H
-#define _TERMBITS_H	1
+/*
+ * Never include this file directly; use <termios.h> instead.
+ */
+
+
+#ifndef _BITS_TERMIOS_H
+#define _BITS_TERMIOS_H	1
 
 typedef unsigned char	cc_t;
 typedef unsigned int	speed_t;
@@ -181,4 +186,4 @@ struct termios
 #define _IOT_termios /* Hurd ioctl type field.  */ \
   _IOT (_IOTS (cflag_t), 4, _IOTS (cc_t), NCCS, _IOTS (speed_t), 2)
 
-#endif /* termbits.h */
+#endif /* bits/termios.h */
diff --git a/sysdeps/unix/sysv/linux/timebits.h b/sysdeps/unix/sysv/linux/bits/time.h
index de30a6f348..509cb2ce32 100644
--- a/sysdeps/unix/sysv/linux/timebits.h
+++ b/sysdeps/unix/sysv/linux/bits/time.h
@@ -17,6 +17,10 @@
    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.
+ */
+
 #ifdef __need_timeval
 # undef __need_timeval
 # ifndef _STRUCT_TIMEVAL
@@ -32,8 +36,8 @@ struct timeval
 #endif	/* need timeval */
 
 
-#ifndef _TIMEBITS_H
-# define _TIMEBITS_H	1
+#ifndef _BITS_TIME_H
+#define _BITS_TIME_H	1
 
 /* ISO/IEC 9899:1990 7.12.1: <time.h>
    The macro `CLOCKS_PER_SEC' is the number per second of the value
@@ -49,4 +53,4 @@ struct timeval
 #  define CLK_TCK 100
 # endif
 
-#endif	/* timebits.h */
+#endif	/* bits/time.h */
diff --git a/sysdeps/unix/sysv/linux/gnu/types.h b/sysdeps/unix/sysv/linux/bits/types.h
index 872fc4e557..34f4682b3c 100644
--- a/sysdeps/unix/sysv/linux/gnu/types.h
+++ b/sysdeps/unix/sysv/linux/bits/types.h
@@ -16,8 +16,12 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef	_GNU_TYPES_H
-#define	_GNU_TYPES_H	1
+/*
+ * Never include this file directly; use <sys/types.h> instead.
+ */
+
+#ifndef	_BITS_TYPES_H
+#define	_BITS_TYPES_H	1
 
 #include <features.h>
 
@@ -39,6 +43,16 @@ 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__
+typedef signed long long int __int64_t;
+typedef unsigned long long int __uint64_t;
+#endif
 typedef __quad_t *__qaddr_t;
 
 typedef __u_quad_t __dev_t;		/* Type of device numbers.  */
@@ -86,4 +100,4 @@ typedef struct
 
 typedef int __key_t;
 
-#endif /* gnu/types.h */
+#endif /* bits/types.h */
diff --git a/sysdeps/unix/sysv/linux/iovec.h b/sysdeps/unix/sysv/linux/bits/uio.h
index 430edfc029..3f1dc01c73 100644
--- a/sysdeps/unix/sysv/linux/iovec.h
+++ b/sysdeps/unix/sysv/linux/bits/uio.h
@@ -16,9 +16,10 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef _IOVEC_H
+#ifndef _SYS_UIO_H
+#error "Never use <bits/uio.h> directly; include <sys/uio.h> instead."
+#endif
 
-#define _IOVEC_H	1
 
 #include <sys/types.h>
 
@@ -43,5 +44,3 @@ struct iovec
     void *iov_base;	/* Pointer to data.  */
     size_t iov_len;	/* Length of data.  */
   };
-
-#endif	/* iovec.h */
diff --git a/sysdeps/unix/sysv/linux/ustatbits.h b/sysdeps/unix/sysv/linux/bits/ustat.h
index 526069a7f3..526069a7f3 100644
--- a/sysdeps/unix/sysv/linux/ustatbits.h
+++ b/sysdeps/unix/sysv/linux/bits/ustat.h
diff --git a/sysdeps/unix/sysv/linux/utsnamelen.h b/sysdeps/unix/sysv/linux/bits/utsname.h
index 64e2ab5bbc..64e2ab5bbc 100644
--- a/sysdeps/unix/sysv/linux/utsnamelen.h
+++ b/sysdeps/unix/sysv/linux/bits/utsname.h
diff --git a/sysdeps/unix/sysv/linux/waitflags.h b/sysdeps/unix/sysv/linux/bits/waitflags.h
index a60d17272b..ba3528b709 100644
--- a/sysdeps/unix/sysv/linux/waitflags.h
+++ b/sysdeps/unix/sysv/linux/bits/waitflags.h
@@ -1,5 +1,5 @@
 /* Definitions of flag bits for `waitpid' et al.
-   Copyright (C) 1992, 1996 Free Software Foundation, Inc.
+   Copyright (C) 1992, 1996, 1997 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -17,14 +17,13 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef	_WAITFLAGS_H
+#ifndef _SYS_WAIT_H
+#error "Never use <bits/waitflags.h> directly; include <sys/wait.h> instead."
+#endif
 
-#define	_WAITFLAGS_H	1
 
 /* Bits in the third argument to `waitpid'.  */
 #define	WNOHANG		1	/* Don't block waiting.  */
 #define	WUNTRACED	2	/* Report status of stopped children.  */
 
 #define __WCLONE	0x80000000 /* Wait for cloned process.  */
-
-#endif	/* waitflags.h */
diff --git a/sysdeps/unix/sysv/linux/i386/clone.S b/sysdeps/unix/sysv/linux/i386/clone.S
index 3cdd2dc468..7f758a52a8 100644
--- a/sysdeps/unix/sysv/linux/i386/clone.S
+++ b/sysdeps/unix/sysv/linux/i386/clone.S
@@ -22,7 +22,7 @@
 
 #include <sysdep.h>
 #define _ERRNO_H	1
-#include <errnos.h>
+#include <bits/errno.h>
 
 /* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg); */
 
diff --git a/sysdeps/unix/sysv/linux/i386/profil-counter.h b/sysdeps/unix/sysv/linux/i386/profil-counter.h
index 96b38e24c0..56754744c7 100644
--- a/sysdeps/unix/sysv/linux/i386/profil-counter.h
+++ b/sysdeps/unix/sysv/linux/i386/profil-counter.h
@@ -17,7 +17,7 @@ License along with the GNU C Library; see the file COPYING.LIB.  If
 not, write to the Free Software Foundation, Inc., 675 Mass Ave,
 Cambridge, MA 02139, USA.  */
 
-#include <sigcontext.h>
+#include <signal.h>
 
 void
 profil_counter (int signo, struct sigcontext sc)
diff --git a/sysdeps/unix/sysv/linux/i386/socket.S b/sysdeps/unix/sysv/linux/i386/socket.S
index 441c143156..7c539e17d2 100644
--- a/sysdeps/unix/sysv/linux/i386/socket.S
+++ b/sysdeps/unix/sysv/linux/i386/socket.S
@@ -17,7 +17,7 @@
    Boston, MA 02111-1307, USA.  */
 
 #include <sysdep.h>
-#include <sys/socketcall.h>
+#include <socketcall.h>
 
 #define P(a, b) P2(a, b)
 #define P2(a, b) a##b
diff --git a/sysdeps/unix/sysv/linux/kernel_termios.h b/sysdeps/unix/sysv/linux/kernel_termios.h
new file mode 100644
index 0000000000..78c6f4aa2f
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/kernel_termios.h
@@ -0,0 +1,38 @@
+/* Copyright (C) 1997 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#ifndef _KERNEL_TERMIOS_H
+#define _KERNEL_TERMIOS_H 1
+/* The following corresponds to the values from the Linux 2.1.20 kernel.  */
+
+/* We need the definition of tcflag_t, cc_t, and speed_t.  */
+#include <bits/termios.h>
+
+#define __KERNEL_NCCS 19
+
+struct __kernel_termios
+  {
+    tcflag_t c_iflag;		/* input mode flags */
+    tcflag_t c_oflag;		/* output mode flags */
+    tcflag_t c_cflag;		/* control mode flags */
+    tcflag_t c_lflag;		/* local mode flags */
+    cc_t c_line;		/* line discipline */
+    cc_t c_cc[__KERNEL_NCCS];	/* control characters */
+  };
+
+#endif /* kernel_termios.h */
diff --git a/sysdeps/unix/sysv/linux/m68k/clone.S b/sysdeps/unix/sysv/linux/m68k/clone.S
index ef9716d979..d553ab78c6 100644
--- a/sysdeps/unix/sysv/linux/m68k/clone.S
+++ b/sysdeps/unix/sysv/linux/m68k/clone.S
@@ -21,7 +21,7 @@
 
 #include <sysdep.h>
 #define _ERRNO_H	1
-#include <errnos.h>
+#include <bits/errno.h>
 
 /* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg); */
 
diff --git a/sysdeps/unix/sysv/linux/m68k/socket.S b/sysdeps/unix/sysv/linux/m68k/socket.S
index d0741afeb1..1508b879f6 100644
--- a/sysdeps/unix/sysv/linux/m68k/socket.S
+++ b/sysdeps/unix/sysv/linux/m68k/socket.S
@@ -17,7 +17,7 @@ not, write to the Free Software Foundation, Inc., 675 Mass Ave,
 Cambridge, MA 02139, USA.  */
 
 #include <sysdep.h>
-#include <sys/socketcall.h>
+#include <socketcall.h>
 
 #define P(a, b) P2(a, b)
 #define P2(a, b) a##b
diff --git a/sysdeps/unix/sysv/linux/netinet/ip.h b/sysdeps/unix/sysv/linux/netinet/ip.h
index 6d50bb41d1..bf4e01680b 100644
--- a/sysdeps/unix/sysv/linux/netinet/ip.h
+++ b/sysdeps/unix/sysv/linux/netinet/ip.h
@@ -37,7 +37,7 @@ struct timestamp
     u_int8_t overflow:4;
     u_int8_t flags:4;
 #else
-#error	"Please fix <bytesex.h>"
+#error	"Please fix <bits/endian.h>"
 #endif
     u_int32_t data[9];
   };
@@ -72,7 +72,7 @@ struct iphdr
     u_int8_t	version:4;
     u_int8_t ihl:4;
 #else
-#error	"Please fix <bytesex.h>"
+#error	"Please fix <bits/endian.h>"
 #endif
     u_int8_t tos;
     u_int16_t tot_len;
diff --git a/sysdeps/unix/sysv/linux/netinet/tcp.h b/sysdeps/unix/sysv/linux/netinet/tcp.h
index b7bf0857b8..60e67c5149 100644
--- a/sysdeps/unix/sysv/linux/netinet/tcp.h
+++ b/sysdeps/unix/sysv/linux/netinet/tcp.h
@@ -99,7 +99,7 @@ struct tcphdr {
 		syn:1,
 		fin:1;
 #else
-#error	"Adjust your <bytesex.h> defines"
+#error	"Adjust your <bits/endian.h> defines"
 #endif	
 	u_int16_t	window;
 	u_int16_t	check;
diff --git a/sysdeps/unix/sysv/linux/netipx/ipx.h b/sysdeps/unix/sysv/linux/netipx/ipx.h
index 170dfdf134..ec93c8185c 100644
--- a/sysdeps/unix/sysv/linux/netipx/ipx.h
+++ b/sysdeps/unix/sysv/linux/netipx/ipx.h
@@ -19,10 +19,94 @@
 #ifndef __NETIPX_IPX_H
 #define __NETIPX_IPX_H 1
 
-#include <asm/types.h>
-#include <linux/ipx.h>
+#include <features.h>
+
+#include <sys/types.h>
+#include <sys/socket.h>
+
+__BEGIN_DECLS
 
 #define SOL_IPX    256          /* sockopt level */
-#define IPX_TYPE   1
+
+#define IPX_TYPE        1
+#define IPX_NODE_LEN	6
+#define IPX_MTU		576
+
+struct sockaddr_ipx
+  {
+    sa_family_t sipx_family;
+    u_int16_t sipx_port;
+    u_int32_t sipx_network;
+    unsigned char sipx_node[IPX_NODE_LEN];
+    u_int8_t sipx_type;
+    unsigned char sipx_zero;	/* 16 byte fill */
+  };
+
+/*
+ *	So we can fit the extra info for SIOCSIFADDR into the address nicely
+ */
+
+#define sipx_special	sipx_port
+#define sipx_action	sipx_zero
+#define IPX_DLTITF	0
+#define IPX_CRTITF	1
+
+typedef struct ipx_route_definition
+  {
+    unsigned long ipx_network;
+    unsigned long ipx_router_network;
+    unsigned char ipx_router_node[IPX_NODE_LEN];
+  }
+ipx_route_definition;
+
+typedef struct ipx_interface_definition
+  {
+    unsigned long ipx_network;
+    unsigned char ipx_device[16];
+    unsigned char ipx_dlink_type;
+#define IPX_FRAME_NONE		0
+#define IPX_FRAME_SNAP		1
+#define IPX_FRAME_8022		2
+#define IPX_FRAME_ETHERII	3
+#define IPX_FRAME_8023		4
+#define IPX_FRAME_TR_8022	5
+    unsigned char ipx_special;
+#define IPX_SPECIAL_NONE	0
+#define IPX_PRIMARY		1
+#define IPX_INTERNAL		2
+    unsigned char ipx_node[IPX_NODE_LEN];
+  }
+ipx_interface_definition;
+
+typedef struct ipx_config_data
+  {
+    unsigned char ipxcfg_auto_select_primary;
+    unsigned char ipxcfg_auto_create_interfaces;
+  }
+ipx_config_data;
+
+/*
+ * OLD Route Definition for backward compatibility.
+ */
+
+struct ipx_route_def
+  {
+    unsigned long ipx_network;
+    unsigned long ipx_router_network;
+#define IPX_ROUTE_NO_ROUTER	0
+    unsigned char ipx_router_node[IPX_NODE_LEN];
+    unsigned char ipx_device[16];
+    unsigned short ipx_flags;
+#define IPX_RT_SNAP		8
+#define IPX_RT_8022		4
+#define IPX_RT_BLUEBOOK		2
+#define IPX_RT_ROUTED		1
+  };
+
+#define SIOCAIPXITFCRT		(SIOCPROTOPRIVATE)
+#define SIOCAIPXPRISLT		(SIOCPROTOPRIVATE + 1)
+#define SIOCIPXCFGDATA		(SIOCPROTOPRIVATE + 2)
+
+__END_DECLS
 
 #endif /* netipx/ipx.h */
diff --git a/sysdeps/unix/sysv/linux/powerpc/ioctl-types.h b/sysdeps/unix/sysv/linux/powerpc/bits/ioctl-types.h
index 9e2695652e..9e2695652e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/ioctl-types.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/ioctl-types.h
diff --git a/sysdeps/unix/sysv/linux/powerpc/termbits.h b/sysdeps/unix/sysv/linux/powerpc/bits/termios.h
index 4c6073bfc2..4c6073bfc2 100644
--- a/sysdeps/unix/sysv/linux/powerpc/termbits.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/termios.h
diff --git a/sysdeps/unix/sysv/linux/powerpc/clone.S b/sysdeps/unix/sysv/linux/powerpc/clone.S
index 068b14c538..cca63fe0bc 100644
--- a/sysdeps/unix/sysv/linux/powerpc/clone.S
+++ b/sysdeps/unix/sysv/linux/powerpc/clone.S
@@ -19,7 +19,7 @@
 
 #include <sysdep.h>
 #define _ERRNO_H	1
-#include <errnos.h>
+#include <bits/errno.h>
 
 /* This is the only really unusual system call in PPC linux, but not
    because of any weirdness in the system call itself; because of
diff --git a/sysdeps/unix/sysv/linux/powerpc/kernel_termios.h b/sysdeps/unix/sysv/linux/powerpc/kernel_termios.h
index acf62a42ca..9a5e830c31 100644
--- a/sysdeps/unix/sysv/linux/powerpc/kernel_termios.h
+++ b/sysdeps/unix/sysv/linux/powerpc/kernel_termios.h
@@ -1,9 +1,27 @@
-#ifndef _SYS_KERNEL_TERMIOS_H
-#define _SYS_KERNEL_TERMIOS_H 1
+/* Copyright (C) 1997 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#ifndef _KERNEL_TERMIOS_H
+#define _KERNEL_TERMIOS_H 1
 /* The following corresponds to the values from the Linux 2.0.28 kernel.  */
 
 /* We need the definition of tcflag_t, cc_t, and speed_t.  */
-#include <termbits.h>
+#include <bits/termios.h>
 
 #define __KERNEL_NCCS 19
 
@@ -22,4 +40,4 @@ struct __kernel_termios
 #define _HAVE_C_ISPEED 1
 #define _HAVE_C_OSPEED 1
 
-#endif /* sys/kernel_termios.h */
+#endif /* kernel_termios.h */
diff --git a/sysdeps/unix/sysv/linux/powerpc/socket.S b/sysdeps/unix/sysv/linux/powerpc/socket.S
index 305aba9281..904bca4dc3 100644
--- a/sysdeps/unix/sysv/linux/powerpc/socket.S
+++ b/sysdeps/unix/sysv/linux/powerpc/socket.S
@@ -17,7 +17,7 @@
    Boston, MA 02111-1307, USA.  */
 
 #include <sysdep.h>
-#include <sys/socketcall.h>
+#include <socketcall.h>
 
 #define P(a, b) P2(a, b)
 #define P2(a, b) a##b
diff --git a/sysdeps/unix/sysv/linux/sys/socketcall.h b/sysdeps/unix/sysv/linux/socketcall.h
index 9aaca7a27b..9aaca7a27b 100644
--- a/sysdeps/unix/sysv/linux/sys/socketcall.h
+++ b/sysdeps/unix/sysv/linux/socketcall.h
diff --git a/sysdeps/unix/sysv/linux/sparc/fcntlbits.h b/sysdeps/unix/sysv/linux/sparc/bits/fcntl.h
index 3fc7240a66..3fc7240a66 100644
--- a/sysdeps/unix/sysv/linux/sparc/fcntlbits.h
+++ b/sysdeps/unix/sysv/linux/sparc/bits/fcntl.h
diff --git a/sysdeps/unix/sysv/linux/alpha/ioctls.h b/sysdeps/unix/sysv/linux/sparc/bits/ioctls.h
index 80b2e62e77..8a14f99f43 100644
--- a/sysdeps/unix/sysv/linux/alpha/ioctls.h
+++ b/sysdeps/unix/sysv/linux/sparc/bits/ioctls.h
@@ -16,12 +16,16 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef _IOCTLS_H
-#define _IOCTLS_H 1
+/*
+ * Never include this file directly; use <sys/ioctl.h> instead.
+ */
+
+#ifndef _BITS_IOCTLS_H
+#define _BITS_IOCTLS_H 1
 
 /* Use the definitions from the kernel header files.  */
 #include <asm/ioctls.h>
-#include <sys/kernel_termios.h>
+#include <kernel_termios.h>
 
 /* Oh well, this is necessary since the kernel data structure is
    different from the user-level version.  */
@@ -36,4 +40,4 @@
 
 #include <linux/sockios.h>
 
-#endif /* ioctls.h  */
+#endif /* bits/ioctls.h  */
diff --git a/sysdeps/unix/sysv/linux/sparc/sigaction.h b/sysdeps/unix/sysv/linux/sparc/bits/sigaction.h
index 19aa7e39cb..19aa7e39cb 100644
--- a/sysdeps/unix/sysv/linux/sparc/sigaction.h
+++ b/sysdeps/unix/sysv/linux/sparc/bits/sigaction.h
diff --git a/sysdeps/unix/sysv/linux/sparc/signum.h b/sysdeps/unix/sysv/linux/sparc/bits/signum.h
index 3437c16113..3437c16113 100644
--- a/sysdeps/unix/sysv/linux/sparc/signum.h
+++ b/sysdeps/unix/sysv/linux/sparc/bits/signum.h
diff --git a/sysdeps/unix/sysv/linux/sparc/termbits.h b/sysdeps/unix/sysv/linux/sparc/bits/termios.h
index bf7aa1480f..bf7aa1480f 100644
--- a/sysdeps/unix/sysv/linux/sparc/termbits.h
+++ b/sysdeps/unix/sysv/linux/sparc/bits/termios.h
diff --git a/sysdeps/unix/sysv/linux/sparc/profil-counter.h b/sysdeps/unix/sysv/linux/sparc/profil-counter.h
index 258df5ba93..1bd06482c9 100644
--- a/sysdeps/unix/sysv/linux/sparc/profil-counter.h
+++ b/sysdeps/unix/sysv/linux/sparc/profil-counter.h
@@ -17,7 +17,7 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#include <sigcontext.h>
+#include <signal.h>
 
 void
 profil_counter (int signo, __siginfo_t si)
diff --git a/sysdeps/unix/sysv/linux/sparc/socket.S b/sysdeps/unix/sysv/linux/sparc/socket.S
index 24aba3fc74..bdfc2fcc6d 100644
--- a/sysdeps/unix/sysv/linux/sparc/socket.S
+++ b/sysdeps/unix/sysv/linux/sparc/socket.S
@@ -18,7 +18,7 @@
    Boston, MA 02111-1307, USA.  */
 
 #include <sysdep.h>
-#include <sys/socketcall.h>
+#include <socketcall.h>
 
 #define P(a, b) P2(a, b)
 #define P2(a, b) a##b
diff --git a/sysdeps/unix/sysv/linux/sys/kernel_termios.h b/sysdeps/unix/sysv/linux/sys/kernel_termios.h
deleted file mode 100644
index 629508e765..0000000000
--- a/sysdeps/unix/sysv/linux/sys/kernel_termios.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef _SYS_KERNEL_TERMIOS_H
-#define _SYS_KERNEL_TERMIOS_H 1
-/* The following corresponds to the values from the Linux 2.1.20 kernel.  */
-
-/* We need the definition of tcflag_t, cc_t, and speed_t.  */
-#include <termbits.h>
-
-#define __KERNEL_NCCS 19
-
-struct __kernel_termios
-  {
-    tcflag_t c_iflag;		/* input mode flags */
-    tcflag_t c_oflag;		/* output mode flags */
-    tcflag_t c_cflag;		/* control mode flags */
-    tcflag_t c_lflag;		/* local mode flags */
-    cc_t c_line;		/* line discipline */
-    cc_t c_cc[__KERNEL_NCCS];	/* control characters */
-  };
-
-#endif /* sys/kernel_termios.h */
diff --git a/sysdeps/unix/sysv/linux/sys/mman.h b/sysdeps/unix/sysv/linux/sys/mman.h
index 367b9062b3..dc9f8f7e48 100644
--- a/sysdeps/unix/sysv/linux/sys/mman.h
+++ b/sysdeps/unix/sysv/linux/sys/mman.h
@@ -22,7 +22,7 @@
 #define	_SYS_MMAN_H	1
 #include <features.h>
 
-#include <gnu/types.h>
+#include <bits/types.h>
 #define __need_size_t
 #include <stddef.h>
 
diff --git a/sysdeps/unix/sysv/linux/sys/syscall.h b/sysdeps/unix/sysv/linux/sys/syscall.h
index cef91f6727..d6b14fcf0a 100644
--- a/sysdeps/unix/sysv/linux/sys/syscall.h
+++ b/sysdeps/unix/sysv/linux/sys/syscall.h
@@ -27,9 +27,9 @@
 #ifndef _LIBC
 /* The Linux kernel header file defines macros `__NR_<name>', but some
    programs expect the traditional form `SYS_<name>'.  So in building libc
-   we scan the kernel's list and produce <syscall-list.h> with macros for
+   we scan the kernel's list and produce <bits/syscall.h> with macros for
    all the `SYS_' names.  */
-#include <syscall-list.h>
+#include <bits/syscall.h>
 #endif
 
 #endif
diff --git a/sysdeps/unix/sysv/linux/tcgetattr.c b/sysdeps/unix/sysv/linux/tcgetattr.c
index 9578c4b772..7866183abe 100644
--- a/sysdeps/unix/sysv/linux/tcgetattr.c
+++ b/sysdeps/unix/sysv/linux/tcgetattr.c
@@ -23,7 +23,7 @@
 /* The difference here is that the termios structure used in the
    kernel is not the same as we use in the libc.  Therefore we must
    translate it here.  */
-#include <sys/kernel_termios.h>
+#include <kernel_termios.h>
 
 /* Put the state of FD into *TERMIOS_P.  */
 int
diff --git a/sysdeps/unix/sysv/linux/tcsetattr.c b/sysdeps/unix/sysv/linux/tcsetattr.c
index 6c128110f6..0b9fee2165 100644
--- a/sysdeps/unix/sysv/linux/tcsetattr.c
+++ b/sysdeps/unix/sysv/linux/tcsetattr.c
@@ -24,7 +24,7 @@
 /* The difference here is that the termios structure used in the
    kernel is not the same as we use in the libc.  Therefore we must
    translate it here.  */
-#include <sys/kernel_termios.h>
+#include <kernel_termios.h>
 
 
 /* Set the state of FD to *TERMIOS_P.  */
diff --git a/sysdeps/unix/sysv/minix/sigaction.h b/sysdeps/unix/sysv/minix/bits/sigaction.h
index 6b0c460914..6b0c460914 100644
--- a/sysdeps/unix/sysv/minix/sigaction.h
+++ b/sysdeps/unix/sysv/minix/bits/sigaction.h
diff --git a/sysdeps/unix/sysv/sco3.2.4/confname.h b/sysdeps/unix/sysv/sco3.2.4/bits/confname.h
index 0408951863..0408951863 100644
--- a/sysdeps/unix/sysv/sco3.2.4/confname.h
+++ b/sysdeps/unix/sysv/sco3.2.4/bits/confname.h
diff --git a/sysdeps/unix/sysv/sco3.2.4/sigaction.h b/sysdeps/unix/sysv/sco3.2.4/bits/sigaction.h
index c21b928cdb..c21b928cdb 100644
--- a/sysdeps/unix/sysv/sco3.2.4/sigaction.h
+++ b/sysdeps/unix/sysv/sco3.2.4/bits/sigaction.h
diff --git a/sysdeps/unix/sysv/sco3.2.4/sysconf.S b/sysdeps/unix/sysv/sco3.2.4/sysconf.S
index 631e5e977a..44c89f2cf8 100644
--- a/sysdeps/unix/sysv/sco3.2.4/sysconf.S
+++ b/sysdeps/unix/sysv/sco3.2.4/sysconf.S
@@ -17,7 +17,7 @@ not, write to the Free Software Foundation, Inc., 675 Mass Ave,
 Cambridge, MA 02139, USA.  */
 
 #include <sysdep.h>
-#include <confname.h>
+#include <bits/confname.h>
 
 .globl	__tzname_max
 ENTRY (__sysconf)
diff --git a/sysdeps/unix/sysv/sco3.2/local_lim.h b/sysdeps/unix/sysv/sco3.2/bits/local_lim.h
index e456816446..365858c6f8 100644
--- a/sysdeps/unix/sysv/sco3.2/local_lim.h
+++ b/sysdeps/unix/sysv/sco3.2/bits/local_lim.h
@@ -16,8 +16,8 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef _LOCAL_LIM_H
-#define _LOCAL_LIM_H 1
+#ifndef _BITS_LOCAL_LIM_H
+#define _BITS_LOCAL_LIM_H 1
 
 #define NGROUPS_MAX 8		/* Maximum number of supplementary groups.  */
 #define ARG_MAX 5120
@@ -34,4 +34,4 @@
 
 #define PATH_MAX 1024
 
-#endif	/* local_lim.h */
+#endif	/* bits/local_lim.h */
diff --git a/sysdeps/unix/sysv/sysv4/sigaction.h b/sysdeps/unix/sysv/sysv4/bits/sigaction.h
index 1305ba61e6..1305ba61e6 100644
--- a/sysdeps/unix/sysv/sysv4/sigaction.h
+++ b/sysdeps/unix/sysv/sysv4/bits/sigaction.h
diff --git a/sysdeps/unix/sysv/sysv4/signum.h b/sysdeps/unix/sysv/sysv4/bits/signum.h
index f11c731a42..f11c731a42 100644
--- a/sysdeps/unix/sysv/sysv4/signum.h
+++ b/sysdeps/unix/sysv/sysv4/bits/signum.h
diff --git a/sysdeps/unix/sysv/sysv4/sigset.h b/sysdeps/unix/sysv/sysv4/bits/sigset.h
index 1461c93b3d..1461c93b3d 100644
--- a/sysdeps/unix/sysv/sysv4/sigset.h
+++ b/sysdeps/unix/sysv/sysv4/bits/sigset.h
diff --git a/sysdeps/unix/sysv/sysv4/utsnamelen.h b/sysdeps/unix/sysv/sysv4/bits/utsname.h
index 9dcc618068..9dcc618068 100644
--- a/sysdeps/unix/sysv/sysv4/utsnamelen.h
+++ b/sysdeps/unix/sysv/sysv4/bits/utsname.h
diff --git a/sysdeps/unix/sysv/sysv4/waitflags.h b/sysdeps/unix/sysv/sysv4/bits/waitflags.h
index f5613c1327..29ff566342 100644
--- a/sysdeps/unix/sysv/sysv4/waitflags.h
+++ b/sysdeps/unix/sysv/sysv4/bits/waitflags.h
@@ -1,5 +1,5 @@
 /* Definitions of flag bits for `waitpid' et al.
-   Copyright (C) 1993, 1996 Free Software Foundation, Inc.
+   Copyright (C) 1993, 1996, 1997 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Brendan Kehoe (brendan@zen.org).
 
@@ -18,9 +18,10 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef	_WAITFLAGS_H
+#ifndef _SYS_WAIT_H
+#error "Never use <bits/waitflags.h> directly; include <sys/wait.h> instead."
+#endif
 
-#define	_WAITFLAGS_H	1
 
 /* Bits in the third argument to `waitpid'.  */
 #define	WNOHANG		64	/* Don't block waiting.  */
@@ -31,5 +32,3 @@
 #define WTRAPPED	2	/* Look for processes that stopped
 				   while tracing.  */
 #endif
-
-#endif	/* waitflags.h */
diff --git a/sysdeps/unix/sysv/sysv4/i386/statbuf.h b/sysdeps/unix/sysv/sysv4/i386/bits/stat.h
index 9354d6790c..9b6fed083d 100644
--- a/sysdeps/unix/sysv/sysv4/i386/statbuf.h
+++ b/sysdeps/unix/sysv/sysv4/i386/bits/stat.h
@@ -17,10 +17,14 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef	_STATBUF_H
-#define	_STATBUF_H	1
+/*
+ * Never include this file directly; use <sys/stat.h> instead.
+ */
 
-#include <gnu/types.h>
+#ifndef	_BITS_STAT_H
+#define	_BITS_STAT_H	1
+
+#include <bits/types.h>
 
 /* Versions of the `struct stat' data structure and
    the bits of the `xmknod' interface.  */
@@ -87,4 +91,4 @@ struct stat
 #define	__S_IWRITE	0200	/* Write by owner.  */
 #define	__S_IEXEC	0100	/* Execute by owner.  */
 
-#endif	/* statbuf.h */
+#endif	/* bits/stat.h */
diff --git a/sysdeps/unix/sysv/sysv4/i386/sysdep.h b/sysdeps/unix/sysv/sysv4/i386/sysdep.h
index 1e0cd69f74..ad262e23de 100644
--- a/sysdeps/unix/sysv/sysv4/i386/sysdep.h
+++ b/sysdeps/unix/sysv/sysv4/i386/sysdep.h
@@ -24,7 +24,7 @@ Cambridge, MA 02139, USA.  */
 #ifndef _ERRNO_H
 #define _ERRNO_H
 #endif
-#include <errnos.h>
+#include <bits/errno.h>
 
 #undef	PSEUDO
 #define	PSEUDO(name, syscall_name, args)				      \
diff --git a/sysdeps/unix/sysv/sysv4/solaris2/signum.h b/sysdeps/unix/sysv/sysv4/solaris2/bits/signum.h
index 4e5576425b..4e5576425b 100644
--- a/sysdeps/unix/sysv/sysv4/solaris2/signum.h
+++ b/sysdeps/unix/sysv/sysv4/solaris2/bits/signum.h
diff --git a/sysdeps/unix/sysv/sysv4/solaris2/statbuf.h b/sysdeps/unix/sysv/sysv4/solaris2/bits/stat.h
index e4e2ab8bcf..ea5f1f4279 100644
--- a/sysdeps/unix/sysv/sysv4/solaris2/statbuf.h
+++ b/sysdeps/unix/sysv/sysv4/solaris2/bits/stat.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1996 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1996, 1997 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Brendan Kehoe (brendan@zen.org).
 
@@ -17,10 +17,14 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef	_STATBUF_H
-#define	_STATBUF_H	1
+/*
+ * Never include this file directly; use <sys/stat.h> instead.
+ */
 
-#include <gnu/types.h>
+#ifndef	_BITS_STAT_H
+#define	_BITS_STAT_H	1
+
+#include <bits/types.h>
 
 /* Structure describing file characteristics.  */
 struct stat
@@ -80,4 +84,4 @@ struct stat
 #define	__S_IWRITE	0200	/* Write by owner.  */
 #define	__S_IEXEC	0100	/* Execute by owner.  */
 
-#endif	/* statbuf.h */
+#endif	/* bits/stat.h */
diff --git a/sysdeps/unix/sysv/sysv4/solaris2/sparc/bits/sigcontext.h b/sysdeps/unix/sysv/sysv4/solaris2/sparc/bits/sigcontext.h
new file mode 100644
index 0000000000..7402704864
--- /dev/null
+++ b/sysdeps/unix/sysv/sysv4/solaris2/sparc/bits/sigcontext.h
@@ -0,0 +1 @@
+#include <sysdeps/unix/bsd/sun/sparc/bits/sigcontext.h>
diff --git a/sysdeps/unix/sysv/sysv4/solaris2/sparc/sigcontext.h b/sysdeps/unix/sysv/sysv4/solaris2/sparc/sigcontext.h
deleted file mode 100644
index 532b3793ec..0000000000
--- a/sysdeps/unix/sysv/sysv4/solaris2/sparc/sigcontext.h
+++ /dev/null
@@ -1 +0,0 @@
-#include <sysdeps/unix/bsd/sun/sparc/sigcontext.h>
diff --git a/sysdeps/unix/sysv/sysv4/solaris2/sparc/sysdep.S b/sysdeps/unix/sysv/sysv4/solaris2/sparc/sysdep.S
index da3cd6b8be..edefad0168 100644
--- a/sysdeps/unix/sysv/sysv4/solaris2/sparc/sysdep.S
+++ b/sysdeps/unix/sysv/sysv4/solaris2/sparc/sysdep.S
@@ -18,7 +18,7 @@ Cambridge, MA 02139, USA.  */
 
 #include <sysdep.h>
 #define _ERRNO_H
-#include <errnos.h>
+#include <bits/errno.h>
 
 ENTRY(syscall_error)
 	/* If it was a syscall that got interrupted, but can
diff --git a/sysdeps/unix/sysv/utmpbits.h b/sysdeps/unix/sysv/utmpbits.h
deleted file mode 100644
index 3d2ccf3b12..0000000000
--- a/sysdeps/unix/sysv/utmpbits.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/* The `struct utmp' type, describing entries in the utmp file.  System V.
-Copyright (C) 1996 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., 675 Mass Ave,
-Cambridge, MA 02139, USA.  */
-
-#ifndef _UTMPBITS_H
-
-#define _UTMPBITS_H	1
-
-#include <time.h>
-
-#define _PATH_UTMP      "/var/adm/utmp"
-#define _PATH_WTMP      "/var/adm/wtmp"
-#define _PATH_LASTLOG   "/var/adm/lastlog"
-
-__BEGIN_DECLS
-
-struct utmp
-  {
-#define	ut_name	ut_user
-    char ut_user[8];
-    char ut_id[4];
-    char ut_line[12];
-    short ut_pid;
-    short ut_type;
-    struct exit_status
-      {
-	short e_termination;
-	short e_exit;
-      } ut_exit;
-    time_t ut_time;
-  };
-
-
-/* Tell the user that we have a modern system with UT_HOST, UT_TYPE, UT_ID
-   and UT_TV fields.  */
-#define _HAVE_UT_TYPE	1
-#define _HAVE_UT_ID	1
-#define _HAVE_UT_TV	1
-#define _HAVE_UT_HOST	1
-
-__END_DECLS
-
-#endif /* utmpbits.h  */