summary refs log tree commit diff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1997-10-15 05:34:02 +0000
committerUlrich Drepper <drepper@redhat.com>1997-10-15 05:34:02 +0000
commitf2ea0f5b0d6ff2bbf261a5fd3d61f967e36f22e6 (patch)
tree9553a1d3102f18a5c73538902c851b463b70c108
parent1ea89a402d892b68b193e2e4390d8eb33ed686e7 (diff)
downloadglibc-f2ea0f5b0d6ff2bbf261a5fd3d61f967e36f22e6.tar.gz
glibc-f2ea0f5b0d6ff2bbf261a5fd3d61f967e36f22e6.tar.xz
glibc-f2ea0f5b0d6ff2bbf261a5fd3d61f967e36f22e6.zip
1997-10-15 06:56  Ulrich Drepper  <drepper@cygnus.com>

	* Rules: Remove ruls to magically install <subdir>.h headers.
	Reported by Mark Kettenis <kettenis@phys.uva.nl>.

	* glibcbug.in: Fix @gnu.ai.mit.edu -> @gnu.org.
	* version.c: Likewise.
	* catgets/gencat.c: Likewise.
	* db2/makedb.c: Likewise.
	* locale/programs/locale.c: Likewise.
	* locale/programs/localedef.c: Likewise.

	* libc.map: Move _IO_list_all back to GLIBC_2.0.

	* elf/rtld.c: Provide name of running program to _dl_new_object.

	* Rules: Implement shared-only-sources.
	* include/libc-symbols.h: Define default_symbol_version.
	* libio/Makefile (shared-only-sources): Define.
	* libio/freopen.c: Define as default version.
	* libio/iofopen.c: Likewise.
	* libio/genops.c: Define _IO_list_all here.
	* libio/stdfiles.c: Create linked list with public names.
	* libio/oldstdfiles.c: Likewise.

	* stdio-common/printf.c: Optimize.
	* stdio-common/scanf.c: Optimize.

	* sysdeps/generic/setfpucw.c: Include #include <...> not "...".

	* sysdeps/i386/i486/bits/string.h: Add optimized versions of index and
	rindex.

1997-10-14  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* manual/arith.texi: Spelling fixes.
	* manual/conf.texi: Likewise.
	* manual/creature.texi: Likewise.
	* manual/filesys.texi: Likewise.
	* manual/intro.texi: Likewise.
	* manual/llio.texi: Likewise.
	* manual/math.texi: Likewise.
	* manual/message.texi: Likewise.
	* manual/pattern.texi: Likewise.
	* manual/search.texi: Likewise.
	* manual/signal.texi: Likewise.
	* manual/socket.texi: Likewise.
	* manual/startup.texi: Likewise.
	* manual/stdio.texi: Likewise.
	* manual/string.texi: Likewise.
	* manual/time.texi: Likewise.
	* manual/users.texi: Likewise.

1997-10-13 05:25  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/generic/sys/mman.h: Use __ptr_t instead of __caddr_t.
	* sysdeps/unix/bsd/osf/sys/mman.h: Likewise.
	* sysdeps/unix/bsd/sun/sunos4/sys/mman.h: Likewise.
	* sysdeps/unix/bsd/ultrix4/sys/mman.h: Likewise.
	* sysdeps/unix/sysv/irix4/sys/mman.h: Likewise.
	* sysdeps/unix/sysv/linux/sys/mman.h: Likewise.
	* sysdeps/mach/hurd/mmap.c: Likewise.
	* sysdeps/generic/mmap.c: Likewise.
	* sysdeps/unix/bsd/sun/sunos4/mmap.c: Likewise.
	* sysdeps/mach/munmap.c: Likewise.
	* sysdeps/generic/munmap.c: Likewise.
	* sysdeps/mach/mprotect.c: Likewise.
	* sysdeps/generic/mprotect.c: Likewise.
	* sysdeps/generic/msync.c: Likewise.
	* sysdeps/generic/madvise.c: Likewise.

	* sysdeps/unix/sysv/linux/madvise.c: Include stub version from generic
	subdir.

1997-10-12 20:27  Zack Weinberg  <zack@rabi.phys.columbia.edu>

	* sysdeps/stub (all files):  Moved to sysdeps/generic.
	* all files using stub_warning: Include <stub-tag.h>.
	* include/stub-tag.h: New file, marks stubs in .d files.
	* Makerules: Look for stub-tag.h, not sysdeps/stub, when building
	<gnu/stubs.h>.
	* configure.in: Don't add sysdeps/stub to $sysnames.
	* sysdeps/unix/Makefile: Look for generic headers, not stub
	headers.
	* sysdeps/generic/Makefile: Likewise.
	* manual/maint.texi: Delete references to sysdeps/stub.
	* INSTALL: Rebuilt.
	* configure: Rebuilt.
-rw-r--r--ChangeLog89
-rw-r--r--INSTALL187
-rw-r--r--Makerules9
-rw-r--r--Rules21
-rw-r--r--bits/dirent.h (renamed from sysdeps/stub/bits/dirent.h)0
-rw-r--r--bits/elfclass.h (renamed from sysdeps/stub/bits/elfclass.h)0
-rw-r--r--bits/endian.h (renamed from sysdeps/stub/bits/endian.h)0
-rw-r--r--bits/errno.h (renamed from sysdeps/stub/bits/errno.h)0
-rw-r--r--bits/fcntl.h (renamed from sysdeps/stub/bits/fcntl.h)0
-rw-r--r--bits/fenv.h (renamed from sysdeps/stub/bits/fenv.h)0
-rw-r--r--bits/huge_val.h (renamed from sysdeps/stub/bits/huge_val.h)0
-rw-r--r--bits/ioctls.h (renamed from sysdeps/stub/bits/ioctls.h)0
-rw-r--r--bits/ipc.h (renamed from sysdeps/stub/bits/ipc.h)0
-rw-r--r--bits/libc-lock.h (renamed from sysdeps/stub/bits/libc-lock.h)0
-rw-r--r--bits/local_lim.h (renamed from sysdeps/stub/bits/local_lim.h)0
-rw-r--r--bits/mathinline.h (renamed from sysdeps/stub/bits/mathinline.h)0
-rw-r--r--bits/msq.h (renamed from sysdeps/stub/bits/msq.h)0
-rw-r--r--bits/nan.h (renamed from sysdeps/stub/bits/nan.h)0
-rw-r--r--bits/posix_opt.h (renamed from sysdeps/stub/bits/posix_opt.h)0
-rw-r--r--bits/sem.h (renamed from sysdeps/stub/bits/sem.h)0
-rw-r--r--bits/setjmp.h (renamed from sysdeps/stub/bits/setjmp.h)0
-rw-r--r--bits/shm.h (renamed from sysdeps/stub/bits/shm.h)0
-rw-r--r--bits/sigcontext.h (renamed from sysdeps/stub/bits/sigcontext.h)0
-rw-r--r--bits/signum.h (renamed from sysdeps/stub/bits/signum.h)0
-rw-r--r--bits/stat.h (renamed from sysdeps/stub/bits/stat.h)0
-rw-r--r--bits/string.h (renamed from sysdeps/stub/bits/string.h)0
-rw-r--r--bits/time.h (renamed from sysdeps/stub/bits/time.h)0
-rw-r--r--bits/waitflags.h (renamed from sysdeps/stub/bits/waitflags.h)0
-rw-r--r--catgets/gencat.c2
-rwxr-xr-xconfigure4
-rw-r--r--configure.in4
-rw-r--r--db2/makedb.c2
-rw-r--r--elf/rtld.c3
-rw-r--r--glibcbug.in2
-rw-r--r--include/libc-symbols.h3
-rw-r--r--include/stub-tag.h5
-rw-r--r--libc.map6
-rw-r--r--libio/Makefile2
-rw-r--r--libio/freopen.c2
-rw-r--r--libio/genops.c2
-rw-r--r--libio/iofopen.c4
-rw-r--r--libio/oldstdfiles.c8
-rw-r--r--libio/stdfiles.c14
-rw-r--r--locale/programs/locale.c2
-rw-r--r--locale/programs/localedef.c2
-rw-r--r--manual/arith.texi20
-rw-r--r--manual/conf.texi16
-rw-r--r--manual/creature.texi2
-rw-r--r--manual/filesys.texi30
-rw-r--r--manual/intro.texi2
-rw-r--r--manual/llio.texi8
-rw-r--r--manual/maint.texi51
-rw-r--r--manual/math.texi34
-rw-r--r--manual/message.texi70
-rw-r--r--manual/pattern.texi4
-rw-r--r--manual/search.texi18
-rw-r--r--manual/signal.texi2
-rw-r--r--manual/socket.texi2
-rw-r--r--manual/startup.texi2
-rw-r--r--manual/stdio.texi24
-rw-r--r--manual/string.texi26
-rw-r--r--manual/time.texi4
-rw-r--r--manual/users.texi2
-rw-r--r--stdio-common/printf.c4
-rw-r--r--stdio-common/scanf.c15
-rw-r--r--sysdeps/generic/Makefile2
-rw-r--r--sysdeps/generic/__longjmp.c (renamed from sysdeps/stub/__longjmp.c)1
-rw-r--r--sysdeps/generic/_exit.c (renamed from sysdeps/stub/_exit.c)1
-rw-r--r--sysdeps/generic/accept.c (renamed from sysdeps/stub/accept.c)1
-rw-r--r--sysdeps/generic/access.c (renamed from sysdeps/stub/access.c)1
-rw-r--r--sysdeps/generic/acct.c (renamed from sysdeps/stub/acct.c)1
-rw-r--r--sysdeps/generic/adjtime.c (renamed from sysdeps/stub/adjtime.c)1
-rw-r--r--sysdeps/generic/alarm.c (renamed from sysdeps/stub/alarm.c)1
-rw-r--r--sysdeps/generic/asm-syntax.h (renamed from sysdeps/stub/asm-syntax.h)0
-rw-r--r--sysdeps/generic/atomicity.h (renamed from sysdeps/stub/atomicity.h)0
-rw-r--r--sysdeps/generic/bind.c (renamed from sysdeps/stub/bind.c)1
-rw-r--r--sysdeps/generic/bits/dirent.h24
-rw-r--r--sysdeps/generic/bits/elfclass.h8
-rw-r--r--sysdeps/generic/bits/endian.h9
-rw-r--r--sysdeps/generic/bits/errno.h40
-rw-r--r--sysdeps/generic/bits/fcntl.h85
-rw-r--r--sysdeps/generic/bits/fenv.h61
-rw-r--r--sysdeps/generic/bits/huge_val.h26
-rw-r--r--sysdeps/generic/bits/ioctls.h1
-rw-r--r--sysdeps/generic/bits/ipc.h56
-rw-r--r--sysdeps/generic/bits/libc-lock.h109
-rw-r--r--sysdeps/generic/bits/local_lim.h3
-rw-r--r--sysdeps/generic/bits/mathinline.h12
-rw-r--r--sysdeps/generic/bits/msq.h47
-rw-r--r--sysdeps/generic/bits/nan.h5
-rw-r--r--sysdeps/generic/bits/posix_opt.h2
-rw-r--r--sysdeps/generic/bits/sem.h61
-rw-r--r--sysdeps/generic/bits/setjmp.h3
-rw-r--r--sysdeps/generic/bits/shm.h53
-rw-r--r--sysdeps/generic/bits/sigcontext.h29
-rw-r--r--sysdeps/generic/bits/signum.h53
-rw-r--r--sysdeps/generic/bits/stat.h74
-rw-r--r--sysdeps/generic/bits/stdio_lim.h (renamed from sysdeps/stub/bits/stdio_lim.h)0
-rw-r--r--sysdeps/generic/bits/string.h12
-rw-r--r--sysdeps/generic/bits/time.h44
-rw-r--r--sysdeps/generic/bits/waitflags.h27
-rw-r--r--sysdeps/generic/brdinit.c (renamed from sysdeps/stub/brdinit.c)0
-rw-r--r--sysdeps/generic/brk.c (renamed from sysdeps/stub/brk.c)1
-rw-r--r--sysdeps/generic/bsd-_setjmp.c (renamed from sysdeps/stub/bsd-_setjmp.c)0
-rw-r--r--sysdeps/generic/bsd-setjmp.c (renamed from sysdeps/stub/bsd-setjmp.c)0
-rw-r--r--sysdeps/generic/chdir.c (renamed from sysdeps/stub/chdir.c)1
-rw-r--r--sysdeps/generic/chflags.c (renamed from sysdeps/stub/chflags.c)1
-rw-r--r--sysdeps/generic/chmod.c (renamed from sysdeps/stub/chmod.c)1
-rw-r--r--sysdeps/generic/chown.c (renamed from sysdeps/stub/chown.c)1
-rw-r--r--sysdeps/generic/chroot.c (renamed from sysdeps/stub/chroot.c)1
-rw-r--r--sysdeps/generic/clock.c (renamed from sysdeps/stub/clock.c)1
-rw-r--r--sysdeps/generic/close.c (renamed from sysdeps/stub/close.c)1
-rw-r--r--sysdeps/generic/closedir.c (renamed from sysdeps/stub/closedir.c)1
-rw-r--r--sysdeps/generic/confstr.h (renamed from sysdeps/stub/confstr.h)0
-rw-r--r--sysdeps/generic/connect.c (renamed from sysdeps/stub/connect.c)1
-rw-r--r--sysdeps/generic/console.c (renamed from sysdeps/stub/console.c)0
-rw-r--r--sysdeps/generic/ctermid.c (renamed from sysdeps/stub/ctermid.c)1
-rw-r--r--sysdeps/generic/cuserid.c (renamed from sysdeps/stub/cuserid.c)1
-rw-r--r--sysdeps/generic/dbl2mpn.c (renamed from sysdeps/stub/dbl2mpn.c)0
-rw-r--r--sysdeps/generic/defs.c (renamed from sysdeps/stub/defs.c)0
-rw-r--r--sysdeps/generic/des_impl.c (renamed from sysdeps/stub/des_impl.c)1
-rw-r--r--sysdeps/generic/dirfd.c (renamed from sysdeps/stub/dirfd.c)1
-rw-r--r--sysdeps/generic/dirstream.h (renamed from sysdeps/stub/dirstream.h)0
-rw-r--r--sysdeps/generic/dl-machine.h (renamed from sysdeps/stub/dl-machine.h)0
-rw-r--r--sysdeps/generic/dup.c (renamed from sysdeps/stub/dup.c)1
-rw-r--r--sysdeps/generic/dup2.c (renamed from sysdeps/stub/dup2.c)1
-rw-r--r--sysdeps/generic/e_acoshl.c (renamed from sysdeps/stub/e_acoshl.c)1
-rw-r--r--sysdeps/generic/e_acosl.c (renamed from sysdeps/stub/e_acosl.c)1
-rw-r--r--sysdeps/generic/e_asinl.c (renamed from sysdeps/stub/e_asinl.c)1
-rw-r--r--sysdeps/generic/e_atan2l.c (renamed from sysdeps/stub/e_atan2l.c)1
-rw-r--r--sysdeps/generic/e_expl.c (renamed from sysdeps/stub/e_expl.c)1
-rw-r--r--sysdeps/generic/e_fmodl.c (renamed from sysdeps/stub/e_fmodl.c)1
-rw-r--r--sysdeps/generic/e_j0l.c (renamed from sysdeps/stub/e_j0l.c)1
-rw-r--r--sysdeps/generic/e_j1l.c (renamed from sysdeps/stub/e_j1l.c)1
-rw-r--r--sysdeps/generic/e_jnl.c (renamed from sysdeps/stub/e_jnl.c)1
-rw-r--r--sysdeps/generic/e_lgammal_r.c (renamed from sysdeps/stub/e_lgammal_r.c)1
-rw-r--r--sysdeps/generic/e_log10l.c (renamed from sysdeps/stub/e_log10l.c)1
-rw-r--r--sysdeps/generic/e_logl.c (renamed from sysdeps/stub/e_logl.c)1
-rw-r--r--sysdeps/generic/e_powl.c (renamed from sysdeps/stub/e_powl.c)1
-rw-r--r--sysdeps/generic/e_rem_pio2l.c (renamed from sysdeps/stub/e_rem_pio2l.c)1
-rw-r--r--sysdeps/generic/e_sqrtl.c (renamed from sysdeps/stub/e_sqrtl.c)1
-rw-r--r--sysdeps/generic/errlist.c (renamed from sysdeps/stub/errlist.c)0
-rw-r--r--sysdeps/generic/euidaccess.c (renamed from sysdeps/stub/euidaccess.c)1
-rw-r--r--sysdeps/generic/exc2signal.c (renamed from sysdeps/stub/exc2signal.c)0
-rw-r--r--sysdeps/generic/execve.c (renamed from sysdeps/stub/execve.c)1
-rw-r--r--sysdeps/generic/fchdir.c (renamed from sysdeps/stub/fchdir.c)1
-rw-r--r--sysdeps/generic/fchflags.c (renamed from sysdeps/stub/fchflags.c)1
-rw-r--r--sysdeps/generic/fchmod.c (renamed from sysdeps/stub/fchmod.c)1
-rw-r--r--sysdeps/generic/fchown.c (renamed from sysdeps/stub/fchown.c)1
-rw-r--r--sysdeps/generic/fclrexcpt.c (renamed from sysdeps/stub/fclrexcpt.c)1
-rw-r--r--sysdeps/generic/fcntl.c (renamed from sysdeps/stub/fcntl.c)1
-rw-r--r--sysdeps/generic/fdopen.c (renamed from sysdeps/stub/fdopen.c)1
-rw-r--r--sysdeps/generic/fegetenv.c (renamed from sysdeps/stub/fegetenv.c)1
-rw-r--r--sysdeps/generic/fegetround.c (renamed from sysdeps/stub/fegetround.c)1
-rw-r--r--sysdeps/generic/feholdexcpt.c (renamed from sysdeps/stub/feholdexcpt.c)1
-rw-r--r--sysdeps/generic/fesetenv.c (renamed from sysdeps/stub/fesetenv.c)1
-rw-r--r--sysdeps/generic/fesetround.c (renamed from sysdeps/stub/fesetround.c)1
-rw-r--r--sysdeps/generic/feupdateenv.c (renamed from sysdeps/stub/feupdateenv.c)1
-rw-r--r--sysdeps/generic/fexecve.c (renamed from sysdeps/stub/fexecve.c)1
-rw-r--r--sysdeps/generic/fgetexcptflg.c (renamed from sysdeps/stub/fgetexcptflg.c)1
-rw-r--r--sysdeps/generic/flock.c (renamed from sysdeps/stub/flock.c)1
-rw-r--r--sysdeps/generic/fork.c (renamed from sysdeps/stub/fork.c)1
-rw-r--r--sysdeps/generic/fpathconf.c (renamed from sysdeps/stub/fpathconf.c)1
-rw-r--r--sysdeps/generic/fpu_control.h (renamed from sysdeps/stub/fpu_control.h)0
-rw-r--r--sysdeps/generic/fraiseexcpt.c (renamed from sysdeps/stub/fraiseexcpt.c)1
-rw-r--r--sysdeps/generic/fsetexcptflg.c (renamed from sysdeps/stub/fsetexcptflg.c)1
-rw-r--r--sysdeps/generic/fstatfs.c (renamed from sysdeps/stub/fstatfs.c)1
-rw-r--r--sysdeps/generic/fstatfs64.c (renamed from sysdeps/stub/fstatfs64.c)1
-rw-r--r--sysdeps/generic/fsync.c (renamed from sysdeps/stub/fsync.c)1
-rw-r--r--sysdeps/generic/ftestexcept.c (renamed from sysdeps/stub/ftestexcept.c)1
-rw-r--r--sysdeps/generic/ftruncate.c (renamed from sysdeps/stub/ftruncate.c)1
-rw-r--r--sysdeps/generic/fxstat.c (renamed from sysdeps/stub/fxstat.c)1
-rw-r--r--sysdeps/generic/fxstat64.c (renamed from sysdeps/stub/fxstat64.c)1
-rw-r--r--sysdeps/generic/gai_strerror.c (renamed from sysdeps/stub/gai_strerror.c)0
-rw-r--r--sysdeps/generic/getaddrinfo.c (renamed from sysdeps/stub/getaddrinfo.c)1
-rw-r--r--sysdeps/generic/getcwd.c (renamed from sysdeps/stub/getcwd.c)1
-rw-r--r--sysdeps/generic/getdents.c (renamed from sysdeps/stub/getdents.c)1
-rw-r--r--sysdeps/generic/getdomain.c1
-rw-r--r--sysdeps/generic/getdtsz.c (renamed from sysdeps/stub/getdtsz.c)1
-rw-r--r--sysdeps/generic/getegid.c (renamed from sysdeps/stub/getegid.c)1
-rw-r--r--sysdeps/generic/geteuid.c (renamed from sysdeps/stub/geteuid.c)1
-rw-r--r--sysdeps/generic/getgid.c (renamed from sysdeps/stub/getgid.c)1
-rw-r--r--sysdeps/generic/getgroups.c (renamed from sysdeps/stub/getgroups.c)1
-rw-r--r--sysdeps/generic/gethostid.c (renamed from sysdeps/stub/gethostid.c)1
-rw-r--r--sysdeps/generic/gethostname.c (renamed from sysdeps/stub/gethostname.c)1
-rw-r--r--sysdeps/generic/getitimer.c (renamed from sysdeps/stub/getitimer.c)1
-rw-r--r--sysdeps/generic/getlogin.c (renamed from sysdeps/stub/getlogin.c)1
-rw-r--r--sysdeps/generic/getlogin_r.c (renamed from sysdeps/stub/getlogin_r.c)1
-rw-r--r--sysdeps/generic/getpagesize.c (renamed from sysdeps/stub/getpagesize.c)1
-rw-r--r--sysdeps/generic/getpeername.c (renamed from sysdeps/stub/getpeername.c)1
-rw-r--r--sysdeps/generic/getpgid.c (renamed from sysdeps/stub/getpgid.c)1
-rw-r--r--sysdeps/generic/getpid.c (renamed from sysdeps/stub/getpid.c)1
-rw-r--r--sysdeps/generic/getppid.c (renamed from sysdeps/stub/getppid.c)1
-rw-r--r--sysdeps/generic/getpriority.c (renamed from sysdeps/stub/getpriority.c)1
-rw-r--r--sysdeps/generic/getrlimit.c (renamed from sysdeps/stub/getrlimit.c)1
-rw-r--r--sysdeps/generic/getrlimit64.c (renamed from sysdeps/stub/getrlimit64.c)1
-rw-r--r--sysdeps/generic/getrusage.c (renamed from sysdeps/stub/getrusage.c)1
-rw-r--r--sysdeps/generic/getsid.c (renamed from sysdeps/stub/getsid.c)1
-rw-r--r--sysdeps/generic/getsockname.c (renamed from sysdeps/stub/getsockname.c)1
-rw-r--r--sysdeps/generic/getsockopt.c (renamed from sysdeps/stub/getsockopt.c)1
-rw-r--r--sysdeps/generic/getsysstats.c (renamed from sysdeps/stub/getsysstats.c)1
-rw-r--r--sysdeps/generic/gettimeofday.c (renamed from sysdeps/stub/gettimeofday.c)1
-rw-r--r--sysdeps/generic/getuid.c (renamed from sysdeps/stub/getuid.c)1
-rw-r--r--sysdeps/generic/gtty.c (renamed from sysdeps/stub/gtty.c)1
-rw-r--r--sysdeps/generic/if_index.c (renamed from sysdeps/stub/if_index.c)1
-rw-r--r--sysdeps/generic/init-first.c (renamed from sysdeps/stub/init-first.c)0
-rw-r--r--sysdeps/generic/init-posix.c (renamed from sysdeps/stub/init-posix.c)0
-rw-r--r--sysdeps/generic/intr-msg.h (renamed from sysdeps/stub/intr-msg.h)0
-rw-r--r--sysdeps/generic/ioctl.c (renamed from sysdeps/stub/ioctl.c)1
-rw-r--r--sysdeps/generic/isatty.c (renamed from sysdeps/stub/isatty.c)1
-rw-r--r--sysdeps/generic/isfdtype.c (renamed from sysdeps/stub/isfdtype.c)1
-rw-r--r--sysdeps/generic/jmp-unwind.c (renamed from sysdeps/stub/jmp-unwind.c)0
-rw-r--r--sysdeps/generic/k_cosl.c (renamed from sysdeps/stub/k_cosl.c)1
-rw-r--r--sysdeps/generic/k_rem_pio2l.c (renamed from sysdeps/stub/k_rem_pio2l.c)1
-rw-r--r--sysdeps/generic/k_sinl.c (renamed from sysdeps/stub/k_sinl.c)1
-rw-r--r--sysdeps/generic/k_tanl.c (renamed from sysdeps/stub/k_tanl.c)1
-rw-r--r--sysdeps/generic/kill.c (renamed from sysdeps/stub/kill.c)1
-rw-r--r--sysdeps/generic/killpg.c (renamed from sysdeps/stub/killpg.c)1
-rw-r--r--sysdeps/generic/lchown.c (renamed from sysdeps/stub/lchown.c)1
-rw-r--r--sysdeps/generic/ldbl2mpn.c (renamed from sysdeps/stub/ldbl2mpn.c)0
-rw-r--r--sysdeps/generic/libc_fatal.c (renamed from sysdeps/stub/libc_fatal.c)0
-rw-r--r--sysdeps/generic/link.c (renamed from sysdeps/stub/link.c)1
-rw-r--r--sysdeps/generic/listen.c (renamed from sysdeps/stub/listen.c)1
-rw-r--r--sysdeps/generic/lockfile.c (renamed from sysdeps/stub/lockfile.c)0
-rw-r--r--sysdeps/generic/longjmp-ts.c (renamed from sysdeps/stub/longjmp-ts.c)0
-rw-r--r--sysdeps/generic/lseek.c (renamed from sysdeps/stub/lseek.c)1
-rw-r--r--sysdeps/generic/lseek64.c (renamed from sysdeps/stub/lseek64.c)1
-rw-r--r--sysdeps/generic/lxstat64.c (renamed from sysdeps/stub/lxstat64.c)1
-rw-r--r--sysdeps/generic/machine-lock.h (renamed from sysdeps/stub/machine-lock.h)0
-rw-r--r--sysdeps/generic/machine-sp.h (renamed from sysdeps/stub/machine-sp.h)0
-rw-r--r--sysdeps/generic/madvise.c (renamed from sysdeps/stub/madvise.c)3
-rw-r--r--sysdeps/generic/mkdir.c (renamed from sysdeps/stub/mkdir.c)1
-rw-r--r--sysdeps/generic/mkfifo.c (renamed from sysdeps/stub/mkfifo.c)1
-rw-r--r--sysdeps/generic/mkstemp.c (renamed from sysdeps/stub/mkstemp.c)1
-rw-r--r--sysdeps/generic/mktemp.c (renamed from sysdeps/stub/mktemp.c)1
-rw-r--r--sysdeps/generic/mmap.c (renamed from sysdeps/stub/mmap.c)9
-rw-r--r--sysdeps/generic/mpn2dbl.c (renamed from sysdeps/stub/mpn2dbl.c)0
-rw-r--r--sysdeps/generic/mpn2flt.c (renamed from sysdeps/stub/mpn2flt.c)0
-rw-r--r--sysdeps/generic/mpn2ldbl.c (renamed from sysdeps/stub/mpn2ldbl.c)0
-rw-r--r--sysdeps/generic/mprotect.c (renamed from sysdeps/stub/mprotect.c)3
-rw-r--r--sysdeps/generic/msgctl.c (renamed from sysdeps/stub/msgctl.c)1
-rw-r--r--sysdeps/generic/msgget.c (renamed from sysdeps/stub/msgget.c)1
-rw-r--r--sysdeps/generic/msgrcv.c (renamed from sysdeps/stub/msgrcv.c)1
-rw-r--r--sysdeps/generic/msgsnd.c (renamed from sysdeps/stub/msgsnd.c)1
-rw-r--r--sysdeps/generic/msync.c (renamed from sysdeps/stub/msync.c)3
-rw-r--r--sysdeps/generic/munmap.c (renamed from sysdeps/stub/munmap.c)3
-rw-r--r--sysdeps/generic/nanosleep.c (renamed from sysdeps/stub/nanosleep.c)1
-rw-r--r--sysdeps/generic/nice.c (renamed from sysdeps/stub/nice.c)1
-rw-r--r--sysdeps/generic/nlist.c (renamed from sysdeps/stub/nlist.c)1
-rw-r--r--sysdeps/generic/open.c (renamed from sysdeps/stub/open.c)1
-rw-r--r--sysdeps/generic/open64.c (renamed from sysdeps/stub/open64.c)1
-rw-r--r--sysdeps/generic/opendir.c (renamed from sysdeps/stub/opendir.c)1
-rw-r--r--sysdeps/generic/pathconf.c (renamed from sysdeps/stub/pathconf.c)1
-rw-r--r--sysdeps/generic/pause.c (renamed from sysdeps/stub/pause.c)1
-rw-r--r--sysdeps/generic/pipe.c (renamed from sysdeps/stub/pipe.c)1
-rw-r--r--sysdeps/generic/pipestream.c (renamed from sysdeps/stub/pipestream.c)1
-rw-r--r--sysdeps/generic/poll.c (renamed from sysdeps/stub/poll.c)1
-rw-r--r--sysdeps/generic/pread.c (renamed from sysdeps/stub/pread.c)1
-rw-r--r--sysdeps/generic/pread64.c (renamed from sysdeps/stub/pread64.c)1
-rw-r--r--sysdeps/generic/profil.c (renamed from sysdeps/stub/profil.c)1
-rw-r--r--sysdeps/generic/ptrace.c (renamed from sysdeps/stub/ptrace.c)1
-rw-r--r--sysdeps/generic/pwrite.c (renamed from sysdeps/stub/pwrite.c)1
-rw-r--r--sysdeps/generic/pwrite64.c (renamed from sysdeps/stub/pwrite64.c)1
-rw-r--r--sysdeps/generic/raise.c (renamed from sysdeps/stub/raise.c)1
-rw-r--r--sysdeps/generic/read.c (renamed from sysdeps/stub/read.c)1
-rw-r--r--sysdeps/generic/readdir.c (renamed from sysdeps/stub/readdir.c)1
-rw-r--r--sysdeps/generic/readdir64.c (renamed from sysdeps/stub/readdir64.c)1
-rw-r--r--sysdeps/generic/readdir64_r.c (renamed from sysdeps/stub/readdir64_r.c)1
-rw-r--r--sysdeps/generic/readdir_r.c (renamed from sysdeps/stub/readdir_r.c)1
-rw-r--r--sysdeps/generic/readlink.c (renamed from sysdeps/stub/readlink.c)1
-rw-r--r--sysdeps/generic/readv.c (renamed from sysdeps/stub/readv.c)1
-rw-r--r--sysdeps/generic/reboot.c (renamed from sysdeps/stub/reboot.c)1
-rw-r--r--sysdeps/generic/recv.c (renamed from sysdeps/stub/recv.c)1
-rw-r--r--sysdeps/generic/recvfrom.c (renamed from sysdeps/stub/recvfrom.c)1
-rw-r--r--sysdeps/generic/recvmsg.c (renamed from sysdeps/stub/recvmsg.c)1
-rw-r--r--sysdeps/generic/remove.c (renamed from sysdeps/stub/remove.c)1
-rw-r--r--sysdeps/generic/rename.c (renamed from sysdeps/stub/rename.c)1
-rw-r--r--sysdeps/generic/revoke.c (renamed from sysdeps/stub/revoke.c)1
-rw-r--r--sysdeps/generic/rewinddir.c (renamed from sysdeps/stub/rewinddir.c)1
-rw-r--r--sysdeps/generic/rmdir.c (renamed from sysdeps/stub/rmdir.c)1
-rw-r--r--sysdeps/generic/s_atanl.c (renamed from sysdeps/stub/s_atanl.c)1
-rw-r--r--sysdeps/generic/s_erfl.c (renamed from sysdeps/stub/s_erfl.c)1
-rw-r--r--sysdeps/generic/s_exp2.c (renamed from sysdeps/stub/s_exp2.c)1
-rw-r--r--sysdeps/generic/s_exp2f.c (renamed from sysdeps/stub/s_exp2f.c)1
-rw-r--r--sysdeps/generic/s_exp2l.c (renamed from sysdeps/stub/s_exp2l.c)1
-rw-r--r--sysdeps/generic/s_expm1l.c (renamed from sysdeps/stub/s_expm1l.c)1
-rw-r--r--sysdeps/generic/s_log1pl.c (renamed from sysdeps/stub/s_log1pl.c)1
-rw-r--r--sysdeps/generic/s_log2l.c (renamed from sysdeps/stub/s_log2l.c)1
-rw-r--r--sysdeps/generic/sched_getp.c (renamed from sysdeps/stub/sched_getp.c)1
-rw-r--r--sysdeps/generic/sched_gets.c (renamed from sysdeps/stub/sched_gets.c)1
-rw-r--r--sysdeps/generic/sched_primax.c (renamed from sysdeps/stub/sched_primax.c)1
-rw-r--r--sysdeps/generic/sched_primin.c (renamed from sysdeps/stub/sched_primin.c)1
-rw-r--r--sysdeps/generic/sched_rr_gi.c (renamed from sysdeps/stub/sched_rr_gi.c)1
-rw-r--r--sysdeps/generic/sched_setp.c (renamed from sysdeps/stub/sched_setp.c)1
-rw-r--r--sysdeps/generic/sched_sets.c (renamed from sysdeps/stub/sched_sets.c)1
-rw-r--r--sysdeps/generic/sched_yield.c (renamed from sysdeps/stub/sched_yield.c)1
-rw-r--r--sysdeps/generic/seekdir.c (renamed from sysdeps/stub/seekdir.c)1
-rw-r--r--sysdeps/generic/select.c (renamed from sysdeps/stub/select.c)1
-rw-r--r--sysdeps/generic/semctl.c (renamed from sysdeps/stub/semctl.c)1
-rw-r--r--sysdeps/generic/semget.c (renamed from sysdeps/stub/semget.c)1
-rw-r--r--sysdeps/generic/semop.c (renamed from sysdeps/stub/semop.c)1
-rw-r--r--sysdeps/generic/send.c (renamed from sysdeps/stub/send.c)1
-rw-r--r--sysdeps/generic/sendmsg.c (renamed from sysdeps/stub/sendmsg.c)1
-rw-r--r--sysdeps/generic/sendto.c (renamed from sysdeps/stub/sendto.c)1
-rw-r--r--sysdeps/generic/setdomain.c (renamed from sysdeps/stub/setdomain.c)1
-rw-r--r--sysdeps/generic/setegid.c (renamed from sysdeps/stub/setegid.c)1
-rw-r--r--sysdeps/generic/seteuid.c (renamed from sysdeps/stub/seteuid.c)1
-rw-r--r--sysdeps/generic/setfpucw.c2
-rw-r--r--sysdeps/generic/setgid.c (renamed from sysdeps/stub/setgid.c)1
-rw-r--r--sysdeps/generic/setgroups.c (renamed from sysdeps/stub/setgroups.c)1
-rw-r--r--sysdeps/generic/sethostid.c (renamed from sysdeps/stub/sethostid.c)1
-rw-r--r--sysdeps/generic/sethostname.c (renamed from sysdeps/stub/sethostname.c)1
-rw-r--r--sysdeps/generic/setitimer.c (renamed from sysdeps/stub/setitimer.c)1
-rw-r--r--sysdeps/generic/setjmp.c (renamed from sysdeps/stub/setjmp.c)1
-rw-r--r--sysdeps/generic/setlogin.c (renamed from sysdeps/stub/setlogin.c)1
-rw-r--r--sysdeps/generic/setpgid.c (renamed from sysdeps/stub/setpgid.c)1
-rw-r--r--sysdeps/generic/setpriority.c (renamed from sysdeps/stub/setpriority.c)1
-rw-r--r--sysdeps/generic/setregid.c (renamed from sysdeps/stub/setregid.c)1
-rw-r--r--sysdeps/generic/setreuid.c (renamed from sysdeps/stub/setreuid.c)1
-rw-r--r--sysdeps/generic/setrlimit.c (renamed from sysdeps/stub/setrlimit.c)1
-rw-r--r--sysdeps/generic/setrlimit64.c (renamed from sysdeps/stub/setrlimit64.c)1
-rw-r--r--sysdeps/generic/setsid.c (renamed from sysdeps/stub/setsid.c)1
-rw-r--r--sysdeps/generic/setsockopt.c (renamed from sysdeps/stub/setsockopt.c)1
-rw-r--r--sysdeps/generic/settimeofday.c (renamed from sysdeps/stub/settimeofday.c)1
-rw-r--r--sysdeps/generic/setuid.c (renamed from sysdeps/stub/setuid.c)1
-rw-r--r--sysdeps/generic/shmat.c (renamed from sysdeps/stub/shmat.c)1
-rw-r--r--sysdeps/generic/shmctl.c (renamed from sysdeps/stub/shmctl.c)1
-rw-r--r--sysdeps/generic/shmdt.c (renamed from sysdeps/stub/shmdt.c)1
-rw-r--r--sysdeps/generic/shmget.c (renamed from sysdeps/stub/shmget.c)1
-rw-r--r--sysdeps/generic/shutdown.c (renamed from sysdeps/stub/shutdown.c)1
-rw-r--r--sysdeps/generic/sigaction.c (renamed from sysdeps/stub/sigaction.c)1
-rw-r--r--sysdeps/generic/sigaltstack.c (renamed from sysdeps/stub/sigaltstack.c)1
-rw-r--r--sysdeps/generic/sigblock.c (renamed from sysdeps/stub/sigblock.c)1
-rw-r--r--sysdeps/generic/sigintr.c (renamed from sysdeps/stub/sigintr.c)1
-rw-r--r--sysdeps/generic/siglist.c (renamed from sysdeps/stub/siglist.c)0
-rw-r--r--sysdeps/generic/signal.c (renamed from sysdeps/stub/signal.c)1
-rw-r--r--sysdeps/generic/sigpause.c (renamed from sysdeps/stub/sigpause.c)1
-rw-r--r--sysdeps/generic/sigpending.c (renamed from sysdeps/stub/sigpending.c)1
-rw-r--r--sysdeps/generic/sigprocmask.c (renamed from sysdeps/stub/sigprocmask.c)0
-rw-r--r--sysdeps/generic/sigreturn.c (renamed from sysdeps/stub/sigreturn.c)1
-rw-r--r--sysdeps/generic/sigsetmask.c (renamed from sysdeps/stub/sigsetmask.c)1
-rw-r--r--sysdeps/generic/sigstack.c (renamed from sysdeps/stub/sigstack.c)1
-rw-r--r--sysdeps/generic/sigsuspend.c (renamed from sysdeps/stub/sigsuspend.c)1
-rw-r--r--sysdeps/generic/sigvec.c (renamed from sysdeps/stub/sigvec.c)1
-rw-r--r--sysdeps/generic/sigwait.c (renamed from sysdeps/stub/sigwait.c)1
-rw-r--r--sysdeps/generic/sleep.c (renamed from sysdeps/stub/sleep.c)1
-rw-r--r--sysdeps/generic/socket.c (renamed from sysdeps/stub/socket.c)1
-rw-r--r--sysdeps/generic/socketpair.c (renamed from sysdeps/stub/socketpair.c)1
-rw-r--r--sysdeps/generic/sstk.c (renamed from sysdeps/stub/sstk.c)1
-rw-r--r--sysdeps/generic/start.c (renamed from sysdeps/stub/start.c)0
-rw-r--r--sysdeps/generic/statfs.c (renamed from sysdeps/stub/statfs.c)1
-rw-r--r--sysdeps/generic/statfs64.c (renamed from sysdeps/stub/statfs64.c)1
-rw-r--r--sysdeps/generic/stdio_init.c (renamed from sysdeps/stub/stdio_init.c)0
-rw-r--r--sysdeps/generic/stime.c (renamed from sysdeps/stub/stime.c)1
-rw-r--r--sysdeps/generic/strtsupp.c (renamed from sysdeps/stub/strtsupp.c)0
-rw-r--r--sysdeps/generic/stty.c (renamed from sysdeps/stub/stty.c)1
-rw-r--r--sysdeps/generic/stub_warnings270
-rw-r--r--sysdeps/generic/swapoff.c (renamed from sysdeps/stub/swapoff.c)1
-rw-r--r--sysdeps/generic/swapon.c (renamed from sysdeps/stub/swapon.c)1
-rw-r--r--sysdeps/generic/symlink.c (renamed from sysdeps/stub/symlink.c)1
-rw-r--r--sysdeps/generic/sync.c (renamed from sysdeps/stub/sync.c)1
-rw-r--r--sysdeps/generic/sys/mman.h30
-rw-r--r--sysdeps/generic/sys/param.h (renamed from sysdeps/stub/sys/param.h)0
-rw-r--r--sysdeps/generic/sys/reboot.h (renamed from sysdeps/stub/sys/reboot.h)0
-rw-r--r--sysdeps/generic/sys/syscall.h (renamed from sysdeps/stub/sys/syscall.h)0
-rw-r--r--sysdeps/generic/syscall.c (renamed from sysdeps/stub/syscall.c)1
-rw-r--r--sysdeps/generic/sysconf.c (renamed from sysdeps/stub/sysconf.c)1
-rw-r--r--sysdeps/generic/sysdep.c (renamed from sysdeps/stub/sysdep.c)0
-rw-r--r--sysdeps/generic/system.c (renamed from sysdeps/stub/system.c)1
-rw-r--r--sysdeps/generic/sysv_signal.c (renamed from sysdeps/stub/sysv_signal.c)1
-rw-r--r--sysdeps/generic/tcdrain.c (renamed from sysdeps/stub/tcdrain.c)1
-rw-r--r--sysdeps/generic/tcflow.c (renamed from sysdeps/stub/tcflow.c)1
-rw-r--r--sysdeps/generic/tcflush.c (renamed from sysdeps/stub/tcflush.c)1
-rw-r--r--sysdeps/generic/tcgetattr.c (renamed from sysdeps/stub/tcgetattr.c)1
-rw-r--r--sysdeps/generic/tcgetpgrp.c (renamed from sysdeps/stub/tcgetpgrp.c)1
-rw-r--r--sysdeps/generic/tcsendbrk.c (renamed from sysdeps/stub/tcsendbrk.c)1
-rw-r--r--sysdeps/generic/tcsetattr.c (renamed from sysdeps/stub/tcsetattr.c)1
-rw-r--r--sysdeps/generic/tcsetpgrp.c (renamed from sysdeps/stub/tcsetpgrp.c)1
-rw-r--r--sysdeps/generic/telldir.c (renamed from sysdeps/stub/telldir.c)1
-rw-r--r--sysdeps/generic/tempname.c (renamed from sysdeps/stub/tempname.c)1
-rw-r--r--sysdeps/generic/thread_state.h (renamed from sysdeps/stub/thread_state.h)0
-rw-r--r--sysdeps/generic/time.c (renamed from sysdeps/stub/time.c)1
-rw-r--r--sysdeps/generic/times.c (renamed from sysdeps/stub/times.c)1
-rw-r--r--sysdeps/generic/trampoline.c (renamed from sysdeps/stub/trampoline.c)0
-rw-r--r--sysdeps/generic/truncate.c (renamed from sysdeps/stub/truncate.c)1
-rw-r--r--sysdeps/generic/ttyname.c (renamed from sysdeps/stub/ttyname.c)1
-rw-r--r--sysdeps/generic/ttyname_r.c (renamed from sysdeps/stub/ttyname_r.c)1
-rw-r--r--sysdeps/generic/ualarm.c (renamed from sysdeps/stub/ualarm.c)1
-rw-r--r--sysdeps/generic/udiv_qrnnd.c (renamed from sysdeps/stub/udiv_qrnnd.c)0
-rw-r--r--sysdeps/generic/ulimit.c (renamed from sysdeps/stub/ulimit.c)1
-rw-r--r--sysdeps/generic/umask.c (renamed from sysdeps/stub/umask.c)1
-rw-r--r--sysdeps/generic/unlink.c (renamed from sysdeps/stub/unlink.c)1
-rw-r--r--sysdeps/generic/usleep.c (renamed from sysdeps/stub/usleep.c)1
-rw-r--r--sysdeps/generic/ustat.c (renamed from sysdeps/stub/ustat.c)1
-rw-r--r--sysdeps/generic/utime.c (renamed from sysdeps/stub/utime.c)1
-rw-r--r--sysdeps/generic/utimes.c (renamed from sysdeps/stub/utimes.c)1
-rw-r--r--sysdeps/generic/vdprintf.c (renamed from sysdeps/stub/vdprintf.c)1
-rw-r--r--sysdeps/generic/vhangup.c (renamed from sysdeps/stub/vhangup.c)1
-rw-r--r--sysdeps/generic/wait.c (renamed from sysdeps/stub/wait.c)1
-rw-r--r--sysdeps/generic/wait3.c (renamed from sysdeps/stub/wait3.c)1
-rw-r--r--sysdeps/generic/wait4.c (renamed from sysdeps/stub/wait4.c)1
-rw-r--r--sysdeps/generic/waitpid.c (renamed from sysdeps/stub/waitpid.c)1
-rw-r--r--sysdeps/generic/write.c (renamed from sysdeps/stub/write.c)1
-rw-r--r--sysdeps/generic/writev.c (renamed from sysdeps/stub/writev.c)1
-rw-r--r--sysdeps/generic/xmknod.c (renamed from sysdeps/stub/xmknod.c)1
-rw-r--r--sysdeps/generic/xstat.c (renamed from sysdeps/stub/xstat.c)1
-rw-r--r--sysdeps/generic/xstat64.c (renamed from sysdeps/stub/xstat64.c)1
-rw-r--r--sysdeps/i386/i486/bits/string.h16
-rw-r--r--sysdeps/mach/hurd/mmap.c18
-rw-r--r--sysdeps/mach/mprotect.c2
-rw-r--r--sysdeps/mach/munmap.c2
-rw-r--r--sysdeps/unix/Makefile14
-rw-r--r--sysdeps/unix/bsd/osf/sys/mman.h22
-rw-r--r--sysdeps/unix/bsd/sun/sunos4/mmap.c8
-rw-r--r--sysdeps/unix/bsd/sun/sunos4/sys/mman.h22
-rw-r--r--sysdeps/unix/bsd/ultrix4/sys/mman.h22
-rw-r--r--sysdeps/unix/sysv/irix4/sys/mman.h22
-rw-r--r--sysdeps/unix/sysv/linux/madvise.c2
-rw-r--r--sysdeps/unix/sysv/linux/sys/mman.h43
-rw-r--r--version.c2
420 files changed, 1983 insertions, 358 deletions
diff --git a/ChangeLog b/ChangeLog
index b361b136dd..148799486d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,92 @@
+1997-10-15 06:56  Ulrich Drepper  <drepper@cygnus.com>
+
+	* Rules: Remove ruls to magically install <subdir>.h headers.
+	Reported by Mark Kettenis <kettenis@phys.uva.nl>.
+
+	* glibcbug.in: Fix @gnu.ai.mit.edu -> @gnu.org.
+	* version.c: Likewise.
+	* catgets/gencat.c: Likewise.
+	* db2/makedb.c: Likewise.
+	* locale/programs/locale.c: Likewise.
+	* locale/programs/localedef.c: Likewise.
+
+	* libc.map: Move _IO_list_all back to GLIBC_2.0.
+
+	* elf/rtld.c: Provide name of running program to _dl_new_object.
+
+	* Rules: Implement shared-only-sources.
+	* include/libc-symbols.h: Define default_symbol_version.
+	* libio/Makefile (shared-only-sources): Define.
+	* libio/freopen.c: Define as default version.
+	* libio/iofopen.c: Likewise.
+	* libio/genops.c: Define _IO_list_all here.
+	* libio/stdfiles.c: Create linked list with public names.
+	* libio/oldstdfiles.c: Likewise.
+
+	* stdio-common/printf.c: Optimize.
+	* stdio-common/scanf.c: Optimize.
+
+	* sysdeps/generic/setfpucw.c: Include #include <...> not "...".
+
+	* sysdeps/i386/i486/bits/string.h: Add optimized versions of index and
+	rindex.
+
+1997-10-14  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
+
+	* manual/arith.texi: Spelling fixes.
+	* manual/conf.texi: Likewise.
+	* manual/creature.texi: Likewise.
+	* manual/filesys.texi: Likewise.
+	* manual/intro.texi: Likewise.
+	* manual/llio.texi: Likewise.
+	* manual/math.texi: Likewise.
+	* manual/message.texi: Likewise.
+	* manual/pattern.texi: Likewise.
+	* manual/search.texi: Likewise.
+	* manual/signal.texi: Likewise.
+	* manual/socket.texi: Likewise.
+	* manual/startup.texi: Likewise.
+	* manual/stdio.texi: Likewise.
+	* manual/string.texi: Likewise.
+	* manual/time.texi: Likewise.
+	* manual/users.texi: Likewise.
+
+1997-10-13 05:25  Ulrich Drepper  <drepper@cygnus.com>
+
+	* sysdeps/generic/sys/mman.h: Use __ptr_t instead of __caddr_t.
+	* sysdeps/unix/bsd/osf/sys/mman.h: Likewise.
+	* sysdeps/unix/bsd/sun/sunos4/sys/mman.h: Likewise.
+	* sysdeps/unix/bsd/ultrix4/sys/mman.h: Likewise.
+	* sysdeps/unix/sysv/irix4/sys/mman.h: Likewise.
+	* sysdeps/unix/sysv/linux/sys/mman.h: Likewise.
+	* sysdeps/mach/hurd/mmap.c: Likewise.
+	* sysdeps/generic/mmap.c: Likewise.
+	* sysdeps/unix/bsd/sun/sunos4/mmap.c: Likewise.
+	* sysdeps/mach/munmap.c: Likewise.
+	* sysdeps/generic/munmap.c: Likewise.
+	* sysdeps/mach/mprotect.c: Likewise.
+	* sysdeps/generic/mprotect.c: Likewise.
+	* sysdeps/generic/msync.c: Likewise.
+	* sysdeps/generic/madvise.c: Likewise.
+
+	* sysdeps/unix/sysv/linux/madvise.c: Include stub version from generic
+	subdir.
+
+1997-10-12 20:27  Zack Weinberg  <zack@rabi.phys.columbia.edu>
+
+	* sysdeps/stub (all files):  Moved to sysdeps/generic.
+	* all files using stub_warning: Include <stub-tag.h>.
+	* include/stub-tag.h: New file, marks stubs in .d files.
+	* Makerules: Look for stub-tag.h, not sysdeps/stub, when building
+	<gnu/stubs.h>.
+	* configure.in: Don't add sysdeps/stub to $sysnames.
+	* sysdeps/unix/Makefile: Look for generic headers, not stub
+	headers.
+	* sysdeps/generic/Makefile: Likewise.
+	* manual/maint.texi: Delete references to sysdeps/stub.
+	* INSTALL: Rebuilt.
+	* configure: Rebuilt.
+
 1997-10-13 03:14  Ulrich Drepper  <drepper@cygnus.com>
 
 	* libc.map: Move _IO_fopen, fopen, _IO_stdin_, _IO_stdout_,
diff --git a/INSTALL b/INSTALL
index 85fe1eb904..6a03afcf2b 100644
--- a/INSTALL
+++ b/INSTALL
@@ -21,28 +21,19 @@ the chosen configuration before proceeding.
    Here are some options that you should specify (if appropriate) when
 you run `configure':
 
-`--with-gnu-ld'
-     Use this option if you plan to use GNU `ld' to link programs with
-     the GNU C Library.  (We strongly recommend that you do.)  This
-     option enables use of features that exist only in GNU `ld'; so if
-     you configure for GNU `ld' you must use GNU `ld' *every time* you
-     link with the GNU C Library, and when building it.
-
-`--with-gnu-as'
-     Use this option if you plan to use the GNU assembler, `gas', when
-     building the GNU C Library.  On some systems, the library may not
-     build properly if you do *not* use `gas'.
-
-`--with-gnu-binutils'
-     This option implies both `--with-gnu-ld' and `--with-gnu-as'.  On
-     systems where GNU tools are the system tools, there is no need to
-     specify this option.  These include GNU, GNU/Linux, and free BSD
-     systems.
+`--with-binutils=DIRECTORY'
+     Use the binutils (assembler and linker) in `DIRECTORY', not the
+     ones the C compiler would default to.  You could use this option if
+     the default binutils on your system cannot deal with all the
+     constructs in the GNU C library.  (`configure' will detect the
+     problem and suppress these constructs, so the library will still
+     be usable, but functionality may be lost--for example, you can not
+     build a shared libc with old binutils.)
 
 `--without-fp'
 `--nfp'
      Use this option if your computer lacks hardware floating-point
-     support.
+     support and your operating system does not emulate an FPU.
 
 `--prefix=DIRECTORY'
      Install machine-independent data files in subdirectories of
@@ -112,7 +103,7 @@ and define in that file the parameters you want to specify.
 `configparms' should *not* be an edited copy of `Makeconfig'; specify
 only the parameters that you want to override.  To see how to set these
 parameters, find the section of `Makeconfig' that says "These are the
-configuration variables."  Then for each parameter that you want to
+configuration variables." Then for each parameter that you want to
 change, copy the definition from `Makeconfig' to your new `configparms'
 file, and change the value as appropriate for your system.
 
@@ -218,6 +209,7 @@ following patterns:
      iX86-ANYTHING-linux
      m68k-ANYTHING-linux
      powerpc-ANYTHING-linux
+     sparc64-ANYTHING-linux
 
    Former releases of this library (version 1.09.1 and perhaps earlier
 versions) used to run on the following configurations:
@@ -443,27 +435,36 @@ and `unix/Implies' contains:
 
 So the final list is `unix/bsd/vax unix/bsd unix/inet unix posix'.
 
-   `sysdeps' has two "special" subdirectories, called `generic' and
-`stub'.  These two are always implicitly appended to the list of
-subdirectories (in that order), so you needn't put them in an `Implies'
-file, and you should not create any subdirectories under them intended
-to be new specific categories.  `generic' is for things that can be
-implemented in machine-independent C, using only other
-machine-independent functions in the C library.  `stub' is for "stub"
-versions of functions which cannot be implemented on a particular
-machine or operating system.  The stub functions always return an
+   `sysdeps' has a "special" subdirectory called `generic'.  It is
+always implicitly appended to the list of subdirectories, so you
+needn't put it in an `Implies' file, and you should not create any
+subdirectories under it intended to be new specific categories.
+`generic' serves two purposes.  First, the makefiles do not bother to
+look for a system-dependent version of a file that's not in `generic'.
+This means that any system-dependent source file must have an analogue
+in `generic', even if the routines defined by that file are not
+implemented on other platforms.  Second. the `generic' version of a
+system-dependent file is used if the makefiles do not find a version
+specific to the system you're compiling for.
+
+   If it is possible to implement the routines in a `generic' file in
+machine-independent C, using only other machine-independent functions in
+the C library, then you should do so.  Otherwise, make them stubs.  A
+"stub" function is a function which cannot be implemented on a
+particular machine or operating system.  Stub functions always return an
 error, and set `errno' to `ENOSYS' (Function not implemented).  *Note
-Error Reporting::.
-
-   A source file is known to be system-dependent by its having a
-version in `generic' or `stub'; every generally-available function whose
-implementation is system-dependent in should have either a generic or
-stub implementation (there is no point in having both).  Some rare
-functions are only useful on specific systems and aren't defined at all
-on others; these do not appear anywhere in the system-independent
-source code or makefiles (including the `generic' and `stub'
-directories), only in the system-dependent `Makefile' in the specific
-system's subdirectory.
+Error Reporting::.  If you define a stub function, you must place the
+statement `stub_warning(FUNCTION)', where FUNCTION is the name of your
+function, after its definition; also, you must include the file
+`<stub-tag.h>' into your file.  This causes the function to be listed
+in the installed `<gnu/stubs.h>', and makes GNU ld warn when the
+function is used.
+
+   Some rare functions are only useful on specific systems and aren't
+defined at all on others; these do not appear anywhere in the
+system-independent source code or makefiles (including the `generic'
+and `stub' directories), only in the system-dependent `Makefile' in the
+specific system's subdirectory.
 
    If you come across a file that is in one of the main source
 directories (`string', `stdio', etc.), and you want to write a machine-
@@ -640,10 +641,8 @@ machine should go in `sysdeps/MACHINE/fpu'.
 hierarchy that are not for particular machine architectures.
 
 `generic'
-`stub'
-     As described above (*note Porting::.), these are the two
-     subdirectories that every configuration implicitly uses after all
-     others.
+     As described above (*note Porting::.), this is the subdirectory
+     that every configuration implicitly uses after all others.
 
 `ieee754'
      This directory is for code using the IEEE 754 floating-point
@@ -971,3 +970,105 @@ parts of the library were contributed or worked on by other people.
           extensions that they make and grant Carnegie Mellon the
           rights to redistribute these changes.
 
+   * The code for the database library `libdb' comes from the 2.3
+     release of Berkeley DB. That code is under the same copyright as
+     4.4 BSD and also:
+
+               Copyright (C) 1990, 1993, 1994, 1995, 1996, 1997
+               Sleepycat Software.  All rights reserved.
+
+          Redistribution and use in source and binary forms, with or
+          without modification, are permitted provided that the
+          following conditions are met:
+
+            1. Redistributions of source code must retain the above
+               copyright notice, this list of conditions and the
+               following disclaimer.
+
+            2. Redistributions in binary form must reproduce the above
+               copyright notice, this list of conditions and the
+               following disclaimer in the documentation and/or other
+               materials provided with the distribution.
+
+            3. Redistributions in any form must be accompanied by
+               information on how to obtain complete source code for
+               the DB software and any accompanying software that uses
+               the DB software.  The source code must either be
+               included in the distribution or be available for no more
+               than the cost of distribution plus a nominal fee, and
+               must be freely redistributable under reasonable
+               conditions.  For an executable file, complete source
+               code means the source code for all modules it contains.
+               It does not mean source code for modules or files that
+               typically accompany the operating system on which the
+               executable file runs, e.g., standard library modules or
+               system header files.
+
+          THIS SOFTWARE IS PROVIDED BY SLEEPYCAT SOFTWARE "AS IS" AND
+          ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+          TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+          A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+          SLEEPYCAT SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
+          INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+          (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+          GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+          INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+          WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+          NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+          THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+          DAMAGE.
+
+               Portions copyright (C) 1995, 1996
+               The President and Fellows of Harvard University.
+               All rights reserved.
+
+          Redistribution and use in source and binary forms, with or
+          without modification, are permitted provided that the
+          following conditions are met:
+            1. Redistributions of source code must retain the above
+               copyright notice, this list of conditions and the
+               following disclaimer.
+
+            2. Redistributions in binary form must reproduce the above
+               copyright notice, this list of conditions and the
+               following disclaimer in the documentation and/or other
+               materials provided with the distribution.
+
+            3. All advertising materials mentioning features or use of
+               this software must display the following acknowledgement:
+                     This product includes software developed by
+                    Harvard University  and its contributors.
+
+            4. Neither the name of the University nor the names of its
+               contributors may be used to endorse or promote products
+               derived from this software without specific prior
+               written permission.
+
+          THIS SOFTWARE IS PROVIDED BY HARVARD AND ITS CONTRIBUTORS "AS
+          IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+          LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+          FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT
+          SHALL HARVARD OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+          INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+          DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+          SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+          OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+          LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+          (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+          THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+          OF SUCH DAMAGE.
+
+          For a license to use, redistribute or sell DB software under
+          conditions other than those described above, or to purchase
+          support for this software, please contact Sleepycat Software
+          at
+
+                Sleepycat Software
+                394 E. Riding Dr.
+                Carlisle, MA 01741
+                USA
+                +1-508-287-4781
+
+          or <db@sleepycat.com>.
+
+
diff --git a/Makerules b/Makerules
index 948c01b89d..a554e2a9ec 100644
--- a/Makerules
+++ b/Makerules
@@ -896,18 +896,19 @@ common-clean: common-mostlyclean
 
 # Produce a file `stub-$(subdir)' which contains `#define __stub_FUNCTION'
 # for each function which is a stub.  We grovel over all the .d files
-# looking for references to source files in sysdeps/stub.  Then we grovel
-# over each referenced source file to see what stub function it defines.
+# looking for references to <stub-tag.h>.  Then we grovel over each
+# referenced source file to see what stub function it defines.
 
 .PHONY: stubs # The parent Makefile calls this target.
 stubs: $(common-objpfx)stub-$(subdir)
-s = $(sysdep_dir)/stub
+s = $(sysdep_dir)/generic
 $(common-objpfx)stub-$(subdir): $(+depfiles)
 # Use /dev/null since `...` might expand to empty.
 	(s=`cd $s; /bin/pwd`; \
 	 $(patsubst %/,cd %;,$(objpfx)) \
 	 sed -n 's/^stub_warning *(\([^)]*\).*$$/#define __stub_\1/p' \
-	     `sed -n 's@^.*$s/\([a-z0-9_-]*\.c\).*$$@'"$$s"/'\1@p' \
+	  `sed -n -e '\@: $s@{; s@^.*: $s/\([a-z0-9_./-]*\.c\).*$$@'"$$s"'/\1@; h; }' \
+		-e '/stub-tag\.h/{; g; p; }' \
 		  $(patsubst $(objpfx)%,%,$^) /dev/null` \
 	     /dev/null) > $@T
 	mv -f $@T $@
diff --git a/Rules b/Rules
index ca1361b9f6..cd82a6e2bc 100644
--- a/Rules
+++ b/Rules
@@ -59,12 +59,6 @@ ifneq	"$(findstring env,$(origin common-generated))" ""
 common-generated :=
 endif
 
-ifeq "$(strip $(headers))" ""
-ifneq "$(wildcard $(subdir).h)" ""
-override headers := $(subdir).h
-endif
-endif
-
 include ../Makerules
 
 .PHONY: subdir_lib
@@ -173,3 +167,18 @@ $(static-only-routines:%=$(objpfx)%.os): %.os: $(common-objpfx)empty.os
 $(common-objpfx)empty.os: $(common-objpfx)empty.c $(before-compile)
 	$(compile-command.c)
 endif
+
+ifdef shared-only-routines
+# If we have versioned code we don't need the old versions in any of the
+# static libraries.
+define o-iterator-doit
+$(shared-only-routines:%=$(objpfx)%.$o): %.$o: $(common-objpfx)empty.$o
+	rm -f $$@
+	ln $$< $$@
+
+$(common-objpfx)empty.$o: $(common-objpfx)empty.c $(before-compile)
+	$$(compile-command.c)
+endef
+object-suffixes-left := $(filter-out .os,$(object-suffixes))
+include $(o-iterator)
+endif
diff --git a/sysdeps/stub/bits/dirent.h b/bits/dirent.h
index 2f7dca78aa..2f7dca78aa 100644
--- a/sysdeps/stub/bits/dirent.h
+++ b/bits/dirent.h
diff --git a/sysdeps/stub/bits/elfclass.h b/bits/elfclass.h
index 1ad12954b2..1ad12954b2 100644
--- a/sysdeps/stub/bits/elfclass.h
+++ b/bits/elfclass.h
diff --git a/sysdeps/stub/bits/endian.h b/bits/endian.h
index 597f079a0f..597f079a0f 100644
--- a/sysdeps/stub/bits/endian.h
+++ b/bits/endian.h
diff --git a/sysdeps/stub/bits/errno.h b/bits/errno.h
index e197c3603d..e197c3603d 100644
--- a/sysdeps/stub/bits/errno.h
+++ b/bits/errno.h
diff --git a/sysdeps/stub/bits/fcntl.h b/bits/fcntl.h
index 24a1c38be6..24a1c38be6 100644
--- a/sysdeps/stub/bits/fcntl.h
+++ b/bits/fcntl.h
diff --git a/sysdeps/stub/bits/fenv.h b/bits/fenv.h
index f45deb07c1..f45deb07c1 100644
--- a/sysdeps/stub/bits/fenv.h
+++ b/bits/fenv.h
diff --git a/sysdeps/stub/bits/huge_val.h b/bits/huge_val.h
index 8f137d1734..8f137d1734 100644
--- a/sysdeps/stub/bits/huge_val.h
+++ b/bits/huge_val.h
diff --git a/sysdeps/stub/bits/ioctls.h b/bits/ioctls.h
index 3b6178bfae..3b6178bfae 100644
--- a/sysdeps/stub/bits/ioctls.h
+++ b/bits/ioctls.h
diff --git a/sysdeps/stub/bits/ipc.h b/bits/ipc.h
index a5ecbd90b7..a5ecbd90b7 100644
--- a/sysdeps/stub/bits/ipc.h
+++ b/bits/ipc.h
diff --git a/sysdeps/stub/bits/libc-lock.h b/bits/libc-lock.h
index c24dcd047a..c24dcd047a 100644
--- a/sysdeps/stub/bits/libc-lock.h
+++ b/bits/libc-lock.h
diff --git a/sysdeps/stub/bits/local_lim.h b/bits/local_lim.h
index 42cc7ebbc9..42cc7ebbc9 100644
--- a/sysdeps/stub/bits/local_lim.h
+++ b/bits/local_lim.h
diff --git a/sysdeps/stub/bits/mathinline.h b/bits/mathinline.h
index 5498af6b63..5498af6b63 100644
--- a/sysdeps/stub/bits/mathinline.h
+++ b/bits/mathinline.h
diff --git a/sysdeps/stub/bits/msq.h b/bits/msq.h
index 37daa9bf8c..37daa9bf8c 100644
--- a/sysdeps/stub/bits/msq.h
+++ b/bits/msq.h
diff --git a/sysdeps/stub/bits/nan.h b/bits/nan.h
index ab38168ea4..ab38168ea4 100644
--- a/sysdeps/stub/bits/nan.h
+++ b/bits/nan.h
diff --git a/sysdeps/stub/bits/posix_opt.h b/bits/posix_opt.h
index 54f5a79aa2..54f5a79aa2 100644
--- a/sysdeps/stub/bits/posix_opt.h
+++ b/bits/posix_opt.h
diff --git a/sysdeps/stub/bits/sem.h b/bits/sem.h
index 1d3e41bd56..1d3e41bd56 100644
--- a/sysdeps/stub/bits/sem.h
+++ b/bits/sem.h
diff --git a/sysdeps/stub/bits/setjmp.h b/bits/setjmp.h
index 6620e5ab15..6620e5ab15 100644
--- a/sysdeps/stub/bits/setjmp.h
+++ b/bits/setjmp.h
diff --git a/sysdeps/stub/bits/shm.h b/bits/shm.h
index b41d0c1e86..b41d0c1e86 100644
--- a/sysdeps/stub/bits/shm.h
+++ b/bits/shm.h
diff --git a/sysdeps/stub/bits/sigcontext.h b/bits/sigcontext.h
index 46e4df8c64..46e4df8c64 100644
--- a/sysdeps/stub/bits/sigcontext.h
+++ b/bits/sigcontext.h
diff --git a/sysdeps/stub/bits/signum.h b/bits/signum.h
index 6b4693f64c..6b4693f64c 100644
--- a/sysdeps/stub/bits/signum.h
+++ b/bits/signum.h
diff --git a/sysdeps/stub/bits/stat.h b/bits/stat.h
index dab0cd00cb..dab0cd00cb 100644
--- a/sysdeps/stub/bits/stat.h
+++ b/bits/stat.h
diff --git a/sysdeps/stub/bits/string.h b/bits/string.h
index ad68b038b6..ad68b038b6 100644
--- a/sysdeps/stub/bits/string.h
+++ b/bits/string.h
diff --git a/sysdeps/stub/bits/time.h b/bits/time.h
index e41a991b44..e41a991b44 100644
--- a/sysdeps/stub/bits/time.h
+++ b/bits/time.h
diff --git a/sysdeps/stub/bits/waitflags.h b/bits/waitflags.h
index 127eb6ce4c..127eb6ce4c 100644
--- a/sysdeps/stub/bits/waitflags.h
+++ b/bits/waitflags.h
diff --git a/catgets/gencat.c b/catgets/gencat.c
index 8d310d81f4..ee2b8cbf47 100644
--- a/catgets/gencat.c
+++ b/catgets/gencat.c
@@ -220,7 +220,7 @@ more_help (int key, const char *text, void *input)
     case ARGP_KEY_HELP_EXTRA:
       /* We print some extra information.  */
       return strdup (gettext ("\
-Report bugs using the `glibcbug' script to <bugs@gnu.ai.mit.edu>.\n"));
+Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"));
     default:
       break;
     }
diff --git a/configure b/configure
index 6081b3b064..029f2c8f01 100755
--- a/configure
+++ b/configure
@@ -1056,10 +1056,10 @@ while test $# -gt 0; do
 done
 
 # Add the default directories.
-sysnames="$names sysdeps/generic sysdeps/stub"
+sysnames="$names sysdeps/generic"
 
 # The other names were emitted during the scan.
-echo "$ac_t""sysdeps/generic sysdeps/stub" 1>&6
+echo "$ac_t""sysdeps/generic" 1>&6
 
 
 ### Locate tools.
diff --git a/configure.in b/configure.in
index 992f1ee592..ec87736095 100644
--- a/configure.in
+++ b/configure.in
@@ -388,10 +388,10 @@ changequote([,])dnl
 done
 
 # Add the default directories.
-sysnames="$names sysdeps/generic sysdeps/stub"
+sysnames="$names sysdeps/generic"
 AC_SUBST(sysnames)
 # The other names were emitted during the scan.
-AC_MSG_RESULT(sysdeps/generic sysdeps/stub)
+AC_MSG_RESULT(sysdeps/generic)
 
 
 ### Locate tools.
diff --git a/db2/makedb.c b/db2/makedb.c
index 69a4029066..be4ba95121 100644
--- a/db2/makedb.c
+++ b/db2/makedb.c
@@ -217,7 +217,7 @@ more_help (int key, const char *text, void *input)
     case ARGP_KEY_HELP_EXTRA:
       /* We print some extra information.  */
       return strdup (gettext ("\
-Report bugs using the `glibcbug' script to <bugs@gnu.ai.mit.edu>.\n"));
+Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"));
     default:
       break;
     }
diff --git a/elf/rtld.c b/elf/rtld.c
index 74a8f3b05b..0402727c52 100644
--- a/elf/rtld.c
+++ b/elf/rtld.c
@@ -395,7 +395,8 @@ of this helper program; chances are you did not intend to run this program.\n",
     {
       /* Create a link_map for the executable itself.
 	 This will be what dlopen on "" returns.  */
-      main_map = _dl_new_object ((char *) "", "", lt_executable);
+      main_map = _dl_new_object (_dl_argv[0] ?: (char *) "<main program>",
+				 "", lt_executable);
       if (main_map == NULL)
 	_dl_sysdep_fatal ("cannot allocate memory for link map\n", NULL);
       main_map->l_phdr = phdr;
diff --git a/glibcbug.in b/glibcbug.in
index 0d46b325ab..1d7eed7604 100644
--- a/glibcbug.in
+++ b/glibcbug.in
@@ -6,7 +6,7 @@
 #       these variables are filled in by configure
 #
 VERSION="@VERSION@"
-BUGGLIBC="bugs@gnu.ai.mit.edu"
+BUGGLIBC="bugs@gnu.org"
 ADDONS="@subdirs@"
 
 PATH=/bin:/usr/bin:/usr/local/bin:$PATH
diff --git a/include/libc-symbols.h b/include/libc-symbols.h
index b7433eef42..4a0349b666 100644
--- a/include/libc-symbols.h
+++ b/include/libc-symbols.h
@@ -328,8 +328,11 @@ extern const char _libc_intl_domainname[];
 #if DO_VERSIONING
 # define symbol_version(real, name, version) \
      __asm__ (".symver " #real "," #name "@" #version)
+# define default_symbol_version(real, name, version) \
+     __asm__ (".symver " #real "," #name "@@" #version)
 #else
 # define symbol_version(real, name, version)
+# define default_symbol_version(real, name, version)
 #endif
 
 #endif /* libc-symbols.h */
diff --git a/include/stub-tag.h b/include/stub-tag.h
new file mode 100644
index 0000000000..3004d6f429
--- /dev/null
+++ b/include/stub-tag.h
@@ -0,0 +1,5 @@
+/* This header is included into every file that declares a stub function.
+ * The build process looks for this header in .d files to decide whether
+ * or not it needs to scan the corresponding .c file for entries to add to
+ * <gnu/stubs.h>.
+ */
diff --git a/libc.map b/libc.map
index 01c45a06f8..57ac588ae3 100644
--- a/libc.map
+++ b/libc.map
@@ -413,12 +413,14 @@ GLIBC_2.0 {
     xdrrec_endofrecord; xdrrec_eof; xdrrec_skiprecord; xdrstdio_create;
     xencrypt; xprt_register; xprt_unregister;
 
+    _IO_list_all;
+
   local:
     *;
 };
 
 GLIBC_2.1 {
   global:
-    _IO_fopen; fopen; _IO_stdin_; _IO_stdout_; _IO_stderr_; _IO_list_all;
+    _IO_fopen; fopen; _IO_stdin_; _IO_stdout_; _IO_stderr_;
     freopen;
-} GLIBC_2.0;
\ No newline at end of file
+} GLIBC_2.0;
diff --git a/libio/Makefile b/libio/Makefile
index 3e9f6eae39..033c959889 100644
--- a/libio/Makefile
+++ b/libio/Makefile
@@ -62,6 +62,8 @@ ifeq ($(versioning),yes)
 aux	+= oldfileops oldstdfiles
 endif
 
+shared-only-routines = oldiofopen oldfreopen oldfileops oldstdfiles
+
 distribute := iolibio.h libioP.h strfile.h Banner
 
 include ../Rules
diff --git a/libio/freopen.c b/libio/freopen.c
index c443bbc2eb..7ab3e69845 100644
--- a/libio/freopen.c
+++ b/libio/freopen.c
@@ -43,4 +43,4 @@ __new_freopen (filename, mode, fp)
   return result;
 }
 
-symbol_version (__new_freopen, freopen, GLIBC_2.1);
+default_symbol_version (__new_freopen, freopen, GLIBC_2.1);
diff --git a/libio/genops.c b/libio/genops.c
index 71275da28c..f8342776f5 100644
--- a/libio/genops.c
+++ b/libio/genops.c
@@ -710,6 +710,8 @@ _IO_cleanup ()
   _IO_unbuffer_all ();
 }
 
+_IO_FILE *_IO_list_all = &_IO_stderr_.plus.file;
+
 void
 _IO_init_marker (marker, fp)
      struct _IO_marker *marker;
diff --git a/libio/iofopen.c b/libio/iofopen.c
index c27b69bc1b..b74b6926c0 100644
--- a/libio/iofopen.c
+++ b/libio/iofopen.c
@@ -61,8 +61,8 @@ _IO_new_fopen (filename, mode)
 
 #ifdef DO_VERSIONING
 strong_alias (_IO_new_fopen, __new_fopen)
-symbol_version (_IO_new_fopen, _IO_fopen, GLIBC_2.1);
-symbol_version (__new_fopen, fopen, GLIBC_2.1);
+default_symbol_version (_IO_new_fopen, _IO_fopen, GLIBC_2.1);
+default_symbol_version (__new_fopen, fopen, GLIBC_2.1);
 #else
 # ifdef weak_alias
 weak_symbol (_IO_new_fopen, _IO_fopen)
diff --git a/libio/oldstdfiles.c b/libio/oldstdfiles.c
index d34a8680c3..3017109581 100644
--- a/libio/oldstdfiles.c
+++ b/libio/oldstdfiles.c
@@ -46,10 +46,12 @@
 #endif
 
 DEF_STDFILE(_IO_old_stdin_, _IO_stdin_, 0, 0, _IO_NO_WRITES);
-DEF_STDFILE(_IO_old_stdout_, _IO_stdout_, 1, &_IO_old_stdin_.file,
+DEF_STDFILE(_IO_old_stdout_, _IO_stdout_, 1, &_IO_stdin_.plus.file,
 	    _IO_NO_READS);
-DEF_STDFILE(_IO_old_stderr_, _IO_stderr_, 2, &_IO_old_stdout_.file,
+DEF_STDFILE(_IO_old_stderr_, _IO_stderr_, 2, &_IO_stdout_.plus.file,
             _IO_NO_READS+_IO_UNBUFFERED);
 
-_IO_FILE *_IO_old_list_all = &_IO_old_stderr_.file;
+#if 0
+_IO_FILE *_IO_old_list_all = &_IO_stderr_.plus.file;
 symbol_version (_IO_old_list_all, _IO_list_all,);
+#endif
diff --git a/libio/stdfiles.c b/libio/stdfiles.c
index f5113b2973..c563f2aed0 100644
--- a/libio/stdfiles.c
+++ b/libio/stdfiles.c
@@ -37,19 +37,21 @@
   static _IO_lock_t _IO_stdfile_##FD##_lock = _IO_lock_initializer; \
   struct _IO_FILE_complete INAME \
     = {{FILEBUF_LITERAL(CHAIN, FLAGS, FD), &_IO_file_jumps},}; \
-  symbol_version (INAME, NAME, GLIBC_2.1)
+  default_symbol_version (INAME, NAME, GLIBC_2.1)
 #else
 #define DEF_STDFILE(INAME, FD, CHAIN, FLAGS) \
   struct _IO_FILE_complete INAME \
     = {{FILEBUF_LITERAL(CHAIN, FLAGS, FD), &_IO_file_jumps},}; \
-  symbol_version (INAME, NAME, GLIBC_2.1)
+  default_symbol_version (INAME, NAME, GLIBC_2.1)
 #endif
 
 DEF_STDFILE(_IO_new_stdin_, _IO_stdin_, 0, 0, _IO_NO_WRITES);
-DEF_STDFILE(_IO_new_stdout_, _IO_stdout_, 1, &_IO_new_stdin_.plus.file,
+DEF_STDFILE(_IO_new_stdout_, _IO_stdout_, 1, &_IO_stdin_.plus.file,
 	    _IO_NO_READS);
-DEF_STDFILE(_IO_new_stderr_, _IO_stderr_, 2, &_IO_new_stdout_.plus.file,
+DEF_STDFILE(_IO_new_stderr_, _IO_stderr_, 2, &_IO_stdout_.plus.file,
             _IO_NO_READS+_IO_UNBUFFERED);
 
-_IO_FILE *_IO_new_list_all = &_IO_new_stderr_.plus.file;
-symbol_version (_IO_new_list_all, _IO_list_all, GLIBC_2.1);
+#if 0
+_IO_FILE *_IO_new_list_all = &_IO_stderr_.plus.file;
+default_symbol_version (_IO_new_list_all, _IO_list_all, GLIBC_2.1);
+#endif
diff --git a/locale/programs/locale.c b/locale/programs/locale.c
index 3292962309..e09e6f1e37 100644
--- a/locale/programs/locale.c
+++ b/locale/programs/locale.c
@@ -252,7 +252,7 @@ more_help (int key, const char *text, void *input)
     case ARGP_KEY_HELP_EXTRA:
       /* We print some extra information.  */
       return strdup (gettext ("\
-Report bugs using the `glibcbug' script to <bugs@gnu.ai.mit.edu>.\n"));
+Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"));
     default:
       break;
     }
diff --git a/locale/programs/localedef.c b/locale/programs/localedef.c
index c511d4246c..3b8a7a54d5 100644
--- a/locale/programs/localedef.c
+++ b/locale/programs/localedef.c
@@ -379,7 +379,7 @@ System's directory for character maps: %s\n\
                        locale files  : %s\n\
 %s"),
 		CHARMAP_PATH, LOCALE_PATH, gettext ("\
-Report bugs using the `glibcbug' script to <bugs@gnu.ai.mit.edu>.\n"));
+Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"));
       return cp;
     default:
       break;
diff --git a/manual/arith.texi b/manual/arith.texi
index 2e418838db..431b4dbfec 100644
--- a/manual/arith.texi
+++ b/manual/arith.texi
@@ -12,7 +12,7 @@ These functions are declared in the header files @file{math.h} and
 * Not a Number::                Making NaNs and testing for NaNs.
 * Imaginary Unit::              Constructing complex Numbers.
 * Predicates on Floats::        Testing for infinity and for NaNs.
-* Floating-Point Classes::      Classifiy floating-point numbers.
+* Floating-Point Classes::      Classify floating-point numbers.
 * Operations on Complex::       Projections, Conjugates, and Decomposing.
 * Absolute Value::              Absolute value functions.
 * Normalization Functions::     Hacks for radix-2 representations.
@@ -41,13 +41,13 @@ these situations.  There is a special value for infinity.
 @comment math.h
 @comment ISO
 @deftypevr Macro float_t INFINITY
-A expression representing the inifite value.  @code{INFINITY} values are
+A expression representing the infinite value.  @code{INFINITY} values are
 produce by mathematical operations like @code{1.0 / 0.0}.  It is
 possible to continue the computations with this value since the basic
 operations as well as the mathematical library functions are prepared to
 handle values like this.
 
-Beside @code{INFINITY} also the value @code{-INIFITY} is representable
+Beside @code{INFINITY} also the value @code{-INFINITY} is representable
 and it is handled differently if needed.  It is possible to test a
 variables for infinite value using a simple comparison but the
 recommended way is to use the the @code{isinf} function.
@@ -103,7 +103,7 @@ such as by defining @code{_GNU_SOURCE}, and then you must include
 @pindex complex.h
 To construct complex numbers it is necessary have a way to express the
 imaginary part of the numbers.  In mathematics one uses the symbol ``i''
-to mark a number as imaginary.  For convenienve the @file{complex.h}
+to mark a number as imaginary.  For convenience the @file{complex.h}
 header defines two macros which allow to use a similar easy notation.
 
 @deftypevr Macro float_t _Imaginary_I
@@ -284,7 +284,7 @@ situation the function be absolutely necessary one can use
 @end smallexample
 
 @noindent
-to avoid the macro expansion.  Using the macro has two big adavantages:
+to avoid the macro expansion.  Using the macro has two big advantages:
 it is more portable and one does not have to choose the right function
 among @code{isnan}, @code{isnanf}, and @code{isnanl}.
 @end deftypefn
@@ -297,7 +297,7 @@ among @code{isnan}, @code{isnanf}, and @code{isnanl}.
 @cindex decompose complex numbers
 
 This section lists functions performing some of the simple mathematical
-operations on complex numbers.  Using any of the function requries that
+operations on complex numbers.  Using any of the function requires that
 the C compiler understands the @code{complex} keyword, introduced to the
 C language in the @w{ISO C 9X} standard.
 
@@ -357,7 +357,7 @@ cut along the negative real axis.
 @deftypefunx {complex long double} cprojl (complex long double @var{z})
 Return the projection of the complex value @var{z} on the Riemann
 sphere.  Values with a infinite complex part (even if the real part
-is NaN) are projected to positive infinte on the real axis.  If the real part is infinite, the result is equivalent to
+is NaN) are projected to positive infinite on the real axis.  If the real part is infinite, the result is equivalent to
 
 @smallexample
 INFINITY + I * copysign (0.0, cimag (z))
@@ -531,7 +531,7 @@ bit set.
 This is not the same as @code{x < 0.0} since in some floating-point
 formats (e.g., @w{IEEE 754}) the zero value is optionally signed.  The
 comparison @code{-0.0 < 0.0} will not be true while @code{signbit
-(-0.0)} will return a nonzeri value.
+(-0.0)} will return a nonzero value.
 @end deftypefun
 
 @node Rounding and Remainders
@@ -599,7 +599,7 @@ raise the inexact exception.
 @comment math.h
 @comment ISO
 @deftypefun double modf (double @var{value}, double *@var{integer-part})
-@deftypefunx float modff (flaot @var{value}, float *@var{integer-part})
+@deftypefunx float modff (float @var{value}, float *@var{integer-part})
 @deftypefunx {long double} modfl (long double @var{value}, long double *@var{integer-part})
 These functions break the argument @var{value} into an integer part and a
 fractional part (between @code{-1} and @code{1}, exclusive).  Their sum
@@ -1060,7 +1060,7 @@ format supports this; and to the largest representable value otherwise.
 If the input string is @code{"nan"} or
 @code{"nan(@var{n-char-sequence})"} the return value of @code{strtod} is
 the representation of the NaN (not a number) value (if the
-flaoting-point formats supports this.  The form with the
+floating-point formats supports this.  The form with the
 @var{n-char-sequence} enables in an implementation specific way to
 specify the form of the NaN value.  When using the @w{IEEE 754}
 floating-point format, the NaN value can have a lot of forms since only
diff --git a/manual/conf.texi b/manual/conf.texi
index 64591ee9f2..86e29a8e04 100644
--- a/manual/conf.texi
+++ b/manual/conf.texi
@@ -1601,56 +1601,56 @@ after logging in.
 @comment unistd.h
 @comment Unix98
 @item _CS_LFS_CFLAGS
-The returned string specifies which additionals flags must be given to
+The returned string specifies which additional flags must be given to
 the C compiler if a source is compiled using the
 @code{_LARGEFILE_SOURCE} feature select macro; @pxref{Feature Test Macros}.
 
 @comment unistd.h
 @comment Unix98
 @item _CS_LFS_LDFLAGS
-The returned string specifies which additionals flags must be given to
+The returned string specifies which additional flags must be given to
 the linker if a source is compiled using the
 @code{_LARGEFILE_SOURCE} feature select macro; @pxref{Feature Test Macros}.
 
 @comment unistd.h
 @comment Unix98
 @item _CS_LFS_LIBS
-The returned string specifies which additionals libraries must be linked
+The returned string specifies which additional libraries must be linked
 to the application if a source is compiled using the
 @code{_LARGEFILE_SOURCE} feature select macro; @pxref{Feature Test Macros}.
 
 @comment unistd.h
 @comment Unix98
 @item _CS_LFS_LINTFLAGS
-The returned string specifies which additionals flags must be given to
+The returned string specifies which additional flags must be given to
 the the lint tool if a source is compiled using the
 @code{_LARGEFILE_SOURCE} feature select macro; @pxref{Feature Test Macros}.
 
 @comment unistd.h
 @comment Unix98
 @item _CS_LFS64_CFLAGS
-The returned string specifies which additionals flags must be given to
+The returned string specifies which additional flags must be given to
 the C compiler if a source is compiled using the
 @code{_LARGEFILE64_SOURCE} feature select macro; @pxref{Feature Test Macros}.
 
 @comment unistd.h
 @comment Unix98
 @item _CS_LFS64_LDFLAGS
-The returned string specifies which additionals flags must be given to
+The returned string specifies which additional flags must be given to
 the linker if a source is compiled using the
 @code{_LARGEFILE64_SOURCE} feature select macro; @pxref{Feature Test Macros}.
 
 @comment unistd.h
 @comment Unix98
 @item _CS_LFS64_LIBS
-The returned string specifies which additionals libraries must be linked
+The returned string specifies which additional libraries must be linked
 to the application if a source is compiled using the
 @code{_LARGEFILE64_SOURCE} feature select macro; @pxref{Feature Test Macros}.
 
 @comment unistd.h
 @comment Unix98
 @item _CS_LFS64_LINTFLAGS
-The returned string specifies which additionals flags must be given to
+The returned string specifies which additional flags must be given to
 the the lint tool if a source is compiled using the
 @code{_LARGEFILE64_SOURCE} feature select macro; @pxref{Feature Test Macros}.
 @end table
diff --git a/manual/creature.texi b/manual/creature.texi
index 2e0c62e1f7..38a11c0093 100644
--- a/manual/creature.texi
+++ b/manual/creature.texi
@@ -95,7 +95,7 @@ Single Unix specification, @w{version 2}.
 @comment X/Open
 @defvr Macro _LARGEFILE_SOURCE
 If this macro is defined some extra functions are available which
-rectify a few shortcomings in all previous standards.  More concreten
+rectify a few shortcomings in all previous standards.  More concrete
 the functions @code{fseeko} and @code{ftello} are available.  Without
 these functions the difference between the @w{ISO C} interface
 (@code{fseek}, @code{ftell}) and the low-level POSIX interface
diff --git a/manual/filesys.texi b/manual/filesys.texi
index 7e8a1a12d2..6d62545cc4 100644
--- a/manual/filesys.texi
+++ b/manual/filesys.texi
@@ -18,7 +18,7 @@ access permissions and modification times.
 * Accessing Directories::       Finding out what files a directory
 				 contains.
 * Working on Directory Trees::  Apply actions to all files or a selectable
-                                 subset of a directory hierachy.
+                                 subset of a directory hierarchy.
 * Hard Links::                  Adding alternate names to a file.
 * Symbolic Links::              A file that ``points to'' a file name.
 * Deleting Files::              How to delete a file, and what that means.
@@ -504,14 +504,14 @@ we want to see all directory entries we always return @code{1}.
 
 @node Working on Directory Trees
 @section Working on Directory Trees
-@cindex directory hierachy
-@cindex hierachy, directory
+@cindex directory hierarchy
+@cindex hierarchy, directory
 @cindex tree, directory
 
 The functions to handle files in directories described so far allowed to
 retrieve all the information in small pieces or process all files in a
 directory (see @code{scandir}).  Sometimes it is useful to process whole
-hierachies of directories and the contained files.  The X/Open
+hierarchies of directories and the contained files.  The X/Open
 specification define two functions to do this.  The simpler form is
 derived from an early definition in @w{System V} systems and therefore
 this function is available on SVID derived systems.  The prototypes and
@@ -591,7 +591,7 @@ with some extra information as described below.
 @deftp {Data Type} {struct FTW}
 The contained information helps to interpret the name parameter and
 gives some information about current state of the traversal of the
-directory hierachy.
+directory hierarchy.
 
 @table @code
 @item int base
@@ -644,7 +644,7 @@ The @var{descriptors} parameter to the @code{ftw} function specifies how
 many file descriptors the @code{ftw} function is allowed to consume.
 The more descriptors can be used the faster the function can run.  For
 each level of directories at most one descriptor is used so that for
-very deep directory hierachies the limit on open file descriptors for
+very deep directory hierarchies the limit on open file descriptors for
 the process or the system can be exceeded.  Beside this the limit on
 file descriptors is counted together for all threads in a multi-threaded
 program and therefore it is always good too limit the maximal number of
@@ -679,7 +679,7 @@ values, combined using bitwise OR.
 While traversing the directory symbolic links are not followed.  I.e.,
 if this flag is given symbolic links are reported using the
 @code{FTW_SL} value for the type parameter to the callback function.
-Please note that if this flag is used the appearence of @code{FTW_SL} in
+Please note that if this flag is used the appearance of @code{FTW_SL} in
 a callback function does not mean the referenced file does not exist.
 To indicate this the extra value @code{FTW_SLN} exists.
 @item FTW_MOUNT
@@ -1447,7 +1447,7 @@ This macro returns nonzero if the file is a symbolic link.
 This macro returns nonzero if the file is a socket.  @xref{Sockets}.
 @end deftypefn
 
-An alterate non-POSIX method of testing the file type is supported for
+An alternate non-POSIX method of testing the file type is supported for
 compatibility with BSD.  The mode can be bitwise ANDed with
 @code{S_IFMT} to extract the file type code, and compared to the
 appropriate type code constant.  For example,
@@ -1780,7 +1780,7 @@ used as the swap area of diskless client machines.  The idea is that the
 pages of the file will be cached in the client's memory, so it is a
 waste of the server's memory to cache them a second time.  In this use
 the sticky bit also says that the filesystem may fail to record the
-file's modification time onto disk reliably (the idea being that noone
+file's modification time onto disk reliably (the idea being that no-one
 cares for a swap file).
 @end table
 
@@ -1790,7 +1790,7 @@ These bit values are correct for most systems, but they are not
 guaranteed.
 
 @strong{Warning:} Writing explicit numbers for file permissions is bad
-practice.  It is not only nonportable, it also requires everyone who
+practice.  It is not only non-portable, it also requires everyone who
 reads your program to remember what the bits mean.  To make your
 program clean, use the symbolic names.
 
@@ -2080,7 +2080,7 @@ Argument that means, test for existence of the file.
 @cindex file access time
 @cindex file modification time
 @cindex file attribute modification time
-Each file has three timestamps associated with it:  its access time,
+Each file has three time stamps associated with it:  its access time,
 its modification time, and its attribute modification time.  These
 correspond to the @code{st_atime}, @code{st_mtime}, and @code{st_ctime}
 members of the @code{stat} structure; see @ref{File Attributes}.
@@ -2093,7 +2093,7 @@ values, see @ref{Calendar Time}.
 
 Reading from a file updates its access time attribute, and writing
 updates its modification time.  When a file is created, all three
-timestamps for that file are set to the current time.  In addition, the
+time stamps for that file are set to the current time.  In addition, the
 attribute change time and modification time fields of the directory that
 contains the new entry are updated.
 
@@ -2109,7 +2109,7 @@ the times for the file being renamed.
 Changing attributes of a file (for example, with @code{chmod}) updates
 its attribute change time field.
 
-You can also change some of the timestamps of a file explicitly using
+You can also change some of the time stamps of a file explicitly using
 the @code{utime} function---all except the attribute change time.  You
 need to include the header file @file{utime.h} to use this facility.
 @pindex utime.h
@@ -2142,7 +2142,7 @@ values from the @code{actime} and @code{modtime} members (respectively)
 of the @code{utimbuf} structure pointed at by @var{times}.
 
 The attribute modification time for the file is set to the current time
-in either case (since changing the timestamps is itself a modification
+in either case (since changing the time stamps is itself a modification
 of the file attributes).
 
 The @code{utime} function returns @code{0} if successful and @code{-1}
@@ -2153,7 +2153,7 @@ are defined for this function:
 @table @code
 @item EACCES
 There is a permission problem in the case where a null pointer was
-passed as the @var{times} argument.  In order to update the timestamp on
+passed as the @var{times} argument.  In order to update the time stamp on
 the file, you must either be the owner of the file, have write
 permission on the file, or be a privileged user.
 
diff --git a/manual/intro.texi b/manual/intro.texi
index 7597807274..fa16041b9b 100644
--- a/manual/intro.texi
+++ b/manual/intro.texi
@@ -15,7 +15,7 @@ operating system, and extensions specific to the GNU system.
 
 The purpose of this manual is to tell you how to use the facilities
 of the GNU library.  We have mentioned which features belong to which
-standards to help you identify things that are potentially nonportable
+standards to help you identify things that are potentially non-portable
 to other systems.  But the emphasis in this manual is not on strict
 portability.
 
diff --git a/manual/llio.texi b/manual/llio.texi
index 23c5f767f1..c31a5cf0eb 100644
--- a/manual/llio.texi
+++ b/manual/llio.texi
@@ -242,7 +242,7 @@ extra bytes are stripped of.  If the file was small or equal to
 @var{length} in size before nothing is done.  The file must be writable
 by the user to perform this operation.
 
-The return value is zero is everything wnet ok.  Otherwise the return
+The return value is zero is everything went ok.  Otherwise the return
 value is @math{-1} and the global variable @var{errno} is set to:
 @table @code
 @item EACCES
@@ -1180,16 +1180,16 @@ No synchronization is possible since the system does not implement this.
 Sometimes it is not even necessary to write all data associated with a
 file descriptor.  E.g., in database files which do not change in size it
 is enough to write all the file content data to the device.
-Metainformation like the modification time etc. are not that important
+Meta-information like the modification time etc. are not that important
 and leaving such information uncommitted does not prevent a successful
 recovering of the file in case of a problem.
 
 @comment unistd.h
 @comment POSIX
 @deftypefun int fdatasync (int @var{fildes})
-When a call to the @code{fdatasync} function returns it is maed sure
+When a call to the @code{fdatasync} function returns it is made sure
 that all of the file data is written to the device.  For all pending I/O
-operations the parts guaranteeing data integrety finished.
+operations the parts guaranteeing data integrity finished.
 
 Not all systems implement the @code{fdatasync} operation.  On systems
 missing this functionality @code{fdatasync} is emulated by a call to
diff --git a/manual/maint.texi b/manual/maint.texi
index e6fc47f8e1..7698549bf3 100644
--- a/manual/maint.texi
+++ b/manual/maint.texi
@@ -513,25 +513,35 @@ posix
 @noindent
 So the final list is @file{unix/bsd/vax unix/bsd unix/inet unix posix}.
 
-@file{sysdeps} has two ``special'' subdirectories, called @file{generic}
-and @file{stub}.  These two are always implicitly appended to the list
-of subdirectories (in that order), so you needn't put them in an
-@file{Implies} file, and you should not create any subdirectories under
-them intended to be new specific categories.  @file{generic} is for
-things that can be implemented in machine-independent C, using only
-other machine-independent functions in the C library.  @file{stub} is
-for @dfn{stub} versions of functions which cannot be implemented on a
-particular machine or operating system.  The stub functions always
-return an error, and set @code{errno} to @code{ENOSYS} (Function not
-implemented).  @xref{Error Reporting}.
-
-A source file is known to be system-dependent by its having a version in
-@file{generic} or @file{stub}; every generally-available function whose
-implementation is system-dependent in should have either a generic or
-stub implementation (there is no point in having both).  Some rare functions
-are only useful on specific systems and aren't defined at all on others;
-these do not appear anywhere in the system-independent source code or makefiles
-(including the @file{generic} and @file{stub} directories), only in the
+@file{sysdeps} has a ``special'' subdirectory called @file{generic}.  It
+is always implicitly appended to the list of subdirectories, so you
+needn't put it in an @file{Implies} file, and you should not create any
+subdirectories under it intended to be new specific categories.
+@file{generic} serves two purposes.  First, the makefiles do not bother
+to look for a system-dependent version of a file that's not in
+@file{generic}.  This means that any system-dependent source file must
+have an analogue in @file{generic}, even if the routines defined by that
+file are not implemented on other platforms.  Second. the @file{generic}
+version of a system-dependent file is used if the makefiles do not find
+a version specific to the system you're compiling for.
+
+If it is possible to implement the routines in a @file{generic} file in
+machine-independent C, using only other machine-independent functions in
+the C library, then you should do so.  Otherwise, make them stubs.  A
+@dfn{stub} function is a function which cannot be implemented on a
+particular machine or operating system.  Stub functions always return an
+error, and set @code{errno} to @code{ENOSYS} (Function not implemented).
+@xref{Error Reporting}.  If you define a stub function, you must place
+the statement @code{stub_warning(@var{function})}, where @var{function}
+is the name of your function, after its definition; also, you must
+include the file @code{<stub-tag.h>} into your file.  This causes the
+function to be listed in the installed @code{<gnu/stubs.h>}, and
+makes GNU ld warn when the function is used.
+
+Some rare functions are only useful on specific systems and aren't
+defined at all on others; these do not appear anywhere in the
+system-independent source code or makefiles (including the
+@file{generic} and @file{stub} directories), only in the
 system-dependent @file{Makefile} in the specific system's subdirectory.
 
 If you come across a file that is in one of the main source directories
@@ -737,8 +747,7 @@ hierarchy that are not for particular machine architectures.
 
 @table @file
 @item generic
-@itemx stub
-As described above (@pxref{Porting}), these are the two subdirectories
+As described above (@pxref{Porting}), this is the subdirectory
 that every configuration implicitly uses after all others.
 
 @item ieee754
diff --git a/manual/math.texi b/manual/math.texi
index fe9394b22d..478678f236 100644
--- a/manual/math.texi
+++ b/manual/math.texi
@@ -236,7 +236,7 @@ If the exception does not cause a trap handler to be called the result
 of the operation is taken as a quiet NaN.
 
 @item Division by Zero
-This exception is raised if the devisor is zero and the dividend is a
+This exception is raised if the divisor is zero and the dividend is a
 finite nonzero number.  If no trap occurs the result is either
 @math{+@infinity{}} or @math{-@infinity{}}, depending on the
 signs of the operands.
@@ -413,7 +413,7 @@ representable as an integer.  These are completely independent types.
 It is sometimes necessary so save the complete status of the
 floating-point unit for a certain time to perform some completely
 different actions.  Beside the status of the exception flags, the
-control word for the exceptions and the rounding mode can be safed.
+control word for the exceptions and the rounding mode can be saved.
 
 The file @file{fenv.h} defines the type @code{fenv_t}.  The layout of a
 variable of this type is implementation defined but the variable is able
@@ -710,7 +710,7 @@ exception if one of the arguments is an unordered value.
 @cindex Optimization
 
 If an application uses many floating point function it is often the case
-that the costs for the function calls itseld are not neglectable.
+that the costs for the function calls itselfs are not neglectable.
 Modern processor implementation often can execute the operation itself
 very fast but the call means a disturbance of the control flow.
 
@@ -811,7 +811,7 @@ radians.  Both values, @code{*@var{sinx}} and @code{*@var{cosx}}, are in
 the range of @code{-1} to @code{1}.
 
 This function is a GNU extension.  It should be used whenever both sine
-and cosine are needed but in protable applications there should be a
+and cosine are needed but in portable applications there should be a
 fallback method for systems without this function.
 @end deftypefun
 
@@ -1036,7 +1036,7 @@ magnitude of the result is too large to be representable.
 @comment math.h
 @comment ISO
 @deftypefun double log (double @var{x})
-@deftypefunx float logf (floatdouble @var{x})
+@deftypefunx float logf (float @var{x})
 @deftypefunx {long double} logl (long double @var{x})
 These functions return the natural logarithm of @var{x}.  @code{exp (log
 (@var{x}))} equals @var{x}, exactly in mathematics and approximately in
@@ -1211,7 +1211,7 @@ near zero.
 @cindex complex logarithm functions
 
 @w{ISO C 9X} defines variants of some of the exponentiation and
-logarithm functions.  As for the other functions handlung complex
+logarithm functions.  As for the other functions handling complex
 numbers these functions are perhaps better optimized and provide better
 error checking than a direct use of the formulas of the mathematical
 definition.
@@ -1488,7 +1488,7 @@ The GNU library supports the standard @w{ISO C} random number functions
 plus two other sets derived from BSD and SVID.  We recommend you use the
 standard ones, @code{rand} and @code{srand} if only a small number of
 random bits are required.  The SVID functions provide an interface which
-allows better randon number generator algorithms and they return up to
+allows better random number generator algorithms and they return up to
 48 random bits in one calls and they also return random floating-point
 numbers if wanted.  The SVID function might not be available on some BSD
 derived systems but since they are required in the XPG they are
@@ -1580,7 +1580,7 @@ This function returns the next pseudo-random number in the sequence.
 The range of values returned is from @code{0} to @code{RAND_MAX}.
 
 @strong{Please note:} Historically this function returned a @code{long
-int} value.  But with the appearence of 64bit machines this could lead
+int} value.  But with the appearance of 64bit machines this could lead
 to severe compatibility problems and therefore the type now explicitly
 limits the return value to 32bit.
 @end deftypefun
@@ -1619,7 +1619,7 @@ information @var{state}.  The argument must have been the result of
 a previous call to @var{initstate} or @var{setstate}.
 
 The return value is the previous value of the state information array.
-You can use thise value later as an argument to @code{setstate} to
+You can use this value later as an argument to @code{setstate} to
 restore that state.
 @end deftypefun
 
@@ -1734,12 +1734,12 @@ information provided.
 @deftypefun void srand48 (long int @var{seedval}))
 The @code{srand48} function sets the most significant 32 bits of the
 state internal state of the random number generator to the least
-significant 32 bits of the @var{seedval} parameter.  The lower 16 bts
-are initilialized to the value @code{0x330E}.  Even if the @code{long
+significant 32 bits of the @var{seedval} parameter.  The lower 16 bits
+are initialized to the value @code{0x330E}.  Even if the @code{long
 int} type contains more the 32 bits only the lower 32 bits are used.
 
 Due to this limitation the initialization of the state using this
-function of not very useful.  But it makes it easy to use a constrcut
+function of not very useful.  But it makes it easy to use a construct
 like @code{srand48 (time (0))}.
 
 A side-effect of this function is that the values @code{a} and @code{c}
@@ -1802,7 +1802,7 @@ Please note that it is no problem if several threads use the global
 state if all threads use the functions which take a pointer to an array
 containing the state.  The random numbers are computed following the
 same loop but if the state in the array is different all threads will
-get an individuual random number generator.
+get an individual random number generator.
 
 The user supplied buffer must be of type @code{struct drand48_data}.
 This type should be regarded as opaque and no member should be used
@@ -1830,7 +1830,7 @@ programs.
 @deftypefun int erand48_r (unsigned short int @var{xsubi}[3], struct drand48_data *@var{buffer}, double *@var{result})
 The @code{erand48_r} function works like the @code{erand48} and it takes
 an argument @var{buffer} which describes the random number generator.
-The state of the random number genertor is taken from the @code{xsubi}
+The state of the random number generator is taken from the @code{xsubi}
 array, the parameters for the congruential formula from the global
 random number generator data.  The random number is return in the
 variable pointed to by @var{result}.
@@ -1909,7 +1909,7 @@ memset (buffer, '\0', sizeof (struct drand48_data));
 @end smallexample
 
 @noindent
-Using any of the reetrant functions of this family now will
+Using any of the reentrant functions of this family now will
 automatically initialize the random number generator to the default
 values for the state and the parameters of the congruential formula.
 
@@ -1924,8 +1924,8 @@ what you expect.
 @deftypefun int srand48_r (long int @var{seedval}, struct drand48_data *@var{buffer})
 The description of the random number generator represented by the
 information in @var{buffer} is initialized similar to what the function
-@code{srand48} does.  The state is initialized from the paramter
-@var{seedval} and the paameters for the congruential formula are
+@code{srand48} does.  The state is initialized from the parameter
+@var{seedval} and the parameters for the congruential formula are
 initialized to the default values.
 
 If the return value is non-negative the function call succeeded.
diff --git a/manual/message.texi b/manual/message.texi
index deb778440d..a292b78531 100644
--- a/manual/message.texi
+++ b/manual/message.texi
@@ -19,8 +19,8 @@ selection of the user.
 The GNU C Library provides two different sets of functions to support
 message translation.  The problem is that neither of the interfaces is
 officially defined by the POSIX standard.  The @code{catgets} family of
-functions is defined in the X/Open standard but this is drived from
-industry decisions and therefore not necessarily is based on reasinable
+functions is defined in the X/Open standard but this is derived from
+industry decisions and therefore not necessarily based on reasonable
 decisions.
 
 As mentioned above the message catalog handling provides easy
@@ -67,7 +67,7 @@ The user of the program must be able to guide the responsible function
 to find whatever catalog the user wants.  This is separated from what
 the programmer had in mind.
 
-All the types, constants and funtions for the @code{catgets} functions
+All the types, constants and functions for the @code{catgets} functions
 are defined/declared in the @file{nl_types.h} header file.
 
 @menu
@@ -99,7 +99,7 @@ Locating the catalog file must happen in a way which lets the user of
 the program influence the decision.  It is up to the user to decide
 about the language to use and sometimes it is useful to use alternate
 catalog files.  All this can be specified by the user by setting some
-enviroment variables.
+environment variables.
 
 The first problem is to find out where all the message catalogs are
 stored.  Every program could have its own place to keep all the
@@ -137,7 +137,7 @@ explained below.
 
 @item %l
 (This is the lowercase ell.) This format element is substituted with the
-language element of the locale name.  The string decsribing the selected
+language element of the locale name.  The string describing the selected
 locale is expected to have the form
 @code{@var{lang}[_@var{terr}[.@var{codeset}]]} and this format uses the
 first part @var{lang}.
@@ -186,7 +186,7 @@ to all other platforms providing the @code{catgets} interface.
 @cindex LC_MESSAGES environment variable
 @cindex LANG environment variable
 Otherwise the values of environment variables from the standard
-environemtn are examined (@pxref{Standard Environment}).  Which
+environment are examined (@pxref{Standard Environment}).  Which
 variables are examined is decided by the @var{flag} parameter of
 @code{catopen}.  If the value is @code{NL_CAT_LOCALE} (which is defined
 in @file{nl_types.h}) then the @code{catopen} function examines the
@@ -225,7 +225,7 @@ When an error occured the global variable @var{errno} is set to
 @item EBADF
 The catalog does not exist.
 @item ENOMSG
-The set/message touple does not name an existing element in the
+The set/message ttuple does not name an existing element in the
 message catalog.
 @end table
 
@@ -275,7 +275,7 @@ all @var{string} arguments should be written in the same language.
 
 It is somewhat uncomfortable to write a program using the @code{catgets}
 functions if no supporting functionality is available.  Since each
-set/message number touple must be unique the programmer must keep lists
+set/message number tuple must be unique the programmer must keep lists
 of the messages at the same time the code is written.  And the work
 between several people working on the same project must be coordinated.
 In @ref{Common Usage} we will see some how these problems can be relaxed
@@ -299,7 +299,7 @@ The only reasonable way the translate all the messages of a function and
 store the result in a message catalog file which can be read by the
 @code{catopen} function is to write all the message text to the
 translator and let her/him translate them all.  I.e., we must have a
-file with entries which associate the set/message touple with a specific
+file with entries which associate the set/message tuple with a specific
 translation.  This file format is specified in the X/Open standard and
 is as follows:
 
@@ -363,11 +363,11 @@ line ends quoting is disable.
 By default no quoting character is used.  In this mode strings are
 terminated with the first unescaped line break.  If there is a
 @code{$quote} sequence present newline need not be escaped.  Instead a
-string is terminated with the first unescaped appearence of the quote
+string is terminated with the first unescaped appearance of the quote
 character.
 
 A common usage of this feature would be to set the quote character to
-@code{"}.  Then any appearence of the @code{"} in the strings must
+@code{"}.  Then any appearance of the @code{"} in the strings must
 be escaped using the backslash (i.e., @code{\"} must be written).
 
 @item
@@ -414,7 +414,7 @@ $set SetOne
 two "   Message with ID \"two\", which gets the value 2 assigned"
 
 $set SetTwo
-$ Since the last set got the nubmer 1 assigned this set has number 2.
+$ Since the last set got the number 1 assigned this set has number 2.
 4000 "The numbers can be arbitrary, they need not start at one."
 @end smallexample
 
@@ -429,7 +429,7 @@ message definition would have to be left away and in this case the
 message with the identifier @code{two} would loose its leading whitespace.
 @item
 Mixing numbered messages with message having symbolic names is no
-problem and the numering happens automatically.
+problem and the numbering happens automatically.
 @end itemize
 
 
@@ -438,7 +438,7 @@ use in a running program.  The @code{catopen} function would have to
 parser the file and handle syntactic errors gracefully.  This is not so
 easy and the whole process is pretty slow.  Therefore the @code{catgets}
 functions expect the data in another more compact and ready-to-use file
-format.  There is a special programm @code{gencat} which is explained in
+format.  There is a special program @code{gencat} which is explained in
 detail in the next section.
 
 Files in this other format are not human readable.  To be easy to use by
@@ -449,7 +449,7 @@ so translation files can be shared by systems of arbitrary architecture
 Details about the binary file format are not important to know since
 these files are always created by the @code{gencat} program.  The
 sources of the GNU C Library also provide the sources for the
-@code{gencat} program and so the interested reader can look throught
+@code{gencat} program and so the interested reader can look through
 these source files to learn about the file format.
 
 
@@ -491,8 +491,8 @@ while using the device names is a GNU extension.
 
 The @code{gencat} program works by concatenating all input files and
 then @strong{merge} the resulting collection of message sets with a
-possiblity existing output file.  This is done by removing all messages
-with set/message number touples matching any of the generated messages
+possibly existing output file.  This is done by removing all messages
+with set/message number tuples matching any of the generated messages
 from the output file and then adding all the new messages.  To
 regenerate a catalog file while ignoring the old contents therefore
 requires to remove the output file if it exists.  If the output is
@@ -541,8 +541,8 @@ method first to understand the benefits of extensions.
 
 Since the X/Open format of the message catalog files does not allow
 symbol names we have to work with numbers all the time.  When we start
-writing a program we have to replace all appearences of translatable
-strings with someting like
+writing a program we have to replace all appearances of translatable
+strings with something like
 
 @smallexample
 catgets (catdesc, set, msg, "string")
@@ -556,8 +556,8 @@ message numbers.
 
 In a bigger program several programmers usually work at the same time on
 the program and so coordinating the number allocation is crucial.
-Though no two different strings must be indexed by the same touple of
-numbers it is highly desireable to reuse the numbers for equal strings
+Though no two different strings must be indexed by the same tuple of
+numbers it is highly desirable to reuse the numbers for equal strings
 with equal translations (please note that there might be strings which
 are equal in one language but have different translations due to
 difference contexts).
@@ -570,7 +570,7 @@ cannot be discovered by the compiler or the @code{catgets} functions.
 Only the user of the program might see wrong messages printed.  In the
 worst cases the messages are so irritating that they cannot be
 recognized as wrong.  Think about the translations for @code{"true"} and
-@code{"false"} being exchanged.  This could result in a desaster.
+@code{"false"} being exchanged.  This could result in a disaster.
 
 
 @subsubsection Using symbolic names
@@ -829,7 +829,7 @@ something like
 Here the @var{errno} value is used in the @code{printf} function while
 processing the @code{%m} format element and if the @code{gettext}
 function would change this value (it is called before @code{printf} is
-called) we wouls get a wrong message.
+called) we would get a wrong message.
 
 So there is no easy way to detect a missing message catalog beside
 comparing the argument string with the result.  But it is normally the
@@ -856,7 +856,7 @@ pointer the @code{dgettext} function is exactly equivalent to
 @code{gettext} since the default value for the domain name is used.
 
 As for @code{gettext} the return value type is @code{char *} which is an
-anachronism.  The returned string must never be modfied.
+anachronism.  The returned string must never be modified.
 @end deftypefun
 
 @deftypefun {char *} dcgettext (const char *@var{domainname}, const char *@var{msgid}, int @var{category})
@@ -895,7 +895,7 @@ but @code{LC_MESSAGES} in for the @var{category} parameter.  We are
 dealing with messages here and any other choice can only be irritating.
 
 As for @code{gettext} the return value type is @code{char *} which is an
-anachronism.  The returned string must never be modfied.
+anachronism.  The returned string must never be modified.
 @end deftypefun
 
 When using the three functions above in a program it is a frequent case
@@ -906,7 +906,7 @@ will not change.  I.e., the algorithm to determine the translation is
 deterministic.
 
 Exactly this is what the optimizations implemented in the
-@file{libintl.h} header will use.  Whenver a program is compiler with
+@file{libintl.h} header will use.  Whenever a program is compiler with
 the GNU C compiler, optimization is selected and the @var{msgid}
 argument to @code{gettext}, @code{dgettext} or @code{dcgettext} is a
 constant string the actual function call will only be done the first
@@ -920,7 +920,7 @@ independent of the compiler or compiler options in use.
 @node Locating gettext catalog
 @subsubsection How to determine which catalog to be used
 
-The functions to retrieve the translations for a given mesage have a
+The functions to retrieve the translations for a given message have a
 remarkable simple interface.  But to provide the user of the program
 still the opportunity to select exactly the translation s/he wants and
 also to provide the programmer the possibility to influence the way to
@@ -977,7 +977,7 @@ to read the messages in another language and so the user of the program
 should be able to define an precedence order of languages.
 @end itemize
 
-We can devide the configuration actions in two parts: the one is
+We can divide the configuration actions in two parts: the one is
 performed by the programmer, the other by the user.  We will start with
 the functions the programmer can use since the user configuration will
 be based on this.
@@ -999,7 +999,7 @@ all future @code{gettext} calls, to @var{domainname}.  Please note that
 @var{domainname} parameter of these functions is not the null pointer.
 
 Before the first call to @code{textdomain} the default domain is
-@code{messages}.  This is the name specified in the fpsecification of
+@code{messages}.  This is the name specified in the specification of
 the @code{gettext} API.  This name is as good as any other name.  No
 program should ever really use a domain with this name since this can
 only lead to problems.
@@ -1025,10 +1025,10 @@ really never should be used.
 The @code{bindtextdomain} function can be used to specify the directly
 which contains the message catalogs for domain @var{domainname} for the
 different languages.  To be correct, this is the directory where the
-hierachy of directories is expected.  Details are explained below.
+hierarchy of directories is expected.  Details are explained below.
 
 For the programmer it is important to note that the translations which
-come with the program have be placed in a directory hierachy starting
+come with the program have be placed in a directory hierarchy starting
 at, say, @file{/foo/bar}.  Then the program should make a
 @code{bindtextdomain} call to bind the domain for the current program to
 this directory.  So it is made sure the catalogs are found.  A correctly
@@ -1036,7 +1036,7 @@ running program does not depend on the user setting an environment
 variable.
 
 The @code{bindtextdomain} function can be used several times and if the
-@var{domainname} argument is different the previously boundd domains
+@var{domainname} argument is different the previously bounded domains
 will not be overwritten.
 
 If the program which wish to use @code{bindtextdomain} at some point of
@@ -1095,7 +1095,7 @@ files.  If the program executed the @code{bindtextdomain} function for
 the message domain that is currently handled the @code{dir_name}
 component is the exactly the value which was given to the function as
 the second parameter.  I.e., @code{bindtextdomain} allows to overwrite
-the only system depdendent and fixed value to make it possible to
+the only system dependent and fixed value to make it possible to
 address file everywhere in the filesystem.
 
 The @var{category} is the name of the locale category which was selected
@@ -1220,7 +1220,7 @@ list:
 @code{audience}/@code{modifier}
 @end enumerate
 
-From the last entry one can see that the meaning of the @code{modifer}
+From the last entry one can see that the meaning of the @code{modifier}
 field in the X/Open format and the @code{audience} format have the same
 meaning.  Beside one can see that the @code{language} field for obvious
 reasons never will be dropped.
@@ -1296,7 +1296,7 @@ help to understand the input better.
 
 Other programs help to manage development cycle when new messages appear
 in the source files or when a new translation of the messages appear.
-here it should only be noted that using all the tools in GNu gettext it
+here it should only be noted that using all the tools in GNU gettext it
 is possible to @emph{completely} automize the handling of message
 catalog.  Beside marking the translatable string in the source code and
 generating the translations the developers do not have anything to do
diff --git a/manual/pattern.texi b/manual/pattern.texi
index 1decfe3dae..7a37e402c1 100644
--- a/manual/pattern.texi
+++ b/manual/pattern.texi
@@ -365,7 +365,7 @@ repeatedly.  It handles the flag @code{GLOB_NOESCAPE} by turning on the
 @node More Flags for Globbing
 @subsection More Flags for Globbing
 
-Beside the flags descibed in the last section, the GNU implementation of
+Beside the flags described in the last section, the GNU implementation of
 @code{glob} allows a few more flags which are also defined in the
 @file{glob.h} file.  Some of the extensions implement functionality
 which is available in modern shell implementations.
@@ -406,7 +406,7 @@ another one.  It is important to note that the range of each brace
 expression is completely contained in the outer brace expression (if
 there is one).
 
-The string between the mathing braces is separated into single
+The string between the matching braces is separated into single
 expressions by splitting at @code{,} (comma) characters.  The commas
 themself are discarded.  Please note what we said above about recursive
 brace expressions.  The commas used to separate the subexpressions must
diff --git a/manual/search.texi b/manual/search.texi
index 356d976555..013c584914 100644
--- a/manual/search.texi
+++ b/manual/search.texi
@@ -259,7 +259,7 @@ Computer Programming, Part 3: Searching and Sorting'' for more
 information.
 
 The weakest aspect of this function is that there can be at most one
-hashing table used throught the whole program.  The table is allocated
+hashing table used through the whole program.  The table is allocated
 in local memory out of control of the programmer.  As an extension the
 GNU C library provides an additional set of functions with an reentrant
 interface which provide a similar interface but which allow to keep
@@ -284,13 +284,13 @@ table with possibly different size.
 It is important to remember that the elements contained in the hashing
 table at the time @code{hdestroy} is called are @emph{not} freed by this
 function.  It is the responsibility of the program code to free those
-strings (if necessary at all).  Freeing all the element memory iss not
+strings (if necessary at all).  Freeing all the element memory is not
 possible without extra, separately kept information since there is no
 function to iterate through all available elements in the hashing table.
 If it is really necessary to free a table and all elements the
 programmer has to keep a list of all table elements and before calling
 @code{hdestroy} s/he has to free all element's data using this list.
-This is a very unpleasent mechanism and it also shows that this kind of
+This is a very unpleasant mechanism and it also shows that this kind of
 hashing tables is mainly meant for tables which are created once and
 used until the end of the program run.
 @end deftypefun
@@ -349,7 +349,7 @@ members should be changed directly.
 @comment search.h
 @comment GNU
 @deftypefun int hcreate_r (size_t @var{nel}, struct hsearch_data *@var{htab})
-The @code{hcreate_r} function intializes the object pointed to by
+The @code{hcreate_r} function initializes the object pointed to by
 @var{htab} to contain a hashing table with at least @var{nel} elements.
 So this function is equivalent to the @code{hcreate} function except
 that the initialized data structure is controlled by the user.
@@ -377,7 +377,7 @@ for the elements of the table.
 @deftypefun int hsearch_r (ENTRY @var{item}, ACTION @var{action}, ENTRY **@var{retval}, struct hsearch_data *@var{htab})
 The @code{hsearch_r} function is equivalent to @code{hsearch}.  The
 meaning of the first two arguments is identical.  But instead of
-operating on a single global hashing table the functio works on the
+operating on a single global hashing table the function works on the
 table described by the object pointed to by @var{htab} (which is
 initialized by a call to @code{hcreate_r}).
 
@@ -411,7 +411,7 @@ The GNU C library implementation even guarantees that this bound is
 never exceeded even for input data which cause problems for simple
 binary tree implementations.
 
-The functions desribed in the chapter are all described in the @w{System
+The functions described in the chapter are all described in the @w{System
 V} and X/Open specifications and are therefore quite portable.
 
 In contrast to the @code{hsearch} functions the @code{tsearch} functions
@@ -427,7 +427,7 @@ extended or searched.
 @deftypefun {void *} tsearch (const void *@var{key}, void **@var{rootp}, comparison_fn_t @var{compar})
 The @code{tsearch} function searches in the tree pointed to by
 @code{*@var{rootp}} for an element matching @var{key}.  The function
-pointed to by @var{compar} is used to determine wether two elements
+pointed to by @var{compar} is used to determine whether two elements
 match.  @xref{Comparison Functions} for a specification of the functions
 which can be used for the @var{compar} parameter.
 
@@ -512,7 +512,7 @@ tree and how the function is called.  The status of a node is either
 `leaf' or `internal node'.  For each leaf node the function is called
 exactly once, for each internal node it is called three times: before
 the first child is processed, after the first child is processed and
-after both childs are processed.  This makes it possible to handle all
+after both children are processed.  This makes it possible to handle all
 three methods of tree traversal (or even a combination of them).
 
 @table @code
@@ -540,7 +540,7 @@ For each node in the tree with a node pointed to by @var{root} the
 called three times, setting the @var{value} parameter or @var{action} to
 the appropriate value.  The @var{level} argument for the @var{action}
 function is computed while descending the tree with increasing the value
-by one for the escend to a child, starting with the value @math{0} for
+by one for the descend to a child, starting with the value @math{0} for
 the root node.
 
 Since the functions used for the @var{action} parameter to @code{twalk}
diff --git a/manual/signal.texi b/manual/signal.texi
index 7948229871..e6014ec195 100644
--- a/manual/signal.texi
+++ b/manual/signal.texi
@@ -1656,7 +1656,7 @@ make is whether at least one signal has arrived since a given time in
 the past.
 
 Here is an example of a handler for @code{SIGCHLD} that compensates for
-the fact that the number of signals recieved may not equal the number of
+the fact that the number of signals received may not equal the number of
 child processes generate them.  It assumes that the program keeps track
 of all the child processes with a chain of structures as follows:
 
diff --git a/manual/socket.texi b/manual/socket.texi
index 9cb9b435e4..76d7863728 100644
--- a/manual/socket.texi
+++ b/manual/socket.texi
@@ -687,7 +687,7 @@ Each computer on the Internet has one or more @dfn{Internet addresses},
 numbers which identify that computer among all those on the Internet.
 Users typically write IPv4 numeric host addresses as sequences of four
 numbers, separated by periods, as in @samp{128.52.46.32}, and IPv6
-numeric host addresses as sequences of up to eight numbers seperated by
+numeric host addresses as sequences of up to eight numbers separated by
 colons, as in @samp{5f03:1200:836f:c100::1}.
 
 Each computer also has one or more @dfn{host names}, which are strings
diff --git a/manual/startup.texi b/manual/startup.texi
index fab74edbef..7e42bb9c7b 100644
--- a/manual/startup.texi
+++ b/manual/startup.texi
@@ -520,7 +520,7 @@ classification.
 @cindex LC_MESSAGES environment variable
 
 This specifies what locale to use for printing messages and to parse
-reponses.
+responses.
 
 @item LC_MONETARY
 @cindex LC_MONETARY environment variable
diff --git a/manual/stdio.texi b/manual/stdio.texi
index fbf218ebf3..96c3de4fec 100644
--- a/manual/stdio.texi
+++ b/manual/stdio.texi
@@ -288,7 +288,7 @@ another function.
 @deftypefun int fcloseall (void)
 This function causes all open streams of the process to be closed and
 the connection to corresponding files to be broken.  All buffered data
-is written and any buffered inputis discarded.  The @code{fcloseall}
+is written and any buffered input is discarded.  The @code{fcloseall}
 function returns a value of @code{0} if all the files were closed
 successfully, and @code{EOF} if an error was detected.
 
@@ -912,7 +912,7 @@ initial @samp{%} character followed in sequence by:
 @item
 An optional specification of the parameter used for this format.
 Normally the parameters to the @code{printf} function a assigned to the
-formats in the order of appearence in the format string.  But in some
+formats in the order of appearance in the format string.  But in some
 situations (such as message translation) this is not desirable and this
 extension allows to specify and explicit parameter to be used.
 
@@ -1236,7 +1236,7 @@ numbers are represented is the form
 @w{[@code{-}]@code{0x}@var{h}@code{.}@var{hhh}@code{p}[@code{+}|@code{-}]@var{dd}}.
 At the left of the decimal-point character exactly one digit is print.
 This character is only @code{0} is the number is denormalized.
-Otherwise the value is unspecifed; it is implemention dependent how many
+Otherwise the value is unspecified; it is implemention dependent how many
 bits are used.  The number of hexadecimal digits on the right side of
 the decimal-point character is equal to the precision.  If the precision
 is zero it is determined to be large enough to provide an exact
@@ -2310,7 +2310,7 @@ register_printf_function ('B', printf_size, printf_size_info);
 @end smallexample
 
 Here we register the functions to print numbers as powers of 1000 since
-the format character @code{'B'} is an upper-case characeter.  If we
+the format character @code{'B'} is an upper-case character.  If we
 would additionally use @code{'b'} in a line like
 
 @smallexample
@@ -3110,7 +3110,7 @@ This function is similar to @code{fseek} but it corrects a problem with
 @code{fseeko} uses the correct type @code{off_t} for the @var{offset}
 parameter.
 
-For this reasonit is a good idea to prefer @code{ftello} whenever it is
+For this reason it is a good idea to prefer @code{ftello} whenever it is
 available since its functionality is (if different at all) closer the
 underlying definition.
 
@@ -3157,7 +3157,7 @@ the offset provided is relative to the end of the file.
 @comment ISO
 @deftypefun void rewind (FILE *@var{stream})
 The @code{rewind} function positions the stream @var{stream} at the
-begining of the file.  It is equivalent to calling @code{fseek} or
+beginning of the file.  It is equivalent to calling @code{fseek} or
 @code{fseeko} on the @var{stream} with an @var{offset} argument of
 @code{0L} and a @var{whence} argument of @code{SEEK_SET}, except that
 the return value is discarded and the error indicator for the stream is
@@ -3756,7 +3756,7 @@ the following members:
 @table @code
 @item cookie_read_function_t *read
 This is the function that reads data from the cookie.  If the value is a
-null pointer instead of a function, then read operations on ths stream
+null pointer instead of a function, then read operations on this stream
 always return @code{EOF}.
 
 @item cookie_write_function_t *write
@@ -3926,7 +3926,7 @@ Display the message in standard error.
 Display the message on the system console.
 @end vtable
 
-The errorneous piece of the system can be signalled by exactly one of the
+The erroneous piece of the system can be signalled by exactly one of the
 following values which also is bitwise ORed with the
 @var{classification} parameter to @code{fmtmsg}:
 
@@ -3945,11 +3945,11 @@ done by using exactly one of the following values:
 
 @vtable @code
 @item MM_APPL
-The errorneous condition is detected by the application.
+The erroneous condition is detected by the application.
 @item MM_UTIL
-The errorneous condition is detected by a utility.
+The erroneous condition is detected by a utility.
 @item MM_OPSYS
-The errorneous condition is detected by the operating system.
+The erroneous condition is detected by the operating system.
 @end vtable
 
 A last component of @var{classification} can signal the results of this
@@ -3970,7 +3970,7 @@ in the @var{classification} parameter.  The @var{label} parameter
 identifies the source of the message.  The string should consist of two
 colon separated parts where the first part has not more than 10 and the
 second part not more the 14 characters.  The @var{text} parameter
-descries the condition of the error, the @var{action} parameter possible
+describes the condition of the error, the @var{action} parameter possible
 steps to recover from the error and the @var{tag} parameter is a
 reference to the online documentation where more information can be
 found.  It should contain the @var{label} value and a unique
diff --git a/manual/string.texi b/manual/string.texi
index d6c09b8df9..767a811c7e 100644
--- a/manual/string.texi
+++ b/manual/string.texi
@@ -175,7 +175,7 @@ The @code{strnlen} function returns the length of the null-terminated
 string @var{s} is this length is smaller than @var{maxlen}.  Otherwise
 it returns @var{maxlen}.  Therefore this function is equivalent to
 @code{(strlen (@var{s}) < n ? strlen (@var{s}) : @var{maxlen})} but it
-is more efficent.
+is more efficient.
 
 @smallexample
 char string[32] = "hello, world";
@@ -247,7 +247,7 @@ memcpy (new, old, arraysize * sizeof (struct foo));
 @comment GNU
 @deftypefun {void *} mempcpy (void *@var{to}, const void *@var{from}, size_t @var{size})
 The @code{mempcpy} function is nearly identical to the @code{memcpy}
-function.  It copies @var{size} byts from the object beginning at
+function.  It copies @var{size} bytes from the object beginning at
 @code{from} into the object pointed to by @var{to}.  But instead of
 returning the value of @code{to} it returns a pointer to the byte
 following the last written byte in the object beginning at @var{to}.
@@ -616,7 +616,7 @@ This function is like @code{strcmp}, except that differences in case are
 ignored.  How uppercase and lowercase character are related is
 determined by the currently selected locale.  In the standard @code{"C"}
 locale the characters @"A and @"a do not match but in a locale which
-regards this characters as parts of the alphabeth they do match.
+regards this characters as parts of the alphabet they do match.
 
 @code{strcasecmp} is derived from BSD.
 @end deftypefun
@@ -669,12 +669,12 @@ value follows the same conventions as found in the @code{strverscmp}
 function.  In fact, if @var{s1} and @var{s2} contain no digits,
 @code{strverscmp} behaves like @code{strcmp}.
 
-Basically, we compare strings normaly (character by character), until
+Basically, we compare strings normally (character by character), until
 we find a digit in each string - then we enter a special comparison
 mode, where each sequence of digit is taken as a whole.  If we reach the
 end of these two parts without noticing a difference, we return to the
 standard comparison mode.  There are two types of numeric parts:
-"integral" and "fractionnal" (these laters begins with a '0'). The types
+"integral" and "fractional" (those  begin with a '0'). The types
 of the numeric parts affect the way we sort them:
 
 @itemize @bullet
@@ -682,13 +682,13 @@ of the numeric parts affect the way we sort them:
 integral/integral: we compare values as you would expect.
 
 @item
-fractionnal/integral: the fractionnal part is less than the integral one.
+fractional/integral: the fractional part is less than the integral one.
 Again, no surprise.
 
 @item
-fractionnal/fractionnal: the things become a bit more complex.
-if the common prefix contains only leading zeroes, the longest part is less
-than the other one; else the comparison behaves normaly.
+fractional/fractional: the things become a bit more complex.
+If the common prefix contains only leading zeroes, the longest part is less
+than the other one; else the comparison behaves normally.
 @end itemize
 
 @smallexample
@@ -697,14 +697,14 @@ strverscmp ("no digit", "no digit")
 strverscmp ("item#99", "item#100")
     @result{} <0   /* @r{same prefix, but 99 < 100.} */
 strverscmp ("alpha1", "alpha001")
-    @result{} >0   /* @r{fractionnal part inferior to integral one.} */
+    @result{} >0   /* @r{fractional part inferior to integral one.} */
 strverscmp ("part1_f012", "part1_f01")
-    @result{} >0   /* @r{two fractionnal parts.} */
+    @result{} >0   /* @r{two fractional parts.} */
 strverscmp ("foo.009", "foo.0")
     @result{} <0   /* @r{idem, but with leading zeroes only.} */
 @end smallexample
 
-This function is especially usefull when dealing with filename sorting,
+This function is especially useful when dealing with filename sorting,
 because filenames frequently hold indices/version numbers.
 
 @code{strverscmp} is a GNU extension.
@@ -852,7 +852,7 @@ sort_strings_fast (char **array, int nstrings)
     @{
       size_t length = strlen (array[i]) * 2;
       char *transformed;
-      size_t transformed_lenght;
+      size_t transformed_length;
 
       temp_array[i].input = array[i];
 
diff --git a/manual/time.texi b/manual/time.texi
index c2b2378da8..b67ef63d5e 100644
--- a/manual/time.texi
+++ b/manual/time.texi
@@ -568,7 +568,7 @@ universal time.
 @end deftypefun
 
 As for the @code{localtime} function we have the problem that the result
-is placed ina static variable.  POSIX.1c also provides a replacement for
+is placed in a static variable.  POSIX.1c also provides a replacement for
 @code{gmtime}.
 
 @comment time.h
@@ -1163,7 +1163,7 @@ broken-down time structure, since @code{tm_zone} reports the correct
 abbreviation even when it is not the latest one.
 
 Though the strings are declared as @code{char *} the user must stay away
-from modifying these strings.  Modying the strings will almost certainly
+from modifying these strings.  Modifying the strings will almost certainly
 lead to trouble.
 
 @end deftypevar
diff --git a/manual/users.texi b/manual/users.texi
index ca9dee4ca6..e6e358f44a 100644
--- a/manual/users.texi
+++ b/manual/users.texi
@@ -1770,7 +1770,7 @@ This function closes the internal stream used by @code{getgrent} or
 @subsection Netgroup Data
 
 @cindex Netgroup
-Sometimes it is useful group users according to other criterias like the
+Sometimes it is useful group users according to other criteria like the
 ones used in the @xref{Group Database}.  E.g., it is useful to associate
 a certain group of users with a certain machine.  On the other hand
 grouping of host names is not supported so far.
diff --git a/stdio-common/printf.c b/stdio-common/printf.c
index c92cd94d99..39f2a50a96 100644
--- a/stdio-common/printf.c
+++ b/stdio-common/printf.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1995, 1996 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -28,7 +28,7 @@ printf (const char *format, ...)
   int done;
 
   va_start (arg, format);
-  done = vprintf (format, arg);
+  done = vfprintf (stdout, format, arg);
   va_end (arg);
 
   return done;
diff --git a/stdio-common/scanf.c b/stdio-common/scanf.c
index bb8a5ae8cb..d4eacbe4ed 100644
--- a/stdio-common/scanf.c
+++ b/stdio-common/scanf.c
@@ -19,15 +19,6 @@
 #include <stdarg.h>
 #include <stdio.h>
 
-/* The function `vscanf' is not defined in ISO C.  Therefore we must
-   use the protected form here.  In stdio it is called `__vscanf' and
-   in libio `_IO_vscanf'.  */
-#ifdef USE_IN_LIBIO
-# include <libioP.h>
-# define VSCANF _IO_vscanf
-#else
-# define VSCANF __vscanf
-#endif
 
 /* Read formatted input from stdin according to the format string FORMAT.  */
 /* VARARGS1 */
@@ -38,7 +29,11 @@ scanf (const char *format, ...)
   int done;
 
   va_start (arg, format);
-  done = VSCANF (format, arg);
+#ifdef USE_IN_LIBIO
+  done = _IO_vfscanf (stdin, format, arg, NULL);
+#else
+  done = vfscanf (stdin, format, arg);
+#endif
   va_end (arg);
 
   return done;
diff --git a/sysdeps/generic/Makefile b/sysdeps/generic/Makefile
index b6a08172e4..2f6a8f4333 100644
--- a/sysdeps/generic/Makefile
+++ b/sysdeps/generic/Makefile
@@ -16,7 +16,7 @@
 # write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 # Boston, MA 02111-1307, USA.
 
-ifeq (,$(filter-out $(sysdep_dir)/stub/bits $(common-objpfx)/bits,\
+ifeq (,$(filter-out $(sysdep_dir)/generic/bits $(common-objpfx)/bits,\
 	$(dir $(firstword $(wildcard $(+sysdep_dirs:%=%/bits/endian.h))))))
 
 $(common-objpfx)bytesex.h: $(common-objpfx)det_endian
diff --git a/sysdeps/stub/__longjmp.c b/sysdeps/generic/__longjmp.c
index 11b72357e4..84d23d4fcd 100644
--- a/sysdeps/stub/__longjmp.c
+++ b/sysdeps/generic/__longjmp.c
@@ -36,3 +36,4 @@ __longjmp (env, val)
 }
 
 stub_warning (longjmp)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/_exit.c b/sysdeps/generic/_exit.c
index 1b8f1700da..5fb4366e49 100644
--- a/sysdeps/stub/_exit.c
+++ b/sysdeps/generic/_exit.c
@@ -31,3 +31,4 @@ _exit (status)
 }
 
 stub_warning (_exit)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/accept.c b/sysdeps/generic/accept.c
index c27070c0b1..b8f714a201 100644
--- a/sysdeps/stub/accept.c
+++ b/sysdeps/generic/accept.c
@@ -36,3 +36,4 @@ accept (fd, addr, addr_len)
 
 
 stub_warning (accept)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/access.c b/sysdeps/generic/access.c
index a3b1d32998..9dad9b5f79 100644
--- a/sysdeps/stub/access.c
+++ b/sysdeps/generic/access.c
@@ -38,3 +38,4 @@ __access (file, type)
 stub_warning (access)
 
 weak_alias (__access, access)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/acct.c b/sysdeps/generic/acct.c
index 508a775dc8..c571567f47 100644
--- a/sysdeps/stub/acct.c
+++ b/sysdeps/generic/acct.c
@@ -31,3 +31,4 @@ acct (name)
 }
 
 stub_warning (acct)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/adjtime.c b/sysdeps/generic/adjtime.c
index dc1534926f..9b6f3574d9 100644
--- a/sysdeps/stub/adjtime.c
+++ b/sysdeps/generic/adjtime.c
@@ -34,3 +34,4 @@ __adjtime (delta, olddelta)
 stub_warning (adjtime)
 
 weak_alias (__adjtime, adjtime)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/alarm.c b/sysdeps/generic/alarm.c
index 441327c04a..0f43029780 100644
--- a/sysdeps/stub/alarm.c
+++ b/sysdeps/generic/alarm.c
@@ -36,3 +36,4 @@ alarm (seconds)
 
 
 stub_warning (alarm)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/asm-syntax.h b/sysdeps/generic/asm-syntax.h
index a36150984f..a36150984f 100644
--- a/sysdeps/stub/asm-syntax.h
+++ b/sysdeps/generic/asm-syntax.h
diff --git a/sysdeps/stub/atomicity.h b/sysdeps/generic/atomicity.h
index 887ce73384..887ce73384 100644
--- a/sysdeps/stub/atomicity.h
+++ b/sysdeps/generic/atomicity.h
diff --git a/sysdeps/stub/bind.c b/sysdeps/generic/bind.c
index 7e7f0d70b7..1c787820d8 100644
--- a/sysdeps/stub/bind.c
+++ b/sysdeps/generic/bind.c
@@ -32,3 +32,4 @@ bind (fd, addr, len)
 
 
 stub_warning (bind)
+#include <stub-tag.h>
diff --git a/sysdeps/generic/bits/dirent.h b/sysdeps/generic/bits/dirent.h
new file mode 100644
index 0000000000..2f7dca78aa
--- /dev/null
+++ b/sysdeps/generic/bits/dirent.h
@@ -0,0 +1,24 @@
+/* Directory entry structure `struct dirent'.  Stub version.
+   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., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+struct dirent
+  {
+    char d_name[1];		/* Variable length.  */
+    int d_fileno;
+  };
diff --git a/sysdeps/generic/bits/elfclass.h b/sysdeps/generic/bits/elfclass.h
new file mode 100644
index 0000000000..1ad12954b2
--- /dev/null
+++ b/sysdeps/generic/bits/elfclass.h
@@ -0,0 +1,8 @@
+/* This file specifies the native word size of the machine, which indicates
+   the ELF file class used for executables and shared objects on this
+   machine.  */
+
+#define __ELF_NATIVE_CLASS ??
+
+/* This file goes in sysdeps/wordsize-?? and sysdeps/MACHINE/Implies lists
+   wordsize-?? for MACHINE's wordsize.  */
diff --git a/sysdeps/generic/bits/endian.h b/sysdeps/generic/bits/endian.h
new file mode 100644
index 0000000000..597f079a0f
--- /dev/null
+++ b/sysdeps/generic/bits/endian.h
@@ -0,0 +1,9 @@
+/* This file should define __BYTE_ORDER as appropriate for the machine
+   in question.  See string/endian.h for how to define it.
+
+   If only the stub bits/endian.h applies to a particular configuration,
+   bytesex.h is generated by running a program on the host machine.
+   So if cross-compiling to a machine with a different byte order,
+   the bits/endian.h file for that machine must exist.  */
+
+#error Machine byte order unknown.
diff --git a/sysdeps/generic/bits/errno.h b/sysdeps/generic/bits/errno.h
new file mode 100644
index 0000000000..e197c3603d
--- /dev/null
+++ b/sysdeps/generic/bits/errno.h
@@ -0,0 +1,40 @@
+/* Copyright (C) 1991, 1994, 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.  */
+
+/* This file defines the `errno' constants.  */
+
+#if !defined(__Emath_defined) && (defined(_ERRNO_H) || defined(__need_Emath))
+#undef	__need_Emath
+#define	__Emath_defined	1
+
+#define	EDOM	1
+#define	ERANGE	2
+#endif
+
+#ifdef	_ERRNO_H
+#define	ENOSYS	3
+#define	EINVAL	4
+#define	ESPIPE	5
+#define	EBADF	6
+#define	ENOMEM	7
+#define	EACCES	8
+#define ENFILE  9
+#define EMFILE  10
+#endif
+
+#define __set_errno(val) errno = (val)
diff --git a/sysdeps/generic/bits/fcntl.h b/sysdeps/generic/bits/fcntl.h
new file mode 100644
index 0000000000..24a1c38be6
--- /dev/null
+++ b/sysdeps/generic/bits/fcntl.h
@@ -0,0 +1,85 @@
+/* O_*, F_*, FD_* bit values for stub configuration.
+   Copyright (C) 1991, 1992, 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.  */
+
+/* These values should be changed as appropriate for your system.  */
+
+#ifndef	_FCNTL_H
+#error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
+#endif
+
+
+/* File access modes for `open' and `fcntl'.  */
+#define	O_RDONLY	0	/* Open read-only.  */
+#define	O_WRONLY	1	/* Open write-only.  */
+#define	O_RDWR		2	/* Open read/write.  */
+
+
+/* Bits OR'd into the second argument to open.  */
+#define	O_CREAT		0x0200	/* Create file if it doesn't exist.  */
+#define	O_EXCL		0x0800	/* Fail if file already exists.  */
+#define	O_TRUNC		0x0400	/* Truncate file to zero length.  */
+#define	O_NOCTTY	0x0100	/* Don't assign a controlling terminal.  */
+
+/* File status flags for `open' and `fcntl'.  */
+#define	O_APPEND	0x0008	/* Writes append to the file.  */
+#define	O_NONBLOCK	0x0004	/* Non-blocking I/O.  */
+
+#ifdef __USE_BSD
+#define	O_NDELAY	O_NONBLOCK
+#endif
+
+/* Mask for file access modes.  This is system-dependent in case
+   some system ever wants to define some other flavor of access.  */
+#define	O_ACCMODE	(O_RDONLY|O_WRONLY|O_RDWR)
+
+/* Values for the second argument to `fcntl'.  */
+#define	F_DUPFD	  	0	/* Duplicate file descriptor.  */
+#define	F_GETFD		1	/* Get file descriptor flags.  */
+#define	F_SETFD		2	/* Set file descriptor flags.  */
+#define	F_GETFL		3	/* Get file status flags.  */
+#define	F_SETFL		4	/* Set file status flags.  */
+#ifdef __USE_BSD
+#define	F_GETOWN	5	/* Get owner (receiver of SIGIO).  */
+#define	F_SETOWN	6	/* Set owner (receiver of SIGIO).  */
+#endif
+#define	F_GETLK		7	/* Get record locking info.  */
+#define	F_SETLK		8	/* Set record locking info.  */
+#define	F_SETLKW	9	/* Set record locking info, wait.  */
+
+/* File descriptor flags used with F_GETFD and F_SETFD.  */
+#define	FD_CLOEXEC	1	/* Close on exec.  */
+
+
+#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.  */
+struct flock
+  {
+    short int l_type;	/* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK.  */
+    short int l_whence;	/* Where `l_start' is relative to (like `lseek').  */
+    __off_t l_start;	/* Offset where the lock begins.  */
+    __off_t l_len;	/* Size of the locked area; zero means until EOF.  */
+    __pid_t l_pid;	/* Process holding the lock.  */
+  };
+
+/* Values for the `l_type' field of a `struct flock'.  */
+#define	F_RDLCK	1	/* Read lock.  */
+#define	F_WRLCK	2	/* Write lock.  */
+#define	F_UNLCK	3	/* Remove lock.  */
diff --git a/sysdeps/generic/bits/fenv.h b/sysdeps/generic/bits/fenv.h
new file mode 100644
index 0000000000..f45deb07c1
--- /dev/null
+++ b/sysdeps/generic/bits/fenv.h
@@ -0,0 +1,61 @@
+/* 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 _FENV_H
+#error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
+#endif
+
+
+/* Here should be the exception be defined:
+    FE_INVALID
+    FE_DIVBYZERO
+    FE_OVERFLOW
+    FE_UNDERFLOW
+    FE_INEXACT
+   We define no macro which signals no exception is supported.  */
+
+#define FE_ALL_EXCEPT 0
+
+
+/* Here should the rounding modes be defined:
+    FE_TONEAREST
+    FE_DOWNWARD
+    FE_UPWARD
+    FE_TOWARDSZERO
+   We define no macro which signals no rounding mode is selectable.  */
+
+
+/* Type representing exception flags.
+   XXX Probably we should also include the signal handler here.  */
+typedef struct
+  {
+    unsigned int flags;
+  }
+fexcept_t;
+
+
+/* Type representing floating-point environment.  */
+typedef struct
+  {
+    fexcept_t excepts;
+    /* XXX I don't know what else we should save.  */
+  }
+fenv_t;
+
+/* If the default argument is used we use this value.  */
+#define FE_DFL_ENV	((fenv_t *) -1l)
diff --git a/sysdeps/generic/bits/huge_val.h b/sysdeps/generic/bits/huge_val.h
new file mode 100644
index 0000000000..8f137d1734
--- /dev/null
+++ b/sysdeps/generic/bits/huge_val.h
@@ -0,0 +1,26 @@
+/* Stub `HUGE_VAL' constant.
+   Used by <stdlib.h> and <math.h> functions for overflow.
+   Copyright (C) 1992, 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., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#ifndef _MATH_H
+#error "Never use <bits/huge_val.h> directly; include <math.h> instead."
+#endif
+
+
+#define	   HUGE_VAL	1e37
diff --git a/sysdeps/generic/bits/ioctls.h b/sysdeps/generic/bits/ioctls.h
new file mode 100644
index 0000000000..3b6178bfae
--- /dev/null
+++ b/sysdeps/generic/bits/ioctls.h
@@ -0,0 +1 @@
+/* This space intentionally left blank.  */
diff --git a/sysdeps/generic/bits/ipc.h b/sysdeps/generic/bits/ipc.h
new file mode 100644
index 0000000000..a5ecbd90b7
--- /dev/null
+++ b/sysdeps/generic/bits/ipc.h
@@ -0,0 +1,56 @@
+/* Copyright (C) 1995, 1996 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#ifndef _SYS_IPC_BUF_H
+
+#define _SYS_IPC_BUF_H	1
+#include <features.h>
+
+#include <sys/types.h>
+
+/* Mode bits for `msgget', `semget', and `shmget'.  */
+#define IPC_CREAT	01000		/* create key if key does not exist */
+#define IPC_EXCL	02000		/* fail if key exists */
+#define IPC_NOWAIT	04000		/* return error on wait */
+
+/* Control commands for `msgctl', `semctl', and `shmctl'.  */
+#define IPC_RMID	0		/* remove identifier */
+#define IPC_SET		1		/* set `ipc_perm' options */
+#define IPC_STAT	2		/* get `ipc_perm' options */
+
+
+__BEGIN_DECLS
+
+/* Special key values.  */
+#define IPC_PRIVATE	((key_t) 0)	/* private key */
+
+
+/* Data structure used to pass permission information to IPC operations.  */
+struct ipc_perm
+{
+  __uid_t uid;				/* owner's user ID */
+  __gid_t gid;				/* owner's group ID */
+  __uid_t cuid;				/* creator's user ID */
+  __gid_t cgid;				/* creator's group ID */
+  __mode_t mode;			/* read/write permission */
+};
+
+__END_DECLS
+
+#endif /* _SYS_IPC_BUF_H */
diff --git a/sysdeps/generic/bits/libc-lock.h b/sysdeps/generic/bits/libc-lock.h
new file mode 100644
index 0000000000..c24dcd047a
--- /dev/null
+++ b/sysdeps/generic/bits/libc-lock.h
@@ -0,0 +1,109 @@
+/* libc-internal interface for mutex locks.  Stub version.
+   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 _BITS_LIBC_LOCK_H
+#define _BITS_LIBC_LOCK_H 1
+
+
+/* Define a lock variable NAME with storage class CLASS.  The lock must be
+   initialized with __libc_lock_init before it can be used (or define it
+   with __libc_lock_define_initialized, below).  Use `extern' for CLASS to
+   declare a lock defined in another module.  In public structure
+   definitions you must use a pointer to the lock structure (i.e., NAME
+   begins with a `*'), because its storage size will not be known outside
+   of libc.  */
+#define __libc_lock_define(CLASS,NAME)
+
+/* Define an initialized lock variable NAME with storage class CLASS.  */
+#define __libc_lock_define_initialized(CLASS,NAME)
+
+/* Define an initialized recursive lock variable NAME with storage
+   class CLASS.  */
+#define __libc_lock_define_initialized_recursive(CLASS,NAME)
+
+/* Initialize the named lock variable, leaving it in a consistent, unlocked
+   state.  */
+#define __libc_lock_init(NAME)
+
+/* Same as last but this time we initialize a recursive mutex.  */
+#define __libc_lock_init_recursive(NAME)
+
+/* Finalize the named lock variable, which must be locked.  It cannot be
+   used again until __libc_lock_init is called again on it.  This must be
+   called on a lock variable before the containing storage is reused.  */
+#define __libc_lock_fini(NAME)
+
+/* Finalize recursive named lock.  */
+#define __libc_lock_fini_recursive(NAME)
+
+/* Lock the named lock variable.  */
+#define __libc_lock_lock(NAME)
+
+/* Lock the recursive named lock variable.  */
+#define __libc_lock_lock_recursive(NAME)
+
+/* Try to lock the named lock variable.  */
+#define __libc_lock_trylock(NAME) 0
+
+/* Try to lock the recursive named lock variable.  */
+#define __libc_lock_trylock_recursive(NAME) 0
+
+/* Unlock the named lock variable.  */
+#define __libc_lock_unlock(NAME)
+
+/* Unlock the recursive named lock variable.  */
+#define __libc_lock_unlock_recursive(NAME)
+
+
+/* Define once control variable.  */
+#define __libc_once_define(CLASS, NAME) CLASS int NAME = 0
+
+/* Call handler iff the first call.  */
+#define __libc_once(ONCE_CONTROL, INIT_FUNCTION) \
+  do {									      \
+    if ((ONCE_CONTROL) == 0) {						      \
+      INIT_FUNCTION ();							      \
+      (ONCE_CONTROL) = 1;						      \
+    }									      \
+  } while (0)
+
+
+/* Start critical region with cleanup.  */
+#define __libc_cleanup_region_start(FCT, ARG)
+
+/* End critical region with cleanup.  */
+#define __libc_cleanup_region_end(DOIT)
+
+
+/* We need portable names for some of the functions.  */
+#define __libc_mutex_unlock
+
+/* Type for key of thread specific data.  */
+typedef int __libc_key_t;
+
+/* Create key for thread specific data.  */
+#define __libc_key_create(KEY,DEST) -1
+
+/* Set thread-specific data associated with KEY to VAL.  */
+#define __libc_setspecific(KEY,VAL) -1
+
+/* Get thread-specific data associated with KEY.  */
+#define __libc_getspecific(KEY) 0
+
+#endif	/* bits/libc-lock.h */
diff --git a/sysdeps/generic/bits/local_lim.h b/sysdeps/generic/bits/local_lim.h
new file mode 100644
index 0000000000..42cc7ebbc9
--- /dev/null
+++ b/sysdeps/generic/bits/local_lim.h
@@ -0,0 +1,3 @@
+/* This file should define the implementation-specific limits described
+   in posix[12]_lim.h.  If there are no useful values to give a limit,
+   don't define it.  */
diff --git a/sysdeps/generic/bits/mathinline.h b/sysdeps/generic/bits/mathinline.h
new file mode 100644
index 0000000000..5498af6b63
--- /dev/null
+++ b/sysdeps/generic/bits/mathinline.h
@@ -0,0 +1,12 @@
+/* This file should provide inline versions of math functions.
+
+   Surround GCC-specific parts with #ifdef __GNUC__, and use `extern __inline'.
+
+   This file should define __MATH_INLINES if functions are actually defined as
+   inlines.  */
+
+#if !defined __NO_MATH_INLINES && defined __OPTIMIZE__
+
+/* Here goes the real code.  */
+
+#endif
diff --git a/sysdeps/generic/bits/msq.h b/sysdeps/generic/bits/msq.h
new file mode 100644
index 0000000000..37daa9bf8c
--- /dev/null
+++ b/sysdeps/generic/bits/msq.h
@@ -0,0 +1,47 @@
+/* Copyright (C) 1995, 1997 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#ifndef _SYS_MSG_H
+#error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
+#endif
+
+
+#include <features.h>
+#include <sys/types.h>
+
+/* Define options for message queue functions.  */
+#define MSG_NOERROR	010000	/* no error if message is too big */
+
+__BEGIN_DECLS
+
+/* Structure of record for one message inside the kernel.
+   The type `struct __msg' is opaque.  */
+struct msqid_ds
+{
+  struct ipc_perm msg_perm;	/* structure describing operation permission */
+  __time_t msg_stime;		/* time of last msgsnd command */
+  __time_t msg_rtime;		/* time of last msgrcv command */
+  __time_t msg_ctime;		/* time of last change */
+  unsigned short int msg_qnum;	/* number of messages currently on queue */
+  unsigned short int msg_qbytes;/* max number of bytes allowed on queue */
+  __pid_t msg_lspid;		/* pid of last msgsnd() */
+  __pid_t msg_lrpid;		/* pid of last msgrcv() */
+};
+
+__END_DECLS
diff --git a/sysdeps/generic/bits/nan.h b/sysdeps/generic/bits/nan.h
new file mode 100644
index 0000000000..ab38168ea4
--- /dev/null
+++ b/sysdeps/generic/bits/nan.h
@@ -0,0 +1,5 @@
+#ifndef _MATH_H
+#error "Never use <bits/nan.h> directly; include <math.h> instead."
+#endif
+
+/* This file should define `NAN' on machines that have such things.  */
diff --git a/sysdeps/generic/bits/posix_opt.h b/sysdeps/generic/bits/posix_opt.h
new file mode 100644
index 0000000000..54f5a79aa2
--- /dev/null
+++ b/sysdeps/generic/bits/posix_opt.h
@@ -0,0 +1,2 @@
+/* This file should define the POSIX options described in <unistd.h>,
+   or leave them undefined, as appropriate.  */
diff --git a/sysdeps/generic/bits/sem.h b/sysdeps/generic/bits/sem.h
new file mode 100644
index 0000000000..1d3e41bd56
--- /dev/null
+++ b/sysdeps/generic/bits/sem.h
@@ -0,0 +1,61 @@
+/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#ifndef _SYS_SEM_H
+#error "Never use <bits/sem.h> directly; include <sys/sem.h> instead."
+#endif
+
+
+#include <features.h>
+#include <sys/types.h>
+
+/* Flags for `semop'.  */
+#define SEM_UNDO	0x1000		/* undo the operation on exit */
+
+/* Commands for `semctl'.  */
+#define GETPID		11		/* get sempid */
+#define GETVAL		12		/* get semval */
+#define GETALL		13		/* get all semval's */
+#define GETNCNT		14		/* get semncnt */
+#define GETZCNT		15		/* get semzcnt */
+#define SETVAL		16		/* set semval */
+#define SETALL		17		/* set all semval's */
+
+
+__BEGIN_DECLS
+
+/* Data structure describing a set of semaphores.  */
+struct semid_ds
+{
+  struct ipc_perm sem_perm;		/* operation permission struct */
+  __time_t sem_otime;			/* last semop() time */
+  __time_t sem_ctime;			/* last time changed by semctl() */
+  unsigned short int sem_nsems;		/* number of semaphores in set */
+};
+
+/* Union used for argument for `semctl'.  */
+union semun
+{
+  int val;				/* value for SETVAL */
+  struct semid_ds *buf;			/* buffer for IPC_STAT & IPC_SET */
+  unsigned short int *array;		/* array for GETALL & SETALL */
+  struct seminfo *__buf;		/* buffer for IPC_INFO */
+ };
+
+__END_DECLS
diff --git a/sysdeps/generic/bits/setjmp.h b/sysdeps/generic/bits/setjmp.h
new file mode 100644
index 0000000000..6620e5ab15
--- /dev/null
+++ b/sysdeps/generic/bits/setjmp.h
@@ -0,0 +1,3 @@
+/* Define the machine-dependent type `jmp_buf'.  Stub version.  */
+
+typedef int __jmp_buf[1];
diff --git a/sysdeps/generic/bits/shm.h b/sysdeps/generic/bits/shm.h
new file mode 100644
index 0000000000..b41d0c1e86
--- /dev/null
+++ b/sysdeps/generic/bits/shm.h
@@ -0,0 +1,53 @@
+/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#ifndef _SYS_SHM_H
+#error "Never use <bits/shm.h> directly; include <sys/shm.h> instead."
+#endif
+
+
+#include <features.h>
+#include <sys/types.h>
+
+/* Flags for `shmat'.  */
+#define SHM_RDONLY	010000		/* attach read-only else read-write */
+#define SHM_RND		020000		/* round attach address to SHMLBA */
+#define SHM_REMAP	040000		/* take-over region on attach */
+
+/* Commands for `shmctl'.  */
+#define SHM_LOCK	11		/* lock segment (root only) */
+#define SHM_UNLOCK	12		/* unlock segment (root only) */
+
+
+__BEGIN_DECLS
+
+/* Data structure describing a set of semaphores.  */
+struct shmid_ds
+{
+  struct ipc_perm sem_perm;		/* operation permission struct */
+  int shm_segsz;			/* size of segment in bytes */
+  __time_t sem_atime;			/* time of last shmat() */
+  __time_t sem_dtime;			/* time of last shmdt() */
+  __time_t sem_ctime;			/* time of last change by shmctl() */
+  __pid_t shm_cpid;			/* pid of creator */
+  __pid_t shm_lpid;			/* pid of last shmop */
+  unsigned short int shm_nattch;	/* number of current attaches */
+};
+
+__END_DECLS
diff --git a/sysdeps/generic/bits/sigcontext.h b/sysdeps/generic/bits/sigcontext.h
new file mode 100644
index 0000000000..46e4df8c64
--- /dev/null
+++ b/sysdeps/generic/bits/sigcontext.h
@@ -0,0 +1,29 @@
+/* Structure describing state saved while handling a signal.  Stub version.
+   Copyright (C) 1991, 1994, 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.  */
+
+/* State of this thread when the signal was taken.  */
+struct sigcontext
+  {
+    int sc_onstack;
+    __sigset_t sc_mask;
+
+    /* Registers and such.  */
+  };
+
+/* Signal subcodes should be defined here.  */
diff --git a/sysdeps/generic/bits/signum.h b/sysdeps/generic/bits/signum.h
new file mode 100644
index 0000000000..6b4693f64c
--- /dev/null
+++ b/sysdeps/generic/bits/signum.h
@@ -0,0 +1,53 @@
+/* Copyright (C) 1991, 1993, 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., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#ifdef	_SIGNAL_H
+
+/* Fake signal functions.  */
+extern void _sig_ign __P ((int sig));
+extern void _sig_dfl __P ((int sig));
+
+#define	SIG_ERR	((__sighandler_t) 0) /* Error return.  */
+#define	SIG_DFL	_sig_dfl	/* Default action.  */
+#define	SIG_IGN	_sig_ign	/* Ignore signal.  */
+
+
+/* ANSI signals.  */
+#define	SIGABRT	1	/* Abnormal termination.  */
+#define	SIGFPE	2	/* Erroneous arithmetic operation.  */
+#define	SIGILL	3	/* Illegal instruction.  */
+#define	SIGINT	3	/* Interactive attention signal.  */
+#define	SIGSEGV	4	/* Invalid access to storage.  */
+#define	SIGTERM	5	/* Termination request.  */
+
+/* POSIX signals.  */
+#define	SIGHUP	6	/* Hangup.  */
+#define	SIGQUIT	7	/* Quit.  */
+#define	SIGPIPE	8	/* Broken pipe.  */
+#define	SIGKILL	9	/* Kill (cannot be blocked, caught, or ignored).  */
+#define	SIGALRM	10	/* Alarm clock.  */
+#define	SIGSTOP	11	/* Stop (cannot be blocked, caught, or ignored).  */
+#define	SIGTSTP	12	/* Keyboard stop.  */
+#define	SIGCONT	13	/* Continue.  */
+#define	SIGCHLD	14	/* Child terminated or stopped.  */
+#define	SIGTTIN	15	/* Background read from control terminal.  */
+#define	SIGTTOU	16	/* Background write to control terminal.  */
+
+#endif	/* <signal.h> included.  */
+
+#define	_NSIG	17
diff --git a/sysdeps/generic/bits/stat.h b/sysdeps/generic/bits/stat.h
new file mode 100644
index 0000000000..dab0cd00cb
--- /dev/null
+++ b/sysdeps/generic/bits/stat.h
@@ -0,0 +1,74 @@
+/* Copyright (C) 1992, 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., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+/*
+ * Never include this file directly; use <sys/stat.h> instead.
+ */
+
+/* This structure needs to be defined in accordance with the
+   implementation of __stat, __fstat, and __lstat.  */
+
+#ifndef	_BITS_STAT_H
+#define	_BITS_STAT_H	1
+
+#include <bits/types.h>
+
+/* Structure describing file characteristics.  */
+struct stat
+  {
+    /* These are the members that POSIX.1 requires.  */
+
+    __mode_t st_mode;		/* File mode.  */
+    __ino_t st_ino;		/* File serial number.  */
+    __dev_t st_dev;		/* Device containing the file.  */
+    __nlink_t st_nlink;		/* Link count.  */
+
+    __uid_t st_uid;		/* User ID of the file's owner.  */
+    __gid_t st_gid;		/* Group ID of the file's group.  */
+    __off_t st_size;		/* Size of file, in bytes.  */
+
+    __time_t st_atime;		/* Time of last access.  */
+    __time_t st_mtime;		/* Time of last modification.  */
+    __time_t st_ctime;		/* Time of last status change.  */
+
+    /* This should be defined if there is a `st_blksize' member.  */
+#undef	_STATBUF_ST_BLKSIZE
+  };
+
+/* Encoding of the file mode.  These are the standard Unix values,
+   but POSIX.1 does not specify what values should be used.  */
+
+#define	__S_IFMT	0170000	/* These bits determine file type.  */
+
+/* File types.  */
+#define	__S_IFDIR	0040000	/* Directory.  */
+#define	__S_IFCHR	0020000	/* Character device.  */
+#define	__S_IFBLK	0060000	/* Block device.  */
+#define	__S_IFREG	0100000	/* Regular file.  */
+#define	__S_IFIFO	0010000	/* FIFO.  */
+
+/* Protection bits.  */
+
+#define	__S_ISUID	04000	/* Set user ID on execution.  */
+#define	__S_ISGID	02000	/* Set group ID on execution.  */
+#define	__S_IREAD	0400	/* Read by owner.  */
+#define	__S_IWRITE	0200	/* Write by owner.  */
+#define	__S_IEXEC	0100	/* Execute by owner.  */
+
+
+#endif /* bits/stat.h */
diff --git a/sysdeps/stub/bits/stdio_lim.h b/sysdeps/generic/bits/stdio_lim.h
index ef873777c9..ef873777c9 100644
--- a/sysdeps/stub/bits/stdio_lim.h
+++ b/sysdeps/generic/bits/stdio_lim.h
diff --git a/sysdeps/generic/bits/string.h b/sysdeps/generic/bits/string.h
new file mode 100644
index 0000000000..ad68b038b6
--- /dev/null
+++ b/sysdeps/generic/bits/string.h
@@ -0,0 +1,12 @@
+/* This file should provide inline versions of string functions.
+
+   Surround GCC-specific parts with #ifdef __GNUC__, and use `extern __inline'.
+
+   This file should define __STRING_INLINES if functions are actually defined
+   as inlines.  */
+
+#ifndef _BITS_STRING_H
+#define _BITS_STRING_H	1
+
+
+#endif /* bits/string.h */
diff --git a/sysdeps/generic/bits/time.h b/sysdeps/generic/bits/time.h
new file mode 100644
index 0000000000..e41a991b44
--- /dev/null
+++ b/sysdeps/generic/bits/time.h
@@ -0,0 +1,44 @@
+/* System-dependent timing definitions.  Stub version.
+   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.  */
+
+/*
+ * Never include this file directly; use <time.h> instead.
+ */
+
+#ifdef __need_timeval
+# undef __need_timeval
+# ifndef _STRUCT_TIMEVAL
+#  define _STRUCT_TIMEVAL	1
+/* A time value that is accurate to the nearest
+   microsecond but also has a range of years.  */
+struct timeval
+  {
+    time_t tv_sec;		/* Seconds.  */
+    time_t tv_usec;		/* Microseconds.  */
+  };
+# endif	/* struct timeval */
+#endif	/* need timeval */
+
+
+#ifndef _BITS_TIME_H
+#define	_BITS_TIME_H	1
+
+#define CLOCKS_PER_SEC 60
+
+#endif	/* bits/time.h */
diff --git a/sysdeps/generic/bits/waitflags.h b/sysdeps/generic/bits/waitflags.h
new file mode 100644
index 0000000000..127eb6ce4c
--- /dev/null
+++ b/sysdeps/generic/bits/waitflags.h
@@ -0,0 +1,27 @@
+/* Definitions of flag bits for `waitpid' et al.
+   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
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#ifndef _SYS_WAIT_H
+#error "Never use <bits/waitflags.h> directly; include <sys/wait.h> instead."
+#endif
+
+
+/* Bits in the third argument to `waitpid'.  */
+#define	WNOHANG		1	/* Don't block waiting.  */
+#define	WUNTRACED	2	/* Report status of stopped children.  */
diff --git a/sysdeps/stub/brdinit.c b/sysdeps/generic/brdinit.c
index 35c10b4a0d..35c10b4a0d 100644
--- a/sysdeps/stub/brdinit.c
+++ b/sysdeps/generic/brdinit.c
diff --git a/sysdeps/stub/brk.c b/sysdeps/generic/brk.c
index 100c462498..4db14f7591 100644
--- a/sysdeps/stub/brk.c
+++ b/sysdeps/generic/brk.c
@@ -31,3 +31,4 @@ __brk (addr)
 stub_warning (brk)
 
 weak_alias (__brk, brk)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/bsd-_setjmp.c b/sysdeps/generic/bsd-_setjmp.c
index 97d665191a..97d665191a 100644
--- a/sysdeps/stub/bsd-_setjmp.c
+++ b/sysdeps/generic/bsd-_setjmp.c
diff --git a/sysdeps/stub/bsd-setjmp.c b/sysdeps/generic/bsd-setjmp.c
index d53263ba62..d53263ba62 100644
--- a/sysdeps/stub/bsd-setjmp.c
+++ b/sysdeps/generic/bsd-setjmp.c
diff --git a/sysdeps/stub/chdir.c b/sysdeps/generic/chdir.c
index 2ff9c7176d..963885bd5e 100644
--- a/sysdeps/stub/chdir.c
+++ b/sysdeps/generic/chdir.c
@@ -37,3 +37,4 @@ __chdir (path)
 stub_warning (chdir)
 
 weak_alias (__chdir, chdir)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/chflags.c b/sysdeps/generic/chflags.c
index 267dede2bb..bf2a283b20 100644
--- a/sysdeps/stub/chflags.c
+++ b/sysdeps/generic/chflags.c
@@ -40,3 +40,4 @@ chflags (file, flags)
 }
 
 stub_warning (chflags)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/chmod.c b/sysdeps/generic/chmod.c
index 5906a6fd1b..3e76c93903 100644
--- a/sysdeps/stub/chmod.c
+++ b/sysdeps/generic/chmod.c
@@ -39,3 +39,4 @@ __chmod (file, mode)
 stub_warning (chmod)
 
 weak_alias (__chmod, chmod)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/chown.c b/sysdeps/generic/chown.c
index f92e536f8d..62753e06d0 100644
--- a/sysdeps/stub/chown.c
+++ b/sysdeps/generic/chown.c
@@ -40,3 +40,4 @@ __chown (file, owner, group)
 stub_warning (chown)
 
 weak_alias (__chown, chown)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/chroot.c b/sysdeps/generic/chroot.c
index 9c8daae40a..1852c08938 100644
--- a/sysdeps/stub/chroot.c
+++ b/sysdeps/generic/chroot.c
@@ -31,3 +31,4 @@ chroot (path)
 
 
 stub_warning (chroot)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/clock.c b/sysdeps/generic/clock.c
index ae9e657ce6..ac0dc46e4f 100644
--- a/sysdeps/stub/clock.c
+++ b/sysdeps/generic/clock.c
@@ -29,3 +29,4 @@ clock ()
 }
 
 stub_warning (clock)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/close.c b/sysdeps/generic/close.c
index ed9620637b..4e78ca12fe 100644
--- a/sysdeps/stub/close.c
+++ b/sysdeps/generic/close.c
@@ -36,3 +36,4 @@ __close (fd)
 stub_warning (close)
 
 weak_alias (__close, close)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/closedir.c b/sysdeps/generic/closedir.c
index 2f0edca05d..77e9a69352 100644
--- a/sysdeps/stub/closedir.c
+++ b/sysdeps/generic/closedir.c
@@ -32,3 +32,4 @@ __closedir (DIR *dirp)
 weak_alias (__closedir, closedir)
 
 stub_warning (closedir)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/confstr.h b/sysdeps/generic/confstr.h
index 988ec88c0c..988ec88c0c 100644
--- a/sysdeps/stub/confstr.h
+++ b/sysdeps/generic/confstr.h
diff --git a/sysdeps/stub/connect.c b/sysdeps/generic/connect.c
index fb8b50341a..cbea96a61d 100644
--- a/sysdeps/stub/connect.c
+++ b/sysdeps/generic/connect.c
@@ -35,3 +35,4 @@ __connect (fd, addr, len)
 weak_alias (__connect, connect)
 
 stub_warning (connect)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/console.c b/sysdeps/generic/console.c
index d48455b40d..d48455b40d 100644
--- a/sysdeps/stub/console.c
+++ b/sysdeps/generic/console.c
diff --git a/sysdeps/stub/ctermid.c b/sysdeps/generic/ctermid.c
index c6e8e5fe09..589ccfee0e 100644
--- a/sysdeps/stub/ctermid.c
+++ b/sysdeps/generic/ctermid.c
@@ -33,3 +33,4 @@ ctermid (s)
 
 
 stub_warning (ctermid)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/cuserid.c b/sysdeps/generic/cuserid.c
index 3ddce3dcfc..1d9d17c7b6 100644
--- a/sysdeps/stub/cuserid.c
+++ b/sysdeps/generic/cuserid.c
@@ -32,3 +32,4 @@ cuserid (s)
 
 
 stub_warning (cuserid)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/dbl2mpn.c b/sysdeps/generic/dbl2mpn.c
index 6d012610d9..6d012610d9 100644
--- a/sysdeps/stub/dbl2mpn.c
+++ b/sysdeps/generic/dbl2mpn.c
diff --git a/sysdeps/stub/defs.c b/sysdeps/generic/defs.c
index 3d4abea476..3d4abea476 100644
--- a/sysdeps/stub/defs.c
+++ b/sysdeps/generic/defs.c
diff --git a/sysdeps/stub/des_impl.c b/sysdeps/generic/des_impl.c
index b6a4a8eb13..e0a3af9dd9 100644
--- a/sysdeps/stub/des_impl.c
+++ b/sysdeps/generic/des_impl.c
@@ -25,3 +25,4 @@ _des_crypt (char *buf, unsigned len, struct desparams *desp)
 }
 
 stub_warning (_des_crypt)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/dirfd.c b/sysdeps/generic/dirfd.c
index 767bc215f8..a3f07a63f9 100644
--- a/sysdeps/stub/dirfd.c
+++ b/sysdeps/generic/dirfd.c
@@ -30,3 +30,4 @@ dirfd (dirp)
 }
 
 stub_warning (dirfd)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/dirstream.h b/sysdeps/generic/dirstream.h
index cb1e784d38..cb1e784d38 100644
--- a/sysdeps/stub/dirstream.h
+++ b/sysdeps/generic/dirstream.h
diff --git a/sysdeps/stub/dl-machine.h b/sysdeps/generic/dl-machine.h
index f787df3500..f787df3500 100644
--- a/sysdeps/stub/dl-machine.h
+++ b/sysdeps/generic/dl-machine.h
diff --git a/sysdeps/stub/dup.c b/sysdeps/generic/dup.c
index 2f433c610a..95fe18bf01 100644
--- a/sysdeps/stub/dup.c
+++ b/sysdeps/generic/dup.c
@@ -31,3 +31,4 @@ __dup (fd)
 stub_warning (dup)
 
 weak_alias (__dup, dup)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/dup2.c b/sysdeps/generic/dup2.c
index 88f4fbf6be..ded80d3e00 100644
--- a/sysdeps/stub/dup2.c
+++ b/sysdeps/generic/dup2.c
@@ -44,3 +44,4 @@ __dup2 (fd, fd2)
 stub_warning (dup2)
 
 weak_alias (__dup2, dup2)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/e_acoshl.c b/sysdeps/generic/e_acoshl.c
index 3383c14872..2c7e8ca3cd 100644
--- a/sysdeps/stub/e_acoshl.c
+++ b/sysdeps/generic/e_acoshl.c
@@ -11,3 +11,4 @@ __ieee754_acoshl (long double x)
 }
 
 stub_warning (__ieee754_acoshl)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/e_acosl.c b/sysdeps/generic/e_acosl.c
index af1e6261c3..f7ee70d592 100644
--- a/sysdeps/stub/e_acosl.c
+++ b/sysdeps/generic/e_acosl.c
@@ -11,3 +11,4 @@ __ieee754_acosl (long double x)
 }
 
 stub_warning (__ieee754_acosl)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/e_asinl.c b/sysdeps/generic/e_asinl.c
index ce8c8cdaea..271a375fa2 100644
--- a/sysdeps/stub/e_asinl.c
+++ b/sysdeps/generic/e_asinl.c
@@ -11,3 +11,4 @@ __ieee754_asinl (long double x)
 }
 
 stub_warning (__ieee754_asinl)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/e_atan2l.c b/sysdeps/generic/e_atan2l.c
index 6c500d4c8a..00d43d95c2 100644
--- a/sysdeps/stub/e_atan2l.c
+++ b/sysdeps/generic/e_atan2l.c
@@ -11,3 +11,4 @@ __ieee754_atan2l (long double x, long double y)
 }
 
 stub_warning (__ieee754_atan2l)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/e_expl.c b/sysdeps/generic/e_expl.c
index 4ea8c79597..9d6a4bd4bd 100644
--- a/sysdeps/stub/e_expl.c
+++ b/sysdeps/generic/e_expl.c
@@ -11,3 +11,4 @@ __ieee754_expl (long double x)
 }
 
 stub_warning (__ieee754_expl)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/e_fmodl.c b/sysdeps/generic/e_fmodl.c
index 25cc114808..950ba085b5 100644
--- a/sysdeps/stub/e_fmodl.c
+++ b/sysdeps/generic/e_fmodl.c
@@ -11,3 +11,4 @@ __ieee754_fmodl (long double x, long double y)
 }
 
 stub_warning (__ieee754_fmodl)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/e_j0l.c b/sysdeps/generic/e_j0l.c
index ecb8a8ed16..1e36bf76ad 100644
--- a/sysdeps/stub/e_j0l.c
+++ b/sysdeps/generic/e_j0l.c
@@ -21,3 +21,4 @@ __ieee754_y0l (long double x)
 }
 
 stub_warning (__ieee754_y0l)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/e_j1l.c b/sysdeps/generic/e_j1l.c
index 24655700e3..a1d30e2501 100644
--- a/sysdeps/stub/e_j1l.c
+++ b/sysdeps/generic/e_j1l.c
@@ -21,3 +21,4 @@ __ieee754_y1l (long double x)
 }
 
 stub_warning (__ieee754_y1l)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/e_jnl.c b/sysdeps/generic/e_jnl.c
index 8ced34d461..78915ec817 100644
--- a/sysdeps/stub/e_jnl.c
+++ b/sysdeps/generic/e_jnl.c
@@ -21,3 +21,4 @@ __ieee754_ynl (int n, long double x)
 }
 
 stub_warning (__ieee754_ynl)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/e_lgammal_r.c b/sysdeps/generic/e_lgammal_r.c
index d7fbbca4df..bba92bb5e2 100644
--- a/sysdeps/stub/e_lgammal_r.c
+++ b/sysdeps/generic/e_lgammal_r.c
@@ -11,3 +11,4 @@ __ieee754_lgammal_r (long double x, int *signgamp)
 }
 
 stub_warning (__ieee754_lgammal_r)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/e_log10l.c b/sysdeps/generic/e_log10l.c
index a414d04d74..fef310308a 100644
--- a/sysdeps/stub/e_log10l.c
+++ b/sysdeps/generic/e_log10l.c
@@ -11,3 +11,4 @@ __ieee754_log10l (long double x)
 }
 
 stub_warning (__ieee754_log10l)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/e_logl.c b/sysdeps/generic/e_logl.c
index 45248a375a..3fe7a48459 100644
--- a/sysdeps/stub/e_logl.c
+++ b/sysdeps/generic/e_logl.c
@@ -11,3 +11,4 @@ __ieee754_logl (long double x)
 }
 
 stub_warning (__ieee754_logl)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/e_powl.c b/sysdeps/generic/e_powl.c
index 611dfb583c..96ec53943e 100644
--- a/sysdeps/stub/e_powl.c
+++ b/sysdeps/generic/e_powl.c
@@ -11,3 +11,4 @@ __ieee754_powl (long double x, long double y)
 }
 
 stub_warning (__ieee754_powl)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/e_rem_pio2l.c b/sysdeps/generic/e_rem_pio2l.c
index eec7d793bb..847f5f98c6 100644
--- a/sysdeps/stub/e_rem_pio2l.c
+++ b/sysdeps/generic/e_rem_pio2l.c
@@ -11,3 +11,4 @@ __ieee754_rem_pio2l (long double x, long double *y)
 }
 
 stub_warning (__ieee754_rem_pio2l)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/e_sqrtl.c b/sysdeps/generic/e_sqrtl.c
index c583a27673..d5380809ed 100644
--- a/sysdeps/stub/e_sqrtl.c
+++ b/sysdeps/generic/e_sqrtl.c
@@ -11,3 +11,4 @@ __ieee754_sqrtl (long double x)
 }
 
 stub_warning (__ieee754_sqrtl)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/errlist.c b/sysdeps/generic/errlist.c
index 65c9437587..65c9437587 100644
--- a/sysdeps/stub/errlist.c
+++ b/sysdeps/generic/errlist.c
diff --git a/sysdeps/stub/euidaccess.c b/sysdeps/generic/euidaccess.c
index f11c74b8f7..825c152bea 100644
--- a/sysdeps/stub/euidaccess.c
+++ b/sysdeps/generic/euidaccess.c
@@ -37,3 +37,4 @@ __euidaccess (file, type)
 }
 weak_alias (__euidaccess, euidaccess)
 stub_warning (euidaccess)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/exc2signal.c b/sysdeps/generic/exc2signal.c
index c9b58cd172..c9b58cd172 100644
--- a/sysdeps/stub/exc2signal.c
+++ b/sysdeps/generic/exc2signal.c
diff --git a/sysdeps/stub/execve.c b/sysdeps/generic/execve.c
index c57fb92f7c..fa708c36b9 100644
--- a/sysdeps/stub/execve.c
+++ b/sysdeps/generic/execve.c
@@ -41,3 +41,4 @@ __execve (path, argv, envp)
 stub_warning (execve)
 
 weak_alias (__execve, execve)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/fchdir.c b/sysdeps/generic/fchdir.c
index b18dcc7986..9a6a9dc3d8 100644
--- a/sysdeps/stub/fchdir.c
+++ b/sysdeps/generic/fchdir.c
@@ -30,3 +30,4 @@ fchdir (fd)
 }
 
 stub_warning (fchdir)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/fchflags.c b/sysdeps/generic/fchflags.c
index 5a477e7d5d..befca38bd6 100644
--- a/sysdeps/stub/fchflags.c
+++ b/sysdeps/generic/fchflags.c
@@ -40,3 +40,4 @@ fchflags (fd, flags)
 }
 
 stub_warning (fchflags)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/fchmod.c b/sysdeps/generic/fchmod.c
index eba768fce7..81b1e4247e 100644
--- a/sysdeps/stub/fchmod.c
+++ b/sysdeps/generic/fchmod.c
@@ -39,3 +39,4 @@ __fchmod (fd, mode)
 stub_warning (fchmod)
 
 weak_alias (__fchmod, fchmod)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/fchown.c b/sysdeps/generic/fchown.c
index 60b16aab61..d504dd4c7c 100644
--- a/sysdeps/stub/fchown.c
+++ b/sysdeps/generic/fchown.c
@@ -40,3 +40,4 @@ __fchown (fd, owner, group)
 stub_warning (fchown)
 
 weak_alias (__fchown, fchown)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/fclrexcpt.c b/sysdeps/generic/fclrexcpt.c
index 50373e06a5..c760e54a3e 100644
--- a/sysdeps/stub/fclrexcpt.c
+++ b/sysdeps/generic/fclrexcpt.c
@@ -25,3 +25,4 @@ feclearexcept (int excepts)
 {
 }
 stub_warning (feclearexcept)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/fcntl.c b/sysdeps/generic/fcntl.c
index 2c63a2d2c0..718e326719 100644
--- a/sysdeps/stub/fcntl.c
+++ b/sysdeps/generic/fcntl.c
@@ -37,3 +37,4 @@ __fcntl (fd, cmd)
 stub_warning (fcntl)
 
 weak_alias (__fcntl, fcntl)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/fdopen.c b/sysdeps/generic/fdopen.c
index 9cb12ea510..c7d7f556fa 100644
--- a/sysdeps/stub/fdopen.c
+++ b/sysdeps/generic/fdopen.c
@@ -30,3 +30,4 @@ fdopen (fd, mode)
 }
 
 stub_warning (fdopen)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/fegetenv.c b/sysdeps/generic/fegetenv.c
index 5d10d84abc..4afe17a004 100644
--- a/sysdeps/stub/fegetenv.c
+++ b/sysdeps/generic/fegetenv.c
@@ -25,3 +25,4 @@ fegetenv (fenv_t *envp)
 {
 }
 stub_warning (fegetenv)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/fegetround.c b/sysdeps/generic/fegetround.c
index db673c83aa..60b259450b 100644
--- a/sysdeps/stub/fegetround.c
+++ b/sysdeps/generic/fegetround.c
@@ -26,3 +26,4 @@ fegetround (void)
   return 0;
 }
 stub_warning (fegetround)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/feholdexcpt.c b/sysdeps/generic/feholdexcpt.c
index c52dbcfa5d..5cc9b38a28 100644
--- a/sysdeps/stub/feholdexcpt.c
+++ b/sysdeps/generic/feholdexcpt.c
@@ -26,3 +26,4 @@ feholdexcept (fenv_t *envp)
   return 0;		/* Signal failure.  */
 }
 stub_warning (feholdexcept)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/fesetenv.c b/sysdeps/generic/fesetenv.c
index 57cad7c093..91619494c5 100644
--- a/sysdeps/stub/fesetenv.c
+++ b/sysdeps/generic/fesetenv.c
@@ -25,3 +25,4 @@ fesetenv (const fenv_t *envp)
 {
 }
 stub_warning (fesetenv)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/fesetround.c b/sysdeps/generic/fesetround.c
index ed1d20fa62..cd77a76fcf 100644
--- a/sysdeps/stub/fesetround.c
+++ b/sysdeps/generic/fesetround.c
@@ -26,3 +26,4 @@ fesetround (int round)
   return 0;	/* Signal we are unable to set the direction.  */
 }
 stub_warning (fesetround)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/feupdateenv.c b/sysdeps/generic/feupdateenv.c
index 2e9c8fdac0..cc6f59d4ce 100644
--- a/sysdeps/stub/feupdateenv.c
+++ b/sysdeps/generic/feupdateenv.c
@@ -25,3 +25,4 @@ feupdateenv (const fenv_t *envp)
 {
 }
 stub_warning (feupdateenv)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/fexecve.c b/sysdeps/generic/fexecve.c
index eddbe24d99..f2ea896cac 100644
--- a/sysdeps/stub/fexecve.c
+++ b/sysdeps/generic/fexecve.c
@@ -40,3 +40,4 @@ fexecve (fd, argv, envp)
 }
 
 stub_warning (fexecve)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/fgetexcptflg.c b/sysdeps/generic/fgetexcptflg.c
index 18beff4359..94f36f7f21 100644
--- a/sysdeps/stub/fgetexcptflg.c
+++ b/sysdeps/generic/fgetexcptflg.c
@@ -25,3 +25,4 @@ fegetexceptflag (fexcept_t *flagp, int excepts)
 {
 }
 stub_warning (fegetexceptflag)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/flock.c b/sysdeps/generic/flock.c
index e0701387d4..b096637d20 100644
--- a/sysdeps/stub/flock.c
+++ b/sysdeps/generic/flock.c
@@ -33,3 +33,4 @@ __flock (fd, operation)
 weak_alias (__flock, flock)
 
 stub_warning (flock)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/fork.c b/sysdeps/generic/fork.c
index a7f4e5d825..06a3235472 100644
--- a/sysdeps/stub/fork.c
+++ b/sysdeps/generic/fork.c
@@ -32,3 +32,4 @@ __fork ()
 stub_warning (fork)
 
 weak_alias (__fork, fork)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/fpathconf.c b/sysdeps/generic/fpathconf.c
index 705f7552ee..761e5c215c 100644
--- a/sysdeps/stub/fpathconf.c
+++ b/sysdeps/generic/fpathconf.c
@@ -59,3 +59,4 @@ __fpathconf (fd, name)
 weak_alias (__fpathconf, fpathconf)
 
 stub_warning (fpathconf)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/fpu_control.h b/sysdeps/generic/fpu_control.h
index e91638d008..e91638d008 100644
--- a/sysdeps/stub/fpu_control.h
+++ b/sysdeps/generic/fpu_control.h
diff --git a/sysdeps/stub/fraiseexcpt.c b/sysdeps/generic/fraiseexcpt.c
index b03192c3d6..5f24782652 100644
--- a/sysdeps/stub/fraiseexcpt.c
+++ b/sysdeps/generic/fraiseexcpt.c
@@ -25,3 +25,4 @@ feraiseexcept (int excepts)
 {
 }
 stub_warning (feraiseexcept)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/fsetexcptflg.c b/sysdeps/generic/fsetexcptflg.c
index e352244e6f..b3a6375851 100644
--- a/sysdeps/stub/fsetexcptflg.c
+++ b/sysdeps/generic/fsetexcptflg.c
@@ -25,3 +25,4 @@ fesetexceptflag (const fexcept_t *flagp, int excepts)
 {
 }
 stub_warning (fesetexceptflag)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/fstatfs.c b/sysdeps/generic/fstatfs.c
index e7c40d8006..e716e18b49 100644
--- a/sysdeps/stub/fstatfs.c
+++ b/sysdeps/generic/fstatfs.c
@@ -31,3 +31,4 @@ __fstatfs (int fd, struct statfs *buf)
 stub_warning (fstatfs)
 
 weak_alias (__fstatfs, fstatfs)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/fstatfs64.c b/sysdeps/generic/fstatfs64.c
index b2dba0f38b..99a2452558 100644
--- a/sysdeps/stub/fstatfs64.c
+++ b/sysdeps/generic/fstatfs64.c
@@ -29,3 +29,4 @@ fstatfs64 (int fd, struct statfs64 *buf)
   return -1;
 }
 stub_warning (fstatfs64)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/fsync.c b/sysdeps/generic/fsync.c
index d268adc065..9177cf88b0 100644
--- a/sysdeps/stub/fsync.c
+++ b/sysdeps/generic/fsync.c
@@ -30,3 +30,4 @@ fsync (fd)
 
 
 stub_warning (fsync)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/ftestexcept.c b/sysdeps/generic/ftestexcept.c
index 7227c21a48..c964790011 100644
--- a/sysdeps/stub/ftestexcept.c
+++ b/sysdeps/generic/ftestexcept.c
@@ -26,3 +26,4 @@ fetestexcept (int excepts)
   return 0;
 }
 stub_warning (fetestexcept)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/ftruncate.c b/sysdeps/generic/ftruncate.c
index c84ed4ab1b..8e067ac2b8 100644
--- a/sysdeps/stub/ftruncate.c
+++ b/sysdeps/generic/ftruncate.c
@@ -31,3 +31,4 @@ ftruncate (fd, length)
 }
 
 stub_warning (ftruncate)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/fxstat.c b/sysdeps/generic/fxstat.c
index 0110c5fda0..b070b86179 100644
--- a/sysdeps/stub/fxstat.c
+++ b/sysdeps/generic/fxstat.c
@@ -47,3 +47,4 @@ __fxstat (int vers, int fd, struct stat *buf)
 stub_warning (fstat)
 
 weak_alias (__fxstat, _fxstat)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/fxstat64.c b/sysdeps/generic/fxstat64.c
index 93ec312d3e..c8da8a4271 100644
--- a/sysdeps/stub/fxstat64.c
+++ b/sysdeps/generic/fxstat64.c
@@ -45,3 +45,4 @@ __fxstat64 (int vers, int fd, struct stat64 *buf)
   return -1;
 }
 stub_warning (fstat64)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/gai_strerror.c b/sysdeps/generic/gai_strerror.c
index b63f0e2623..b63f0e2623 100644
--- a/sysdeps/stub/gai_strerror.c
+++ b/sysdeps/generic/gai_strerror.c
diff --git a/sysdeps/stub/getaddrinfo.c b/sysdeps/generic/getaddrinfo.c
index 5b8bb0ea94..c099723b3e 100644
--- a/sysdeps/stub/getaddrinfo.c
+++ b/sysdeps/generic/getaddrinfo.c
@@ -36,3 +36,4 @@ freeaddrinfo (struct addrinfo *ai)
   /* Nothing.  */
 }
 stub_warning (freeaddrinfo)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/getcwd.c b/sysdeps/generic/getcwd.c
index 1ba732e6ec..6df4a08054 100644
--- a/sysdeps/stub/getcwd.c
+++ b/sysdeps/generic/getcwd.c
@@ -37,3 +37,4 @@ weak_alias (__getcwd, getcwd)
 
 stub_warning (__getcwd)
 stub_warning (getcwd)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/getdents.c b/sysdeps/generic/getdents.c
index 652eda2bc7..06a6c030ed 100644
--- a/sysdeps/stub/getdents.c
+++ b/sysdeps/generic/getdents.c
@@ -34,3 +34,4 @@ __getdirentries (fd, buf, nbytes, basep)
 weak_alias (__getdirentries, getdirentries)
 
 stub_warning (getdirentries)
+#include <stub-tag.h>
diff --git a/sysdeps/generic/getdomain.c b/sysdeps/generic/getdomain.c
index ab9cbd4bd0..250aec68e2 100644
--- a/sysdeps/generic/getdomain.c
+++ b/sysdeps/generic/getdomain.c
@@ -54,5 +54,6 @@ getdomainname (name, len)
 }
 
 stub_warning (getdomainname)
+#include <stub-tag.h>
 
 #endif
diff --git a/sysdeps/stub/getdtsz.c b/sysdeps/generic/getdtsz.c
index 41b342fb3e..a4eb78488f 100644
--- a/sysdeps/stub/getdtsz.c
+++ b/sysdeps/generic/getdtsz.c
@@ -30,3 +30,4 @@ __getdtablesize ()
 stub_warning (getdtablesize)
 
 weak_alias (__getdtablesize, getdtablesize)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/getegid.c b/sysdeps/generic/getegid.c
index f817b4c845..2b9b9032fd 100644
--- a/sysdeps/stub/getegid.c
+++ b/sysdeps/generic/getegid.c
@@ -29,3 +29,4 @@ __getegid ()
 stub_warning (getegid)
 
 weak_alias (__getegid, getegid)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/geteuid.c b/sysdeps/generic/geteuid.c
index 6858a942ba..0a89417012 100644
--- a/sysdeps/stub/geteuid.c
+++ b/sysdeps/generic/geteuid.c
@@ -30,3 +30,4 @@ __geteuid ()
 stub_warning (geteuid)
 
 weak_alias (__geteuid, geteuid)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/getgid.c b/sysdeps/generic/getgid.c
index 3d90c3a440..d87aea1f5c 100644
--- a/sysdeps/stub/getgid.c
+++ b/sysdeps/generic/getgid.c
@@ -30,3 +30,4 @@ __getgid ()
 stub_warning (getgid)
 
 weak_alias (__getgid, getgid)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/getgroups.c b/sysdeps/generic/getgroups.c
index 6054bc391f..ae11496a4c 100644
--- a/sysdeps/stub/getgroups.c
+++ b/sysdeps/generic/getgroups.c
@@ -45,3 +45,4 @@ stub_warning (getgroups);
 #endif
 
 weak_alias (__getgroups, getgroups)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/gethostid.c b/sysdeps/generic/gethostid.c
index 47db79fc6b..96bb3ea7a7 100644
--- a/sysdeps/stub/gethostid.c
+++ b/sysdeps/generic/gethostid.c
@@ -29,3 +29,4 @@ gethostid ()
 
 
 stub_warning (gethostid)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/gethostname.c b/sysdeps/generic/gethostname.c
index 93afd350d0..ad09b00827 100644
--- a/sysdeps/stub/gethostname.c
+++ b/sysdeps/generic/gethostname.c
@@ -33,3 +33,4 @@ __gethostname (name, len)
 stub_warning (gethostname)
 
 weak_alias (__gethostname, gethostname)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/getitimer.c b/sysdeps/generic/getitimer.c
index 2c852e7a5c..5f4f258c49 100644
--- a/sysdeps/stub/getitimer.c
+++ b/sysdeps/generic/getitimer.c
@@ -39,3 +39,4 @@ __getitimer (which, value)
 stub_warning (getitimer)
 
 weak_alias (__getitimer, getitimer)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/getlogin.c b/sysdeps/generic/getlogin.c
index 34acbc38a9..248d040d9f 100644
--- a/sysdeps/stub/getlogin.c
+++ b/sysdeps/generic/getlogin.c
@@ -30,3 +30,4 @@ getlogin (void)
 }
 
 stub_warning (getlogin)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/getlogin_r.c b/sysdeps/generic/getlogin_r.c
index 1b6145c12d..7d40c1a107 100644
--- a/sysdeps/stub/getlogin_r.c
+++ b/sysdeps/generic/getlogin_r.c
@@ -33,3 +33,4 @@ getlogin_r (name, name_len)
 }
 
 stub_warning (getlogin_r)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/getpagesize.c b/sysdeps/generic/getpagesize.c
index 363151be21..2289b973d7 100644
--- a/sysdeps/stub/getpagesize.c
+++ b/sysdeps/generic/getpagesize.c
@@ -29,3 +29,4 @@ __getpagesize ()
 stub_warning (getpagesize)
 
 weak_alias (__getpagesize, getpagesize)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/getpeername.c b/sysdeps/generic/getpeername.c
index 5d513aca1b..bd38cb4def 100644
--- a/sysdeps/stub/getpeername.c
+++ b/sysdeps/generic/getpeername.c
@@ -33,3 +33,4 @@ getpeername (fd, addr, len)
 
 
 stub_warning (getpeername)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/getpgid.c b/sysdeps/generic/getpgid.c
index 5de37f3e1b..7423e118f0 100644
--- a/sysdeps/stub/getpgid.c
+++ b/sysdeps/generic/getpgid.c
@@ -29,3 +29,4 @@ __getpgid (pid)
 weak_alias (__getpgid, getpgid)
 
 stub_warning (getpgid)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/getpid.c b/sysdeps/generic/getpid.c
index e8baf26f2e..8b2fb9cde7 100644
--- a/sysdeps/stub/getpid.c
+++ b/sysdeps/generic/getpid.c
@@ -30,3 +30,4 @@ __getpid ()
 stub_warning (getpid)
 
 weak_alias (__getpid, getpid)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/getppid.c b/sysdeps/generic/getppid.c
index e9e4fff68a..f05b6caf2c 100644
--- a/sysdeps/stub/getppid.c
+++ b/sysdeps/generic/getppid.c
@@ -30,3 +30,4 @@ __getppid ()
 stub_warning (getppid)
 
 weak_alias (__getppid, getppid)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/getpriority.c b/sysdeps/generic/getpriority.c
index a2dd7cb907..ce9eb59f0d 100644
--- a/sysdeps/stub/getpriority.c
+++ b/sysdeps/generic/getpriority.c
@@ -33,3 +33,4 @@ getpriority (which, who)
 }
 
 stub_warning (getpriority)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/getrlimit.c b/sysdeps/generic/getrlimit.c
index 06f3eb94a4..c283f77038 100644
--- a/sysdeps/stub/getrlimit.c
+++ b/sysdeps/generic/getrlimit.c
@@ -30,3 +30,4 @@ __getrlimit (enum __rlimit_resource resource, struct rlimit *rlimits)
 weak_alias (__getrlimit, getrlimit)
 
 stub_warning (getrlimit)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/getrlimit64.c b/sysdeps/generic/getrlimit64.c
index 6f12cad84b..6c581edf72 100644
--- a/sysdeps/stub/getrlimit64.c
+++ b/sysdeps/generic/getrlimit64.c
@@ -29,3 +29,4 @@ getrlimit64 (enum __rlimit_resource resource, struct rlimit64 *rlimits)
 }
 
 stub_warning (getrlimit64)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/getrusage.c b/sysdeps/generic/getrusage.c
index 1db5d08b86..a6f0e67826 100644
--- a/sysdeps/stub/getrusage.c
+++ b/sysdeps/generic/getrusage.c
@@ -32,3 +32,4 @@ __getrusage (who, usage)
 stub_warning (getrusage)
 
 weak_alias (__getrusage, getrusage)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/getsid.c b/sysdeps/generic/getsid.c
index 5c65311ce0..11efbf67a8 100644
--- a/sysdeps/stub/getsid.c
+++ b/sysdeps/generic/getsid.c
@@ -28,3 +28,4 @@ getsid (pid_t pid)
   return (pid_t) -1;
 }
 stub_warning (getsid)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/getsockname.c b/sysdeps/generic/getsockname.c
index f0d46dbc3c..37095ff2b5 100644
--- a/sysdeps/stub/getsockname.c
+++ b/sysdeps/generic/getsockname.c
@@ -32,3 +32,4 @@ getsockname (fd, addr, len)
 
 
 stub_warning (getsockname)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/getsockopt.c b/sysdeps/generic/getsockopt.c
index 6f3c866b46..0b151bd9ec 100644
--- a/sysdeps/stub/getsockopt.c
+++ b/sysdeps/generic/getsockopt.c
@@ -35,3 +35,4 @@ getsockopt (fd, level, optname, optval, optlen)
 }
 
 stub_warning (getsockopt)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/getsysstats.c b/sysdeps/generic/getsysstats.c
index 0b5dfabf1d..d43a86ae5a 100644
--- a/sysdeps/stub/getsysstats.c
+++ b/sysdeps/generic/getsysstats.c
@@ -66,3 +66,4 @@ __get_avphys_pages ()
 weak_alias (__get_avphys_pages, get_avphys_pages)
 
 stub_warning (get_avphys_pages)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/gettimeofday.c b/sysdeps/generic/gettimeofday.c
index de26242eb2..ff7689d374 100644
--- a/sysdeps/stub/gettimeofday.c
+++ b/sysdeps/generic/gettimeofday.c
@@ -33,3 +33,4 @@ __gettimeofday (tv, tz)
 stub_warning (gettimeofday)
 
 weak_alias (__gettimeofday, gettimeofday)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/getuid.c b/sysdeps/generic/getuid.c
index 2afb9678b7..37afc6f6fc 100644
--- a/sysdeps/stub/getuid.c
+++ b/sysdeps/generic/getuid.c
@@ -30,3 +30,4 @@ __getuid ()
 stub_warning (getuid)
 
 weak_alias (__getuid, getuid)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/gtty.c b/sysdeps/generic/gtty.c
index 8d89c132ca..3505b9f7bf 100644
--- a/sysdeps/stub/gtty.c
+++ b/sysdeps/generic/gtty.c
@@ -37,3 +37,4 @@ gtty (fd, params)
 }
 
 stub_warning (gtty)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/if_index.c b/sysdeps/generic/if_index.c
index ca859f75fc..c7022d8b07 100644
--- a/sysdeps/stub/if_index.c
+++ b/sysdeps/generic/if_index.c
@@ -49,3 +49,4 @@ if_nameindex (void)
   return NULL;
 }
 stub_warning (if_nameindex)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/init-first.c b/sysdeps/generic/init-first.c
index dacefdcb63..dacefdcb63 100644
--- a/sysdeps/stub/init-first.c
+++ b/sysdeps/generic/init-first.c
diff --git a/sysdeps/stub/init-posix.c b/sysdeps/generic/init-posix.c
index 8e37bb6861..8e37bb6861 100644
--- a/sysdeps/stub/init-posix.c
+++ b/sysdeps/generic/init-posix.c
diff --git a/sysdeps/stub/intr-msg.h b/sysdeps/generic/intr-msg.h
index 0186aa3323..0186aa3323 100644
--- a/sysdeps/stub/intr-msg.h
+++ b/sysdeps/generic/intr-msg.h
diff --git a/sysdeps/stub/ioctl.c b/sysdeps/generic/ioctl.c
index c7e0d31b4f..019fb0e0cd 100644
--- a/sysdeps/stub/ioctl.c
+++ b/sysdeps/generic/ioctl.c
@@ -32,3 +32,4 @@ __ioctl (fd, request)
 stub_warning (ioctl)
 
 weak_alias (__ioctl, ioctl)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/isatty.c b/sysdeps/generic/isatty.c
index f5332f1f89..824d09b3cc 100644
--- a/sysdeps/stub/isatty.c
+++ b/sysdeps/generic/isatty.c
@@ -31,3 +31,4 @@ __isatty (fd)
 weak_alias (__isatty, isatty)
 
 stub_warning (isatty)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/isfdtype.c b/sysdeps/generic/isfdtype.c
index 395a931f5e..0d22a93477 100644
--- a/sysdeps/stub/isfdtype.c
+++ b/sysdeps/generic/isfdtype.c
@@ -28,3 +28,4 @@ isfdtype (int fildes, int fdtype)
   return -1;
 }
 stub_warning (isfdtype)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/jmp-unwind.c b/sysdeps/generic/jmp-unwind.c
index 083dc74a83..083dc74a83 100644
--- a/sysdeps/stub/jmp-unwind.c
+++ b/sysdeps/generic/jmp-unwind.c
diff --git a/sysdeps/stub/k_cosl.c b/sysdeps/generic/k_cosl.c
index 10016ab72e..61af3372a1 100644
--- a/sysdeps/stub/k_cosl.c
+++ b/sysdeps/generic/k_cosl.c
@@ -11,3 +11,4 @@ __kernel_cosl (long double x, long double y)
 }
 
 stub_warning (__kernel_cosl)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/k_rem_pio2l.c b/sysdeps/generic/k_rem_pio2l.c
index 01bf158249..236eb30dd9 100644
--- a/sysdeps/stub/k_rem_pio2l.c
+++ b/sysdeps/generic/k_rem_pio2l.c
@@ -13,3 +13,4 @@ __kernel_rem_pio2l (long double *x, long double *y, int e0, int nx, int prec,
 }
 
 stub_warning (__kernel_rem_pio2l)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/k_sinl.c b/sysdeps/generic/k_sinl.c
index 40cf22a596..07dddcecb2 100644
--- a/sysdeps/stub/k_sinl.c
+++ b/sysdeps/generic/k_sinl.c
@@ -11,3 +11,4 @@ __kernel_sinl (long double x, long double y)
 }
 
 stub_warning (__kernel_sinl)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/k_tanl.c b/sysdeps/generic/k_tanl.c
index 95ffc23bd9..1504a1cd90 100644
--- a/sysdeps/stub/k_tanl.c
+++ b/sysdeps/generic/k_tanl.c
@@ -11,3 +11,4 @@ __kernel_tanl (long double x, long double y, int iy)
 }
 
 stub_warning (__kernel_tanl)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/kill.c b/sysdeps/generic/kill.c
index 9993d195e2..0d035d4bb6 100644
--- a/sysdeps/stub/kill.c
+++ b/sysdeps/generic/kill.c
@@ -34,3 +34,4 @@ __kill (pid, sig)
 stub_warning (kill)
 
 weak_alias (__kill, kill)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/killpg.c b/sysdeps/generic/killpg.c
index 91a62eed47..b9c8b8c26e 100644
--- a/sysdeps/stub/killpg.c
+++ b/sysdeps/generic/killpg.c
@@ -33,3 +33,4 @@ killpg (pgrp, sig)
 }
 
 stub_warning (killpg)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/lchown.c b/sysdeps/generic/lchown.c
index f3aa2a1425..e428798c30 100644
--- a/sysdeps/stub/lchown.c
+++ b/sysdeps/generic/lchown.c
@@ -40,3 +40,4 @@ __lchown (file, owner, group)
 stub_warning (lchown)
 
 weak_alias (__lchown, lchown)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/ldbl2mpn.c b/sysdeps/generic/ldbl2mpn.c
index e456d59e1d..e456d59e1d 100644
--- a/sysdeps/stub/ldbl2mpn.c
+++ b/sysdeps/generic/ldbl2mpn.c
diff --git a/sysdeps/stub/libc_fatal.c b/sysdeps/generic/libc_fatal.c
index a5489ed39f..a5489ed39f 100644
--- a/sysdeps/stub/libc_fatal.c
+++ b/sysdeps/generic/libc_fatal.c
diff --git a/sysdeps/stub/link.c b/sysdeps/generic/link.c
index 213dcdfadc..6d55a749b3 100644
--- a/sysdeps/stub/link.c
+++ b/sysdeps/generic/link.c
@@ -39,3 +39,4 @@ __link (from, to)
 stub_warning (link)
 
 weak_alias (__link, link)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/listen.c b/sysdeps/generic/listen.c
index 85fa895596..3d557136cf 100644
--- a/sysdeps/stub/listen.c
+++ b/sysdeps/generic/listen.c
@@ -33,3 +33,4 @@ listen (fd, n)
 
 
 stub_warning (listen)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/lockfile.c b/sysdeps/generic/lockfile.c
index 143e9901dc..143e9901dc 100644
--- a/sysdeps/stub/lockfile.c
+++ b/sysdeps/generic/lockfile.c
diff --git a/sysdeps/stub/longjmp-ts.c b/sysdeps/generic/longjmp-ts.c
index 201be7e867..201be7e867 100644
--- a/sysdeps/stub/longjmp-ts.c
+++ b/sysdeps/generic/longjmp-ts.c
diff --git a/sysdeps/stub/lseek.c b/sysdeps/generic/lseek.c
index 7d9e0964f8..879b05a1c4 100644
--- a/sysdeps/stub/lseek.c
+++ b/sysdeps/generic/lseek.c
@@ -49,3 +49,4 @@ __lseek (fd, offset, whence)
 stub_warning (lseek)
 
 weak_alias (__lseek, lseek)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/lseek64.c b/sysdeps/generic/lseek64.c
index 71d58ba1a6..a2ffe2e0bd 100644
--- a/sysdeps/stub/lseek64.c
+++ b/sysdeps/generic/lseek64.c
@@ -47,3 +47,4 @@ lseek64 (fd, offset, whence)
   return -1;
 }
 stub_warning (lseek64)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/lxstat64.c b/sysdeps/generic/lxstat64.c
index 78e0b82bde..7916fdca05 100644
--- a/sysdeps/stub/lxstat64.c
+++ b/sysdeps/generic/lxstat64.c
@@ -35,3 +35,4 @@ __lxstat64 (int vers, const char *file, struct stat64 *buf)
   return -1;
 }
 stub_warning (lstat64)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/machine-lock.h b/sysdeps/generic/machine-lock.h
index 3776bb0049..3776bb0049 100644
--- a/sysdeps/stub/machine-lock.h
+++ b/sysdeps/generic/machine-lock.h
diff --git a/sysdeps/stub/machine-sp.h b/sysdeps/generic/machine-sp.h
index 6d8ad485e2..6d8ad485e2 100644
--- a/sysdeps/stub/machine-sp.h
+++ b/sysdeps/generic/machine-sp.h
diff --git a/sysdeps/stub/madvise.c b/sysdeps/generic/madvise.c
index 244be3f3b9..5431bda111 100644
--- a/sysdeps/stub/madvise.c
+++ b/sysdeps/generic/madvise.c
@@ -24,10 +24,11 @@
    for the region starting at ADDR and extending LEN bytes.  */
 
 int
-madvise (caddr_t addr, size_t len, int advice)
+madvise (__ptr_t addr, size_t len, int advice)
 {
   __set_errno (ENOSYS);
   return -1;
 }
 
 stub_warning (madvise)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/mkdir.c b/sysdeps/generic/mkdir.c
index 9a6cac52db..fe6c719427 100644
--- a/sysdeps/stub/mkdir.c
+++ b/sysdeps/generic/mkdir.c
@@ -40,3 +40,4 @@ __mkdir (path, mode)
 stub_warning (mkdir)
 
 weak_alias (__mkdir, mkdir)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/mkfifo.c b/sysdeps/generic/mkfifo.c
index 5404b3b3ce..9163680bc9 100644
--- a/sysdeps/stub/mkfifo.c
+++ b/sysdeps/generic/mkfifo.c
@@ -40,3 +40,4 @@ mkfifo (path, mode)
 
 
 stub_warning (mkfifo)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/mkstemp.c b/sysdeps/generic/mkstemp.c
index ec78145ead..c84e8eb4c2 100644
--- a/sysdeps/stub/mkstemp.c
+++ b/sysdeps/generic/mkstemp.c
@@ -39,3 +39,4 @@ mkstemp (template)
 }
 
 stub_warning (mkstemp)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/mktemp.c b/sysdeps/generic/mktemp.c
index 7780140a7a..7d53f01c04 100644
--- a/sysdeps/stub/mktemp.c
+++ b/sysdeps/generic/mktemp.c
@@ -38,3 +38,4 @@ mktemp (template)
 }
 
 stub_warning (mktemp)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/mmap.c b/sysdeps/generic/mmap.c
index 02fb8d780d..fc43c0b09d 100644
--- a/sysdeps/stub/mmap.c
+++ b/sysdeps/generic/mmap.c
@@ -25,16 +25,17 @@
    is nonzero, it is the desired mapping address.  If the MAP_FIXED bit is
    set in FLAGS, the mapping will be at ADDR exactly (which must be
    page-aligned); otherwise the system chooses a convenient nearby address.
-   The return value is the actual mapping address chosen or (caddr_t) -1
+   The return value is the actual mapping address chosen or MAP_FAILED
    for errors (in which case `errno' is set).  A successful `mmap' call
    deallocates any previous mapping for the affected region.  */
 
-caddr_t
-__mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
+__ptr_t
+__mmap (__ptr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
 {
   __set_errno (ENOSYS);
-  return (caddr_t) -1;
+  return MAP_FAILED;
 }
 
 stub_warning (mmap)
+#include <stub-tag.h>
 weak_alias (__mmap, mmap)
diff --git a/sysdeps/stub/mpn2dbl.c b/sysdeps/generic/mpn2dbl.c
index 37ceab6fd6..37ceab6fd6 100644
--- a/sysdeps/stub/mpn2dbl.c
+++ b/sysdeps/generic/mpn2dbl.c
diff --git a/sysdeps/stub/mpn2flt.c b/sysdeps/generic/mpn2flt.c
index 53731bcf97..53731bcf97 100644
--- a/sysdeps/stub/mpn2flt.c
+++ b/sysdeps/generic/mpn2flt.c
diff --git a/sysdeps/stub/mpn2ldbl.c b/sysdeps/generic/mpn2ldbl.c
index c269ce689b..c269ce689b 100644
--- a/sysdeps/stub/mpn2ldbl.c
+++ b/sysdeps/generic/mpn2ldbl.c
diff --git a/sysdeps/stub/mprotect.c b/sysdeps/generic/mprotect.c
index 262fa850d4..d9252fe903 100644
--- a/sysdeps/stub/mprotect.c
+++ b/sysdeps/generic/mprotect.c
@@ -25,7 +25,7 @@
    (and sets errno).  */
 
 int
-__mprotect (caddr_t addr, size_t len, int prot)
+__mprotect (__ptr_t addr, size_t len, int prot)
 {
   __set_errno (ENOSYS);
   return -1;
@@ -33,3 +33,4 @@ __mprotect (caddr_t addr, size_t len, int prot)
 weak_alias (__mprotect, mprotect)
 
 stub_warning (mprotect)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/msgctl.c b/sysdeps/generic/msgctl.c
index 889a1efdcb..8a973397f4 100644
--- a/sysdeps/stub/msgctl.c
+++ b/sysdeps/generic/msgctl.c
@@ -34,3 +34,4 @@ msgctl (msqid, cmd, buf)
 }
 
 stub_warning (msgctl)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/msgget.c b/sysdeps/generic/msgget.c
index 17f649e89d..c00804d37d 100644
--- a/sysdeps/stub/msgget.c
+++ b/sysdeps/generic/msgget.c
@@ -33,3 +33,4 @@ msgget (key, msgflg)
 }
 
 stub_warning (msgget)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/msgrcv.c b/sysdeps/generic/msgrcv.c
index 201c2cf4d5..e233b6d041 100644
--- a/sysdeps/stub/msgrcv.c
+++ b/sysdeps/generic/msgrcv.c
@@ -39,3 +39,4 @@ msgrcv (msqid, msgp, msgsz, msgtyp, msgflg)
 }
 
 stub_warning (msgrcv)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/msgsnd.c b/sysdeps/generic/msgsnd.c
index c7fffd7950..993895290b 100644
--- a/sysdeps/stub/msgsnd.c
+++ b/sysdeps/generic/msgsnd.c
@@ -38,3 +38,4 @@ msgsnd (msqid, msgp, msgsz, msgflg)
 }
 
 stub_warning (msgsnd)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/msync.c b/sysdeps/generic/msync.c
index c8cbe430a5..d1cb2d7c6d 100644
--- a/sysdeps/stub/msync.c
+++ b/sysdeps/generic/msync.c
@@ -25,10 +25,11 @@
    unpredictable before this is done.  */
 
 int
-msync (caddr_t addr, size_t len, int flags)
+msync (__ptr_t addr, size_t len, int flags)
 {
   __set_errno (ENOSYS);
   return -1;
 }
 
 stub_warning (msync)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/munmap.c b/sysdeps/generic/munmap.c
index 4802a58f7f..9c2217bb6d 100644
--- a/sysdeps/stub/munmap.c
+++ b/sysdeps/generic/munmap.c
@@ -24,11 +24,12 @@
    bytes.  Returns 0 if successful, -1 for errors (and sets errno).  */
 
 int
-__munmap (caddr_t addr, size_t len)
+__munmap (__ptr_t addr, size_t len)
 {
   __set_errno (ENOSYS);
   return -1;
 }
 
 stub_warning (munmap)
+#include <stub-tag.h>
 weak_alias (__munmap, munmap)
diff --git a/sysdeps/stub/nanosleep.c b/sysdeps/generic/nanosleep.c
index 0fcbb0d402..1f9704e2d9 100644
--- a/sysdeps/stub/nanosleep.c
+++ b/sysdeps/generic/nanosleep.c
@@ -32,3 +32,4 @@ stub_warning (nanosleep)
 
 weak_alias (__libc_nanosleep, __nanosleep)
 weak_alias (__libc_nanosleep, nanosleep)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/nice.c b/sysdeps/generic/nice.c
index 1e2e6a2a10..f58b8c4f52 100644
--- a/sysdeps/stub/nice.c
+++ b/sysdeps/generic/nice.c
@@ -30,3 +30,4 @@ nice (incr)
 }
 
 stub_warning (nice)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/nlist.c b/sysdeps/generic/nlist.c
index 006c902454..5d7a08e24c 100644
--- a/sysdeps/stub/nlist.c
+++ b/sysdeps/generic/nlist.c
@@ -40,3 +40,4 @@ nlist (file, nl)
 
 
 stub_warning (nlist)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/open.c b/sysdeps/generic/open.c
index 6b3800896b..cd7b0e051c 100644
--- a/sysdeps/stub/open.c
+++ b/sysdeps/generic/open.c
@@ -50,3 +50,4 @@ __open (file, oflag)
 stub_warning (open)
 
 weak_alias (__open, open)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/open64.c b/sysdeps/generic/open64.c
index c020d887bd..16e19730f4 100644
--- a/sysdeps/stub/open64.c
+++ b/sysdeps/generic/open64.c
@@ -50,3 +50,4 @@ __open64 (file, oflag)
 weak_alias (__open64, open64)
 
 stub_warning (open64)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/opendir.c b/sysdeps/generic/opendir.c
index fd8ad5029c..6b7f14e9f8 100644
--- a/sysdeps/stub/opendir.c
+++ b/sysdeps/generic/opendir.c
@@ -31,3 +31,4 @@ __opendir (const char *name)
 weak_alias (__opendir, opendir)
 
 stub_warning (opendir)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/pathconf.c b/sysdeps/generic/pathconf.c
index 4b0c94946d..b3c2c88a4b 100644
--- a/sysdeps/stub/pathconf.c
+++ b/sysdeps/generic/pathconf.c
@@ -38,3 +38,4 @@ __pathconf (path, name)
 weak_alias (__pathconf, pathconf)
 
 stub_warning (pathconf)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/pause.c b/sysdeps/generic/pause.c
index 22664e6c3b..18742e8101 100644
--- a/sysdeps/stub/pause.c
+++ b/sysdeps/generic/pause.c
@@ -31,3 +31,4 @@ pause ()
 }
 
 stub_warning (pause)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/pipe.c b/sysdeps/generic/pipe.c
index b566a19560..26cf5230d4 100644
--- a/sysdeps/stub/pipe.c
+++ b/sysdeps/generic/pipe.c
@@ -40,3 +40,4 @@ __pipe (__pipedes)
 stub_warning (pipe)
 
 weak_alias (__pipe, pipe)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/pipestream.c b/sysdeps/generic/pipestream.c
index c8ab70e916..eead474f74 100644
--- a/sysdeps/stub/pipestream.c
+++ b/sysdeps/generic/pipestream.c
@@ -57,3 +57,4 @@ pclose (stream)
 
 stub_warning (popen)
 stub_warning (pclose)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/poll.c b/sysdeps/generic/poll.c
index 509ebf8a24..f3d678e40d 100644
--- a/sysdeps/stub/poll.c
+++ b/sysdeps/generic/poll.c
@@ -36,3 +36,4 @@ poll (fds, nfds, timeout)
 }
 
 stub_warning (poll)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/pread.c b/sysdeps/generic/pread.c
index 8d937c76c5..5fdaf7b4af 100644
--- a/sysdeps/stub/pread.c
+++ b/sysdeps/generic/pread.c
@@ -41,3 +41,4 @@ pread (int fd, void *buf, size_t nbytes, off_t offset)
   return -1;
 }
 stub_warning (pread)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/pread64.c b/sysdeps/generic/pread64.c
index 4223646576..fdf622250b 100644
--- a/sysdeps/stub/pread64.c
+++ b/sysdeps/generic/pread64.c
@@ -41,3 +41,4 @@ pread64 (int fd, void *buf, size_t nbytes, off64_t offset)
   return -1;
 }
 stub_warning (pread64)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/profil.c b/sysdeps/generic/profil.c
index 9613108e3a..b70e20afd7 100644
--- a/sysdeps/stub/profil.c
+++ b/sysdeps/generic/profil.c
@@ -39,3 +39,4 @@ __profil (u_short *sample_buffer, size_t size, size_t offset, u_int scale)
 }
 weak_alias (__profil, profil)
 stub_warning (profil)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/ptrace.c b/sysdeps/generic/ptrace.c
index 2a0ba4c858..5ab62bccef 100644
--- a/sysdeps/stub/ptrace.c
+++ b/sysdeps/generic/ptrace.c
@@ -100,3 +100,4 @@ ptrace (request)
 
 
 stub_warning (ptrace)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/pwrite.c b/sysdeps/generic/pwrite.c
index ee670d9670..48a1dc6089 100644
--- a/sysdeps/stub/pwrite.c
+++ b/sysdeps/generic/pwrite.c
@@ -41,3 +41,4 @@ pwrite (int fd, const void *buf, size_t nbytes, off_t offset)
   return -1;
 }
 stub_warning (pwrite)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/pwrite64.c b/sysdeps/generic/pwrite64.c
index c8c77a1880..df229f877f 100644
--- a/sysdeps/stub/pwrite64.c
+++ b/sysdeps/generic/pwrite64.c
@@ -41,3 +41,4 @@ pwrite64 (int fd, const void *buf, size_t nbytes, off64_t offset)
   return -1;
 }
 stub_warning (pwrite64)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/raise.c b/sysdeps/generic/raise.c
index 97fd5fe931..9b698fd984 100644
--- a/sysdeps/stub/raise.c
+++ b/sysdeps/generic/raise.c
@@ -32,3 +32,4 @@ weak_alias (raise, gsignal)
 
 stub_warning (raise)
 stub_warning (gsignal)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/read.c b/sysdeps/generic/read.c
index b231a18ca1..57015150fa 100644
--- a/sysdeps/stub/read.c
+++ b/sysdeps/generic/read.c
@@ -44,3 +44,4 @@ stub_warning (read)
 
 weak_alias (__libc_read, __read)
 weak_alias (__libc_read, read)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/readdir.c b/sysdeps/generic/readdir.c
index 0f003c6c4c..94e837f2d3 100644
--- a/sysdeps/stub/readdir.c
+++ b/sysdeps/generic/readdir.c
@@ -30,3 +30,4 @@ __readdir (DIR *dirp)
 weak_alias (__readdir, readdir)
 
 stub_warning (readdir)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/readdir64.c b/sysdeps/generic/readdir64.c
index fbf4bf4d54..ce84340c8e 100644
--- a/sysdeps/stub/readdir64.c
+++ b/sysdeps/generic/readdir64.c
@@ -28,3 +28,4 @@ readdir64 (DIR *dirp)
   return NULL;
 }
 stub_warning (readdir64)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/readdir64_r.c b/sysdeps/generic/readdir64_r.c
index cb143cb40c..787bdcee9f 100644
--- a/sysdeps/stub/readdir64_r.c
+++ b/sysdeps/generic/readdir64_r.c
@@ -30,3 +30,4 @@ readdir64_r (DIR *dirp, struct dirent64 *entry, struct dirent64 **result)
   return -1;
 }
 stub_warning (readdir64_r)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/readdir_r.c b/sysdeps/generic/readdir_r.c
index 422e5a0566..ae14d18160 100644
--- a/sysdeps/stub/readdir_r.c
+++ b/sysdeps/generic/readdir_r.c
@@ -32,3 +32,4 @@ __readdir_r (DIR *dirp, struct dirent *entry, struct dirent **result)
 weak_alias (__readdir_r, readdir_r)
 
 stub_warning (readdir_r)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/readlink.c b/sysdeps/generic/readlink.c
index 2319f84dff..90d9beba60 100644
--- a/sysdeps/stub/readlink.c
+++ b/sysdeps/generic/readlink.c
@@ -34,3 +34,4 @@ __readlink (path, buf, len)
 stub_warning (readlink)
 
 weak_alias (__readlink, readlink)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/readv.c b/sysdeps/generic/readv.c
index 8dd22d9649..b210d53552 100644
--- a/sysdeps/stub/readv.c
+++ b/sysdeps/generic/readv.c
@@ -37,3 +37,4 @@ __readv (fd, vector, count)
 weak_alias (__readv, readv)
 
 stub_warning (readv)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/reboot.c b/sysdeps/generic/reboot.c
index 8139aee83f..c1bce46738 100644
--- a/sysdeps/stub/reboot.c
+++ b/sysdeps/generic/reboot.c
@@ -31,3 +31,4 @@ reboot (howto)
 
 
 stub_warning (reboot)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/recv.c b/sysdeps/generic/recv.c
index 3a9fdce3ec..e59e341b21 100644
--- a/sysdeps/stub/recv.c
+++ b/sysdeps/generic/recv.c
@@ -34,3 +34,4 @@ recv (fd, buf, n, flags)
 
 
 stub_warning (recv)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/recvfrom.c b/sysdeps/generic/recvfrom.c
index 931bdbb1b5..35b281a2a1 100644
--- a/sysdeps/stub/recvfrom.c
+++ b/sysdeps/generic/recvfrom.c
@@ -36,3 +36,4 @@ recvfrom (fd, buf, n, flags, addr, addr_len)
 }
 
 stub_warning (recvfrom)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/recvmsg.c b/sysdeps/generic/recvmsg.c
index 6e2ca69f8a..625e85aae9 100644
--- a/sysdeps/stub/recvmsg.c
+++ b/sysdeps/generic/recvmsg.c
@@ -32,3 +32,4 @@ recvmsg (fd, message, flags)
 }
 
 stub_warning (recvmsg)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/remove.c b/sysdeps/generic/remove.c
index df2d3ad33f..ae9251d7f6 100644
--- a/sysdeps/stub/remove.c
+++ b/sysdeps/generic/remove.c
@@ -29,3 +29,4 @@ remove (file)
 }
 
 stub_warning (remove)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/rename.c b/sysdeps/generic/rename.c
index 29e14401c2..887a046122 100644
--- a/sysdeps/stub/rename.c
+++ b/sysdeps/generic/rename.c
@@ -38,3 +38,4 @@ rename (old, new)
 
 
 stub_warning (rename)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/revoke.c b/sysdeps/generic/revoke.c
index cca051409b..5c7a608089 100644
--- a/sysdeps/stub/revoke.c
+++ b/sysdeps/generic/revoke.c
@@ -28,3 +28,4 @@ revoke (file)
   return -1;
 }
 stub_warning (revoke)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/rewinddir.c b/sysdeps/generic/rewinddir.c
index 4aa5a31569..bea002135c 100644
--- a/sysdeps/stub/rewinddir.c
+++ b/sysdeps/generic/rewinddir.c
@@ -32,3 +32,4 @@ rewinddir (dirp)
 
 
 stub_warning (rewinddir)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/rmdir.c b/sysdeps/generic/rmdir.c
index 8b705adaad..0ea404f860 100644
--- a/sysdeps/stub/rmdir.c
+++ b/sysdeps/generic/rmdir.c
@@ -38,3 +38,4 @@ __rmdir (path)
 stub_warning (rmdir)
 
 weak_alias (__rmdir, rmdir)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/s_atanl.c b/sysdeps/generic/s_atanl.c
index 2957d702d5..d9a7eb6f8f 100644
--- a/sysdeps/stub/s_atanl.c
+++ b/sysdeps/generic/s_atanl.c
@@ -12,3 +12,4 @@ __atanl (long double x)
 weak_alias (__atanl, atanl)
 
 stub_warning (atanl)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/s_erfl.c b/sysdeps/generic/s_erfl.c
index 7ae25d6252..f329d58809 100644
--- a/sysdeps/stub/s_erfl.c
+++ b/sysdeps/generic/s_erfl.c
@@ -23,3 +23,4 @@ __erfcl (long double x)
 weak_alias (__erfcl, erfcl)
 
 stub_warning (erfcl)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/s_exp2.c b/sysdeps/generic/s_exp2.c
index 5adda4107a..4e25d38130 100644
--- a/sysdeps/stub/s_exp2.c
+++ b/sysdeps/generic/s_exp2.c
@@ -12,3 +12,4 @@ __exp2 (double x)
 weak_alias (__exp2, exp2)
 
 stub_warning (exp2)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/s_exp2f.c b/sysdeps/generic/s_exp2f.c
index f763efbe69..7928a4ce3d 100644
--- a/sysdeps/stub/s_exp2f.c
+++ b/sysdeps/generic/s_exp2f.c
@@ -12,3 +12,4 @@ __exp2f (float x)
 weak_alias (__exp2f, exp2f)
 
 stub_warning (exp2f)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/s_exp2l.c b/sysdeps/generic/s_exp2l.c
index cab2cb2a69..46ecc4eae3 100644
--- a/sysdeps/stub/s_exp2l.c
+++ b/sysdeps/generic/s_exp2l.c
@@ -12,3 +12,4 @@ __exp2l (long double x)
 weak_alias (__exp2l, exp2l)
 
 stub_warning (exp2l)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/s_expm1l.c b/sysdeps/generic/s_expm1l.c
index 38798812ff..d49c68a1f8 100644
--- a/sysdeps/stub/s_expm1l.c
+++ b/sysdeps/generic/s_expm1l.c
@@ -12,3 +12,4 @@ __expm1l (long double x)
 weak_alias (__expm1l, expm1l)
 
 stub_warning (expm1l)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/s_log1pl.c b/sysdeps/generic/s_log1pl.c
index 9e51ce2d43..e5db9078bf 100644
--- a/sysdeps/stub/s_log1pl.c
+++ b/sysdeps/generic/s_log1pl.c
@@ -12,3 +12,4 @@ __log1pl (long double x)
 weak_alias (__log1pl, log1pl)
 
 stub_warning (log1pl)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/s_log2l.c b/sysdeps/generic/s_log2l.c
index cc09569422..835cd4fed2 100644
--- a/sysdeps/stub/s_log2l.c
+++ b/sysdeps/generic/s_log2l.c
@@ -12,3 +12,4 @@ __log2l (long double x)
 weak_alias (__log2l, log2l)
 
 stub_warning (log2l)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/sched_getp.c b/sysdeps/generic/sched_getp.c
index 1c87780e5b..f599f6459b 100644
--- a/sysdeps/stub/sched_getp.c
+++ b/sysdeps/generic/sched_getp.c
@@ -31,3 +31,4 @@ __sched_getparam (pid_t pid, struct sched_param *param)
 stub_warning (sched_getparam)
 
 weak_alias (__sched_getparam, sched_getparam)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/sched_gets.c b/sysdeps/generic/sched_gets.c
index 78886e08d4..a10755fee5 100644
--- a/sysdeps/stub/sched_gets.c
+++ b/sysdeps/generic/sched_gets.c
@@ -31,3 +31,4 @@ __sched_getscheduler (pid_t pid)
 stub_warning (sched_getscheduler)
 
 weak_alias (__sched_getscheduler, sched_getscheduler)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/sched_primax.c b/sysdeps/generic/sched_primax.c
index f43969822b..e7823699a3 100644
--- a/sysdeps/stub/sched_primax.c
+++ b/sysdeps/generic/sched_primax.c
@@ -30,3 +30,4 @@ __sched_get_priority_max (int algorithm)
 stub_warning (sched_get_priority_max)
 
 weak_alias (__sched_get_priority_max, sched_get_priority_max)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/sched_primin.c b/sysdeps/generic/sched_primin.c
index 527e659326..3d1aa13848 100644
--- a/sysdeps/stub/sched_primin.c
+++ b/sysdeps/generic/sched_primin.c
@@ -30,3 +30,4 @@ __sched_get_priority_min (int algorithm)
 stub_warning (sched_get_priority_min)
 
 weak_alias (__sched_get_priority_min, sched_get_priority_min)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/sched_rr_gi.c b/sysdeps/generic/sched_rr_gi.c
index 11197eefc3..9fac72b349 100644
--- a/sysdeps/stub/sched_rr_gi.c
+++ b/sysdeps/generic/sched_rr_gi.c
@@ -31,3 +31,4 @@ __sched_rr_get_interval (pid_t pid, struct timespec *t)
 stub_warning (sched_rr_get_interval)
 
 weak_alias (__sched_rr_get_interval, sched_rr_get_interval)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/sched_setp.c b/sysdeps/generic/sched_setp.c
index d257a0e6e8..fea7c2ec36 100644
--- a/sysdeps/stub/sched_setp.c
+++ b/sysdeps/generic/sched_setp.c
@@ -31,3 +31,4 @@ __sched_setparam (pid_t pid, const struct sched_param *param)
 stub_warning (sched_setparam)
 
 weak_alias (__sched_setparam, sched_setparam)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/sched_sets.c b/sysdeps/generic/sched_sets.c
index c842b2c8a1..7de95168e2 100644
--- a/sysdeps/stub/sched_sets.c
+++ b/sysdeps/generic/sched_sets.c
@@ -31,3 +31,4 @@ __sched_setscheduler (pid_t pid, int policy, const struct sched_param *param)
 stub_warning (sched_setscheduler)
 
 weak_alias (__sched_setscheduler, sched_setscheduler)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/sched_yield.c b/sysdeps/generic/sched_yield.c
index d9e02da233..76190735f7 100644
--- a/sysdeps/stub/sched_yield.c
+++ b/sysdeps/generic/sched_yield.c
@@ -30,3 +30,4 @@ __sched_yield (void)
 stub_warning (sched_yield)
 
 weak_alias (__sched_yield, sched_yield)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/seekdir.c b/sysdeps/generic/seekdir.c
index 90bce7072a..c12d3af3c0 100644
--- a/sysdeps/stub/seekdir.c
+++ b/sysdeps/generic/seekdir.c
@@ -38,3 +38,4 @@ seekdir (dirp, pos)
 
 
 stub_warning (seekdir)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/select.c b/sysdeps/generic/select.c
index 82370209da..99fe6d7e2e 100644
--- a/sysdeps/stub/select.c
+++ b/sysdeps/generic/select.c
@@ -39,3 +39,4 @@ __select (nfds, readfds, writefds, exceptfds, timeout)
 stub_warning (select)
 
 weak_alias (__select, select)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/semctl.c b/sysdeps/generic/semctl.c
index 3da97eb3ed..297c26bb8a 100644
--- a/sysdeps/stub/semctl.c
+++ b/sysdeps/generic/semctl.c
@@ -35,3 +35,4 @@ semctl (semid, semnum, cmd, arg)
 }
 
 stub_warning (semctl)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/semget.c b/sysdeps/generic/semget.c
index 3c82e6f266..2e21bc9ac0 100644
--- a/sysdeps/stub/semget.c
+++ b/sysdeps/generic/semget.c
@@ -34,3 +34,4 @@ semget (key, nsems, semflg)
 }
 
 stub_warning (semget)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/semop.c b/sysdeps/generic/semop.c
index 81aaac3a7e..64f5951451 100644
--- a/sysdeps/stub/semop.c
+++ b/sysdeps/generic/semop.c
@@ -33,3 +33,4 @@ semop (semid, sops, nsops)
 }
 
 stub_warning (semop)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/send.c b/sysdeps/generic/send.c
index a25eb72822..0ef82948ea 100644
--- a/sysdeps/stub/send.c
+++ b/sysdeps/generic/send.c
@@ -34,3 +34,4 @@ weak_alias (__send, send)
 
 
 stub_warning (send)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/sendmsg.c b/sysdeps/generic/sendmsg.c
index fac260c256..20d8bd6f67 100644
--- a/sysdeps/stub/sendmsg.c
+++ b/sysdeps/generic/sendmsg.c
@@ -32,3 +32,4 @@ sendmsg (fd, message, flags)
 }
 
 stub_warning (sendmsg)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/sendto.c b/sysdeps/generic/sendto.c
index 47dad95dbd..f9b3c87f68 100644
--- a/sysdeps/stub/sendto.c
+++ b/sysdeps/generic/sendto.c
@@ -35,3 +35,4 @@ sendto (fd, buf, n, flags, addr, addr_len)
 }
 
 stub_warning (sendto)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/setdomain.c b/sysdeps/generic/setdomain.c
index 718905a856..7308d5ddb4 100644
--- a/sysdeps/stub/setdomain.c
+++ b/sysdeps/generic/setdomain.c
@@ -31,3 +31,4 @@ setdomainname (name, len)
 }
 
 stub_warning (setdomainname)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/setegid.c b/sysdeps/generic/setegid.c
index 8159a18333..d34d222089 100644
--- a/sysdeps/stub/setegid.c
+++ b/sysdeps/generic/setegid.c
@@ -30,3 +30,4 @@ setegid (gid)
 
 
 stub_warning (setegid)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/seteuid.c b/sysdeps/generic/seteuid.c
index 6254a20a33..9233828b97 100644
--- a/sysdeps/stub/seteuid.c
+++ b/sysdeps/generic/seteuid.c
@@ -30,3 +30,4 @@ seteuid (uid)
 
 
 stub_warning (seteuid)
+#include <stub-tag.h>
diff --git a/sysdeps/generic/setfpucw.c b/sysdeps/generic/setfpucw.c
index f7f61f6fcf..ba91a76715 100644
--- a/sysdeps/generic/setfpucw.c
+++ b/sysdeps/generic/setfpucw.c
@@ -17,7 +17,7 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#include "fpu_control.h"
+#include <fpu_control.h>
 
 void
 __setfpucw (fpu_control_t set)
diff --git a/sysdeps/stub/setgid.c b/sysdeps/generic/setgid.c
index 3577cefe68..7b71ce77c2 100644
--- a/sysdeps/stub/setgid.c
+++ b/sysdeps/generic/setgid.c
@@ -34,3 +34,4 @@ __setgid (gid)
 stub_warning (setgid)
 
 weak_alias (__setgid, setgid)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/setgroups.c b/sysdeps/generic/setgroups.c
index 1602085334..e1c2b3e04a 100644
--- a/sysdeps/stub/setgroups.c
+++ b/sysdeps/generic/setgroups.c
@@ -32,3 +32,4 @@ setgroups (n, groups)
 
 
 stub_warning (setgroups)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/sethostid.c b/sysdeps/generic/sethostid.c
index c95101244f..9bc808f15a 100644
--- a/sysdeps/stub/sethostid.c
+++ b/sysdeps/generic/sethostid.c
@@ -31,3 +31,4 @@ sethostid (id)
 
 
 stub_warning (sethostid)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/sethostname.c b/sysdeps/generic/sethostname.c
index 0d325aab42..1eba398942 100644
--- a/sysdeps/stub/sethostname.c
+++ b/sysdeps/generic/sethostname.c
@@ -32,3 +32,4 @@ sethostname (name, len)
 
 
 stub_warning (sethostname)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/setitimer.c b/sysdeps/generic/setitimer.c
index 21af5173c9..d85311359f 100644
--- a/sysdeps/stub/setitimer.c
+++ b/sysdeps/generic/setitimer.c
@@ -41,3 +41,4 @@ __setitimer (which, new, old)
 stub_warning (setitimer)
 
 weak_alias (__setitimer, setitimer)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/setjmp.c b/sysdeps/generic/setjmp.c
index 994f4ca602..8b1dfa6a83 100644
--- a/sysdeps/stub/setjmp.c
+++ b/sysdeps/generic/setjmp.c
@@ -34,3 +34,4 @@ __sigsetjmp (jmp_buf env, int savemask)
 
 
 stub_warning (__sigsetjmp)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/setlogin.c b/sysdeps/generic/setlogin.c
index 2262b50cd7..5f2b5d8e58 100644
--- a/sysdeps/stub/setlogin.c
+++ b/sysdeps/generic/setlogin.c
@@ -29,3 +29,4 @@ setlogin (name)
 }
 
 stub_warning (setlogin)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/setpgid.c b/sysdeps/generic/setpgid.c
index bca886c451..38329898e8 100644
--- a/sysdeps/stub/setpgid.c
+++ b/sysdeps/generic/setpgid.c
@@ -33,3 +33,4 @@ __setpgid (pid, pgid)
 stub_warning (setpgid)
 
 weak_alias (__setpgid, setpgid)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/setpriority.c b/sysdeps/generic/setpriority.c
index 908f8663ea..997bea82a6 100644
--- a/sysdeps/stub/setpriority.c
+++ b/sysdeps/generic/setpriority.c
@@ -32,3 +32,4 @@ setpriority (which, who, prio)
 }
 
 stub_warning (setpriority)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/setregid.c b/sysdeps/generic/setregid.c
index 2e16bad143..85708fa50c 100644
--- a/sysdeps/stub/setregid.c
+++ b/sysdeps/generic/setregid.c
@@ -33,3 +33,4 @@ __setregid (effective_gid, real_gid)
 stub_warning (setregid)
 
 weak_alias (__setregid, setregid)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/setreuid.c b/sysdeps/generic/setreuid.c
index ddfb1c2a94..0e6017714d 100644
--- a/sysdeps/stub/setreuid.c
+++ b/sysdeps/generic/setreuid.c
@@ -33,3 +33,4 @@ __setreuid (effective_uid, real_uid)
 stub_warning (setreuid)
 
 weak_alias (__setreuid, setreuid)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/setrlimit.c b/sysdeps/generic/setrlimit.c
index 7f2db6fa47..b969ea19f7 100644
--- a/sysdeps/stub/setrlimit.c
+++ b/sysdeps/generic/setrlimit.c
@@ -33,3 +33,4 @@ setrlimit (resource, rlimits)
 
 
 stub_warning (setrlimit)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/setrlimit64.c b/sysdeps/generic/setrlimit64.c
index 0f223f246c..3d1a12279f 100644
--- a/sysdeps/stub/setrlimit64.c
+++ b/sysdeps/generic/setrlimit64.c
@@ -32,3 +32,4 @@ setrlimit64 (resource, rlimits)
 }
 
 stub_warning (setrlimit64)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/setsid.c b/sysdeps/generic/setsid.c
index 3ff4eccab1..e5cb58616e 100644
--- a/sysdeps/stub/setsid.c
+++ b/sysdeps/generic/setsid.c
@@ -32,3 +32,4 @@ __setsid ()
 stub_warning (setsid)
 
 weak_alias (__setsid, setsid)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/setsockopt.c b/sysdeps/generic/setsockopt.c
index 5fad292a57..ba876438e5 100644
--- a/sysdeps/stub/setsockopt.c
+++ b/sysdeps/generic/setsockopt.c
@@ -35,3 +35,4 @@ setsockopt (fd, level, optname, optval, optlen)
 }
 
 stub_warning (setsockopt)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/settimeofday.c b/sysdeps/generic/settimeofday.c
index 231413be58..15bfbbc9b7 100644
--- a/sysdeps/stub/settimeofday.c
+++ b/sysdeps/generic/settimeofday.c
@@ -32,3 +32,4 @@ __settimeofday (tv, tz)
 stub_warning (settimeofday)
 
 weak_alias (__settimeofday, settimeofday)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/setuid.c b/sysdeps/generic/setuid.c
index dd58f368d0..eb5383bc3d 100644
--- a/sysdeps/stub/setuid.c
+++ b/sysdeps/generic/setuid.c
@@ -34,3 +34,4 @@ __setuid (uid)
 stub_warning (setuid)
 
 weak_alias (__setuid, setuid)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/shmat.c b/sysdeps/generic/shmat.c
index b33cad117b..ce2bf70018 100644
--- a/sysdeps/stub/shmat.c
+++ b/sysdeps/generic/shmat.c
@@ -35,3 +35,4 @@ shmat (shmid, shmaddr, shmflg)
 }
 
 stub_warning (shmat)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/shmctl.c b/sysdeps/generic/shmctl.c
index c03d20d44e..c9d0ee6fef 100644
--- a/sysdeps/stub/shmctl.c
+++ b/sysdeps/generic/shmctl.c
@@ -33,3 +33,4 @@ shmctl (shmid, cmd, buf)
 }
 
 stub_warning (shmctl)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/shmdt.c b/sysdeps/generic/shmdt.c
index ab9609e55f..9902d70b41 100644
--- a/sysdeps/stub/shmdt.c
+++ b/sysdeps/generic/shmdt.c
@@ -32,3 +32,4 @@ shmdt (shmaddr)
 }
 
 stub_warning (shmdt)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/shmget.c b/sysdeps/generic/shmget.c
index d86289b112..4f8eb63ea0 100644
--- a/sysdeps/stub/shmget.c
+++ b/sysdeps/generic/shmget.c
@@ -34,3 +34,4 @@ shmget (key, size, shmflg)
 }
 
 stub_warning (shmget)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/shutdown.c b/sysdeps/generic/shutdown.c
index 3e9754e6b6..55556793c0 100644
--- a/sysdeps/stub/shutdown.c
+++ b/sysdeps/generic/shutdown.c
@@ -36,3 +36,4 @@ shutdown (fd, how)
 
 
 stub_warning (shutdown)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/sigaction.c b/sysdeps/generic/sigaction.c
index e27741fd97..8efc060931 100644
--- a/sysdeps/stub/sigaction.c
+++ b/sysdeps/generic/sigaction.c
@@ -40,3 +40,4 @@ __sigaction (sig, act, oact)
 stub_warning (sigaction)
 
 weak_alias (__sigaction, sigaction)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/sigaltstack.c b/sysdeps/generic/sigaltstack.c
index 1737e5d080..b4b4e90b2d 100644
--- a/sysdeps/stub/sigaltstack.c
+++ b/sysdeps/generic/sigaltstack.c
@@ -31,3 +31,4 @@ sigaltstack (ss, oss)
 }
 
 stub_warning (sigaltstack)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/sigblock.c b/sysdeps/generic/sigblock.c
index aa7ef8845e..5eabb9dc08 100644
--- a/sysdeps/stub/sigblock.c
+++ b/sysdeps/generic/sigblock.c
@@ -30,3 +30,4 @@ __sigblock (mask)
 stub_warning (sigblock)
 
 weak_alias (__sigblock, sigblock)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/sigintr.c b/sysdeps/generic/sigintr.c
index c68b919867..a9a11e4410 100644
--- a/sysdeps/stub/sigintr.c
+++ b/sysdeps/generic/sigintr.c
@@ -32,3 +32,4 @@ siginterrupt (sig, interrupt)
 }
 
 stub_warning (siginterrupt)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/siglist.c b/sysdeps/generic/siglist.c
index ae03b1f73c..ae03b1f73c 100644
--- a/sysdeps/stub/siglist.c
+++ b/sysdeps/generic/siglist.c
diff --git a/sysdeps/stub/signal.c b/sysdeps/generic/signal.c
index 066a8cc79f..1ad3f1045e 100644
--- a/sysdeps/stub/signal.c
+++ b/sysdeps/generic/signal.c
@@ -35,3 +35,4 @@ weak_alias (signal, ssignal)
 
 stub_warning (signal)
 stub_warning (ssignal)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/sigpause.c b/sysdeps/generic/sigpause.c
index 3525e3536f..25dfff1ea5 100644
--- a/sysdeps/stub/sigpause.c
+++ b/sysdeps/generic/sigpause.c
@@ -40,3 +40,4 @@ __default_sigpause (mask)
 }
 weak_alias (__default_sigpause, sigpause)
 stub_warning (sigpause)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/sigpending.c b/sysdeps/generic/sigpending.c
index dd587ff7b0..2c1597a521 100644
--- a/sysdeps/stub/sigpending.c
+++ b/sysdeps/generic/sigpending.c
@@ -37,3 +37,4 @@ sigpending (set)
 }
 
 stub_warning (sigpending)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/sigprocmask.c b/sysdeps/generic/sigprocmask.c
index 739ebce5bb..739ebce5bb 100644
--- a/sysdeps/stub/sigprocmask.c
+++ b/sysdeps/generic/sigprocmask.c
diff --git a/sysdeps/stub/sigreturn.c b/sysdeps/generic/sigreturn.c
index c14e358ee2..13089a76bf 100644
--- a/sysdeps/stub/sigreturn.c
+++ b/sysdeps/generic/sigreturn.c
@@ -29,3 +29,4 @@ __sigreturn (context)
 stub_warning (sigreturn)
 
 weak_alias (__sigreturn, sigreturn)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/sigsetmask.c b/sysdeps/generic/sigsetmask.c
index b8e630d09c..4be31db02e 100644
--- a/sysdeps/stub/sigsetmask.c
+++ b/sysdeps/generic/sigsetmask.c
@@ -29,3 +29,4 @@ __sigsetmask (mask)
 stub_warning (sigsetmask)
 
 weak_alias (__sigsetmask, sigsetmask)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/sigstack.c b/sysdeps/generic/sigstack.c
index 6784b056b5..52b135a19f 100644
--- a/sysdeps/stub/sigstack.c
+++ b/sysdeps/generic/sigstack.c
@@ -31,3 +31,4 @@ sigstack (ss, oss)
 }
 
 stub_warning (sigstack)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/sigsuspend.c b/sysdeps/generic/sigsuspend.c
index a3f8935e9a..15166acfb7 100644
--- a/sysdeps/stub/sigsuspend.c
+++ b/sysdeps/generic/sigsuspend.c
@@ -32,3 +32,4 @@ sigsuspend (set)
 
 
 stub_warning (sigsuspend)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/sigvec.c b/sysdeps/generic/sigvec.c
index 444105480f..8cce744a03 100644
--- a/sysdeps/stub/sigvec.c
+++ b/sysdeps/generic/sigvec.c
@@ -36,3 +36,4 @@ __sigvec (sig, vec, ovec)
 stub_warning (sigvec)
 
 weak_alias (__sigvec, sigvec)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/sigwait.c b/sysdeps/generic/sigwait.c
index 28b86aa698..f34bfdf179 100644
--- a/sysdeps/stub/sigwait.c
+++ b/sysdeps/generic/sigwait.c
@@ -29,3 +29,4 @@ __sigwait (const sigset_t *set, int *sig)
 weak_alias (__sigwait, sigwait)
 
 stub_warning (sigwait)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/sleep.c b/sysdeps/generic/sleep.c
index fdc8b28887..65c1f9607d 100644
--- a/sysdeps/stub/sleep.c
+++ b/sysdeps/generic/sleep.c
@@ -38,3 +38,4 @@ __sleep (seconds)
 weak_alias (__sleep, sleep)
 
 stub_warning (sleep)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/socket.c b/sysdeps/generic/socket.c
index 9a0a1be5a0..b946c164e8 100644
--- a/sysdeps/stub/socket.c
+++ b/sysdeps/generic/socket.c
@@ -34,3 +34,4 @@ socket (domain, type, protocol)
 
 
 stub_warning (socket)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/socketpair.c b/sysdeps/generic/socketpair.c
index d2ba667843..f8c0d76889 100644
--- a/sysdeps/stub/socketpair.c
+++ b/sysdeps/generic/socketpair.c
@@ -36,3 +36,4 @@ socketpair (domain, type, protocol, fds)
 
 
 stub_warning (socketpair)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/sstk.c b/sysdeps/generic/sstk.c
index 6e8567246f..0ca36ef9f4 100644
--- a/sysdeps/stub/sstk.c
+++ b/sysdeps/generic/sstk.c
@@ -32,3 +32,4 @@ sstk (increment)
 }
 
 stub_warning (sstk)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/start.c b/sysdeps/generic/start.c
index cf7efc931a..cf7efc931a 100644
--- a/sysdeps/stub/start.c
+++ b/sysdeps/generic/start.c
diff --git a/sysdeps/stub/statfs.c b/sysdeps/generic/statfs.c
index bae8eaa8ee..8cdd1e03b1 100644
--- a/sysdeps/stub/statfs.c
+++ b/sysdeps/generic/statfs.c
@@ -31,3 +31,4 @@ __statfs (const char *file, struct statfs *buf)
 weak_alias (__statfs, statfs)
 
 stub_warning (statfs)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/statfs64.c b/sysdeps/generic/statfs64.c
index 51cde7dd27..93b640eb74 100644
--- a/sysdeps/stub/statfs64.c
+++ b/sysdeps/generic/statfs64.c
@@ -29,3 +29,4 @@ statfs64 (const char *file, struct statfs64 *buf)
   return -1;
 }
 stub_warning (statfs64)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/stdio_init.c b/sysdeps/generic/stdio_init.c
index a8e733e811..a8e733e811 100644
--- a/sysdeps/stub/stdio_init.c
+++ b/sysdeps/generic/stdio_init.c
diff --git a/sysdeps/stub/stime.c b/sysdeps/generic/stime.c
index a2a17b530d..d41d6b400f 100644
--- a/sysdeps/stub/stime.c
+++ b/sysdeps/generic/stime.c
@@ -37,3 +37,4 @@ stime (when)
 }
 
 stub_warning (stime)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/strtsupp.c b/sysdeps/generic/strtsupp.c
index 202a1ce60d..202a1ce60d 100644
--- a/sysdeps/stub/strtsupp.c
+++ b/sysdeps/generic/strtsupp.c
diff --git a/sysdeps/stub/stty.c b/sysdeps/generic/stty.c
index d947ad0691..425bca42b1 100644
--- a/sysdeps/stub/stty.c
+++ b/sysdeps/generic/stty.c
@@ -37,3 +37,4 @@ stty (fd, params)
 }
 
 stub_warning (stty)
+#include <stub-tag.h>
diff --git a/sysdeps/generic/stub_warnings b/sysdeps/generic/stub_warnings
new file mode 100644
index 0000000000..a97994ba67
--- /dev/null
+++ b/sysdeps/generic/stub_warnings
@@ -0,0 +1,270 @@
+__longjmp.c
+_exit.c
+accept.c
+access.c
+acct.c
+adjtime.c
+alarm.c
+bind.c
+brk.c
+chdir.c
+chflags.c
+chmod.c
+chown.c
+chroot.c
+clock.c
+close.c
+closedir.c
+connect.c
+ctermid.c
+cuserid.c
+des_impl.c
+dirfd.c
+dup.c
+dup2.c
+e_acoshl.c
+e_acosl.c
+e_asinl.c
+e_atan2l.c
+e_expl.c
+e_fmodl.c
+e_j0l.c
+e_j1l.c
+e_jnl.c
+e_lgammal_r.c
+e_log10l.c
+e_logl.c
+e_powl.c
+e_rem_pio2l.c
+e_sqrtl.c
+euidaccess.c
+execve.c
+fchdir.c
+fchflags.c
+fchmod.c
+fchown.c
+fclrexcpt.c
+fcntl.c
+fdopen.c
+fegetenv.c
+fegetround.c
+feholdexcpt.c
+fesetenv.c
+fesetround.c
+feupdateenv.c
+fexecve.c
+fgetexcptflg.c
+flock.c
+fork.c
+fpathconf.c
+fraiseexcpt.c
+fsetexcptflg.c
+fstatfs.c
+fstatfs64.c
+fsync.c
+ftestexcept.c
+ftruncate.c
+fxstat.c
+fxstat64.c
+getaddrinfo.c
+getcwd.c
+getdents.c
+getdomain.c
+getdtsz.c
+getegid.c
+geteuid.c
+getgid.c
+getgroups.c
+gethostid.c
+gethostname.c
+getitimer.c
+getlogin.c
+getlogin_r.c
+getpagesize.c
+getpeername.c
+getpgid.c
+getpid.c
+getppid.c
+getpriority.c
+getrlimit.c
+getrlimit64.c
+getrusage.c
+getsockname.c
+getsockopt.c
+getsysstats.c
+gettimeofday.c
+getuid.c
+gtty.c
+if_index.c
+ioctl.c
+isatty.c
+isfdtype.c
+k_cosl.c
+k_rem_pio2l.c
+k_sinl.c
+k_tanl.c
+kill.c
+killpg.c
+lchown.c
+link.c
+listen.c
+lseek.c
+lseek64.c
+lxstat64.c
+madvise.c
+mkdir.c
+mkfifo.c
+mkstemp.c
+mktemp.c
+mprotect.c
+msgctl.c
+msgget.c
+msgrcv.c
+msgsnd.c
+msync.c
+nanosleep.c
+nice.c
+nlist.c
+open.c
+open64.c
+opendir.c
+pathconf.c
+pause.c
+pipe.c
+pipestream.c
+poll.c
+pread.c
+pread64.c
+profil.c
+ptrace.c
+pwrite.c
+pwrite64.c
+raise.c
+read.c
+readdir.c
+readdir64.c
+readdir64_r.c
+readdir_r.c
+readlink.c
+readv.c
+reboot.c
+recv.c
+recvfrom.c
+recvmsg.c
+remove.c
+rename.c
+revoke.c
+rewinddir.c
+rmdir.c
+s_atanl.c
+s_erfl.c
+s_exp2.c
+s_exp2f.c
+s_exp2l.c
+s_expm1l.c
+s_log1pl.c
+s_log2l.c
+sched_getp.c
+sched_gets.c
+sched_primax.c
+sched_primin.c
+sched_rr_gi.c
+sched_setp.c
+sched_sets.c
+sched_yield.c
+seekdir.c
+select.c
+semctl.c
+semget.c
+semop.c
+send.c
+sendmsg.c
+sendto.c
+setdomain.c
+setegid.c
+seteuid.c
+setgid.c
+setgroups.c
+sethostid.c
+sethostname.c
+setitimer.c
+setjmp.c
+setlogin.c
+setpgid.c
+setpriority.c
+setregid.c
+setreuid.c
+setrlimit.c
+setrlimit64.c
+setsid.c
+setsockopt.c
+settimeofday.c
+setuid.c
+shmat.c
+shmctl.c
+shmdt.c
+shmget.c
+shutdown.c
+sigaction.c
+sigaltstack.c
+sigblock.c
+sigintr.c
+signal.c
+sigpause.c
+sigpending.c
+sigreturn.c
+sigsetmask.c
+sigstack.c
+sigsuspend.c
+sigvec.c
+sigwait.c
+sleep.c
+socket.c
+socketpair.c
+sstk.c
+statfs.c
+statfs64.c
+stime.c
+stty.c
+swapoff.c
+swapon.c
+symlink.c
+sync.c
+syscall.c
+sysconf.c
+system.c
+sysv_signal.c
+tcdrain.c
+tcflow.c
+tcflush.c
+tcgetattr.c
+tcgetpgrp.c
+tcsendbrk.c
+tcsetattr.c
+tcsetpgrp.c
+telldir.c
+tempname.c
+time.c
+times.c
+truncate.c
+ttyname.c
+ttyname_r.c
+ualarm.c
+ulimit.c
+umask.c
+unlink.c
+usleep.c
+ustat.c
+utime.c
+utimes.c
+vdprintf.c
+vhangup.c
+wait.c
+wait3.c
+wait4.c
+waitpid.c
+write.c
+writev.c
+xmknod.c
+xstat.c
+xstat64.c
diff --git a/sysdeps/stub/swapoff.c b/sysdeps/generic/swapoff.c
index 3b3fd9a8a1..49e4815c41 100644
--- a/sysdeps/stub/swapoff.c
+++ b/sysdeps/generic/swapoff.c
@@ -28,3 +28,4 @@ swapoff (const char *path)
 }
 
 stub_warning (swapoff)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/swapon.c b/sysdeps/generic/swapon.c
index cbaa1c2fe3..c466e8cea7 100644
--- a/sysdeps/stub/swapon.c
+++ b/sysdeps/generic/swapon.c
@@ -31,3 +31,4 @@ swapon (path)
 }
 
 stub_warning (swapon)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/symlink.c b/sysdeps/generic/symlink.c
index abdaf4a1c5..87365aa8d5 100644
--- a/sysdeps/stub/symlink.c
+++ b/sysdeps/generic/symlink.c
@@ -39,3 +39,4 @@ __symlink (from, to)
 stub_warning (symlink)
 
 weak_alias (__symlink, symlink)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/sync.c b/sysdeps/generic/sync.c
index aed63b1437..aa04edf524 100644
--- a/sysdeps/stub/sync.c
+++ b/sysdeps/generic/sync.c
@@ -29,3 +29,4 @@ sync ()
 
 
 stub_warning (sync)
+#include <stub-tag.h>
diff --git a/sysdeps/generic/sys/mman.h b/sysdeps/generic/sys/mman.h
index 6e41a923d5..f8ca3f03ee 100644
--- a/sysdeps/generic/sys/mman.h
+++ b/sysdeps/generic/sys/mman.h
@@ -76,7 +76,7 @@
 #endif
 
 /* Return value of `mmap' in case of an error.  */
-#define MAP_FAILED	((__caddr_t) -1)
+#define MAP_FAILED	((__ptr_t) -1)
 
 
 __BEGIN_DECLS
@@ -89,41 +89,41 @@ __BEGIN_DECLS
    for errors (in which case `errno' is set).  A successful `mmap' call
    deallocates any previous mapping for the affected region.  */
 
-extern __caddr_t __mmap __P ((__caddr_t __addr, size_t __len, int __prot,
-			      int __flags, int __fd, __off_t __offset));
+extern __ptr_t __mmap __P ((__ptr_t __addr, size_t __len, int __prot,
+			  int __flags, int __fd, __off_t __offset));
 #ifndef __USE_FILE_OFFSET64
-extern __caddr_t mmap __P ((__caddr_t __addr, size_t __len, int __prot,
-			    int __flags, int __fd, __off_t __offset));
+extern __ptr_t mmap __P ((__ptr_t __addr, size_t __len, int __prot,
+			int __flags, int __fd, __off_t __offset));
 #else
-extern __caddr_t mmap __P ((__caddr_t __addr, size_t __len, int __prot,
-			    int __flags, int __fd, __off_t __offset))
+extern __ptr_t mmap __P ((__ptr_t __addr, size_t __len, int __prot,
+			int __flags, int __fd, __off_t __offset))
      __asm__ ("mmap64");
 #endif
 #ifdef __USE_LARGEFILE64
-extern __caddr_t mmap64 __P ((__caddr_t __addr, size_t __len, int __prot,
-			      int __flags, int __fd, __off64_t __offset));
+extern __ptr_t mmap64 __P ((__ptr_t __addr, size_t __len, int __prot,
+			  int __flags, int __fd, __off64_t __offset));
 #endif
 
 /* Deallocate any mapping for the region starting at ADDR and extending LEN
    bytes.  Returns 0 if successful, -1 for errors (and sets errno).  */
-extern int __munmap __P ((__caddr_t __addr, size_t __len));
-extern int munmap __P ((__caddr_t __addr, size_t __len));
+extern int __munmap __P ((__ptr_t __addr, size_t __len));
+extern int munmap __P ((__ptr_t __addr, size_t __len));
 
 /* Change the memory protection of the region starting at ADDR and
    extending LEN bytes to PROT.  Returns 0 if successful, -1 for errors
    (and sets errno).  */
-extern int __mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
-extern int mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
+extern int __mprotect __P ((__ptr_t __addr, size_t __len, int __prot));
+extern int mprotect __P ((__ptr_t __addr, size_t __len, int __prot));
 
 /* Synchronize the region starting at ADDR and extending LEN bytes with the
    file it maps.  Filesystem operations on a file being mapped are
    unpredictable before this is done.  Flags are from the MS_* set.  */
-extern int msync __P ((__caddr_t __addr, size_t __len, int __flags));
+extern int msync __P ((__ptr_t __addr, size_t __len, int __flags));
 
 #ifdef __USE_BSD
 /* Advise the system about particular usage patterns the program follows
    for the region starting at ADDR and extending LEN bytes.  */
-extern int madvise __P ((__caddr_t __addr, size_t __len, int __advice));
+extern int madvise __P ((__ptr_t __addr, size_t __len, int __advice));
 #endif
 
 __END_DECLS
diff --git a/sysdeps/stub/sys/param.h b/sysdeps/generic/sys/param.h
index 1dafdda403..1dafdda403 100644
--- a/sysdeps/stub/sys/param.h
+++ b/sysdeps/generic/sys/param.h
diff --git a/sysdeps/stub/sys/reboot.h b/sysdeps/generic/sys/reboot.h
index bada28dd6c..bada28dd6c 100644
--- a/sysdeps/stub/sys/reboot.h
+++ b/sysdeps/generic/sys/reboot.h
diff --git a/sysdeps/stub/sys/syscall.h b/sysdeps/generic/sys/syscall.h
index 719bd08904..719bd08904 100644
--- a/sysdeps/stub/sys/syscall.h
+++ b/sysdeps/generic/sys/syscall.h
diff --git a/sysdeps/stub/syscall.c b/sysdeps/generic/syscall.c
index 4903b409b5..8c20b7ead0 100644
--- a/sysdeps/stub/syscall.c
+++ b/sysdeps/generic/syscall.c
@@ -32,3 +32,4 @@ syscall (callno)
 }
 
 stub_warning (syscall)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/sysconf.c b/sysdeps/generic/sysconf.c
index 3d3c0e9759..b3fa62aa9a 100644
--- a/sysdeps/stub/sysconf.c
+++ b/sysdeps/generic/sysconf.c
@@ -252,3 +252,4 @@ __sysconf (name)
 weak_alias (__sysconf, sysconf)
 
 stub_warning (sysconf)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/sysdep.c b/sysdeps/generic/sysdep.c
index 5442eee00d..5442eee00d 100644
--- a/sysdeps/stub/sysdep.c
+++ b/sysdeps/generic/sysdep.c
diff --git a/sysdeps/stub/system.c b/sysdeps/generic/system.c
index 311ccfe756..5476d0f157 100644
--- a/sysdeps/stub/system.c
+++ b/sysdeps/generic/system.c
@@ -35,3 +35,4 @@ weak_alias (__libc_system, system)
 
 
 stub_warning (system)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/sysv_signal.c b/sysdeps/generic/sysv_signal.c
index 4d3e15aad0..d8db7d5f8d 100644
--- a/sysdeps/stub/sysv_signal.c
+++ b/sysdeps/generic/sysv_signal.c
@@ -40,3 +40,4 @@ __sysv_signal (sig, handler)
 weak_alias (__sysv_signal, sysv_signal)
 
 stub_warning (sysv_signal)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/tcdrain.c b/sysdeps/generic/tcdrain.c
index cda0f167ea..2bd91b32b0 100644
--- a/sysdeps/stub/tcdrain.c
+++ b/sysdeps/generic/tcdrain.c
@@ -36,3 +36,4 @@ weak_alias (__libc_tcdrain, tcdrain)
 
 
 stub_warning (tcdrain)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/tcflow.c b/sysdeps/generic/tcflow.c
index e8fc81cfce..b1c091dfa1 100644
--- a/sysdeps/stub/tcflow.c
+++ b/sysdeps/generic/tcflow.c
@@ -50,3 +50,4 @@ tcflow (fd, action)
 
 
 stub_warning (tcflow)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/tcflush.c b/sysdeps/generic/tcflush.c
index 28cd558536..627f62e421 100644
--- a/sysdeps/stub/tcflush.c
+++ b/sysdeps/generic/tcflush.c
@@ -43,3 +43,4 @@ tcflush (fd, queue_selector)
 
 
 stub_warning(tcflush);
+#include <stub-tag.h>
diff --git a/sysdeps/stub/tcgetattr.c b/sysdeps/generic/tcgetattr.c
index 9e80969653..bb7543482d 100644
--- a/sysdeps/stub/tcgetattr.c
+++ b/sysdeps/generic/tcgetattr.c
@@ -43,3 +43,4 @@ __tcgetattr (fd, termios_p)
 stub_warning (tcgetattr)
 
 weak_alias (__tcgetattr, tcgetattr)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/tcgetpgrp.c b/sysdeps/generic/tcgetpgrp.c
index a6e711a95d..91ed22c2c9 100644
--- a/sysdeps/stub/tcgetpgrp.c
+++ b/sysdeps/generic/tcgetpgrp.c
@@ -37,3 +37,4 @@ tcgetpgrp (fd)
 
 
 stub_warning (tcgetpgrp)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/tcsendbrk.c b/sysdeps/generic/tcsendbrk.c
index 5f127e43f6..a741eedd2b 100644
--- a/sysdeps/stub/tcsendbrk.c
+++ b/sysdeps/generic/tcsendbrk.c
@@ -37,3 +37,4 @@ tcsendbreak (fd, duration)
 
 
 stub_warning (tcsendbreak)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/tcsetattr.c b/sysdeps/generic/tcsetattr.c
index 7904ea2c08..e1b54c5e14 100644
--- a/sysdeps/stub/tcsetattr.c
+++ b/sysdeps/generic/tcsetattr.c
@@ -94,3 +94,4 @@ bad_speed (speed)
 
 
 stub_warning (tcsetattr)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/tcsetpgrp.c b/sysdeps/generic/tcsetpgrp.c
index 741c3b3158..e48ee69a66 100644
--- a/sysdeps/stub/tcsetpgrp.c
+++ b/sysdeps/generic/tcsetpgrp.c
@@ -38,3 +38,4 @@ tcsetpgrp (fd, pgrp_id)
 
 
 stub_warning (tcsetpgrp)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/telldir.c b/sysdeps/generic/telldir.c
index 85217e9a0e..3400829cb7 100644
--- a/sysdeps/stub/telldir.c
+++ b/sysdeps/generic/telldir.c
@@ -38,3 +38,4 @@ telldir (dirp)
 
 
 stub_warning (telldir)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/tempname.c b/sysdeps/generic/tempname.c
index d87c54f86a..f5d1ed0345 100644
--- a/sysdeps/stub/tempname.c
+++ b/sysdeps/generic/tempname.c
@@ -43,3 +43,4 @@ __stdio_gen_tempname (buf, bufsize, dir, pfx, dir_search, lenptr, streamptr,
 }
 
 stub_warning (__stdio_gen_tempname)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/thread_state.h b/sysdeps/generic/thread_state.h
index 060282e4b7..060282e4b7 100644
--- a/sysdeps/stub/thread_state.h
+++ b/sysdeps/generic/thread_state.h
diff --git a/sysdeps/stub/time.c b/sysdeps/generic/time.c
index 412ef1dc23..461aedd7c0 100644
--- a/sysdeps/stub/time.c
+++ b/sysdeps/generic/time.c
@@ -32,3 +32,4 @@ time (timer)
 }
 
 stub_warning (time)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/times.c b/sysdeps/generic/times.c
index 78676135ee..e51ced0f0a 100644
--- a/sysdeps/stub/times.c
+++ b/sysdeps/generic/times.c
@@ -40,3 +40,4 @@ __times (buffer)
 stub_warning (times)
 
 weak_alias (__times, times)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/trampoline.c b/sysdeps/generic/trampoline.c
index 4fd699e775..4fd699e775 100644
--- a/sysdeps/stub/trampoline.c
+++ b/sysdeps/generic/trampoline.c
diff --git a/sysdeps/stub/truncate.c b/sysdeps/generic/truncate.c
index c6257b68ba..20e9fe0787 100644
--- a/sysdeps/stub/truncate.c
+++ b/sysdeps/generic/truncate.c
@@ -30,3 +30,4 @@ truncate (path, length)
 }
 
 stub_warning (truncate)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/ttyname.c b/sysdeps/generic/ttyname.c
index 56e844cbbc..e62dea21bc 100644
--- a/sysdeps/stub/ttyname.c
+++ b/sysdeps/generic/ttyname.c
@@ -35,3 +35,4 @@ ttyname (fd)
 
 
 stub_warning (ttyname)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/ttyname_r.c b/sysdeps/generic/ttyname_r.c
index 6599d60b8b..6e8a9d6179 100644
--- a/sysdeps/stub/ttyname_r.c
+++ b/sysdeps/generic/ttyname_r.c
@@ -34,3 +34,4 @@ ttyname_r (fd, buf, buflen)
 
 
 stub_warning (ttyname_r)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/ualarm.c b/sysdeps/generic/ualarm.c
index 5972e240eb..b2c8da3c19 100644
--- a/sysdeps/stub/ualarm.c
+++ b/sysdeps/generic/ualarm.c
@@ -34,3 +34,4 @@ ualarm (value, interval)
 }
 
 stub_warning (ualarm)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/udiv_qrnnd.c b/sysdeps/generic/udiv_qrnnd.c
index d32796c04d..d32796c04d 100644
--- a/sysdeps/stub/udiv_qrnnd.c
+++ b/sysdeps/generic/udiv_qrnnd.c
diff --git a/sysdeps/stub/ulimit.c b/sysdeps/generic/ulimit.c
index 7643e31ce7..3d90170b50 100644
--- a/sysdeps/stub/ulimit.c
+++ b/sysdeps/generic/ulimit.c
@@ -38,3 +38,4 @@ __ulimit (cmd, newlimit)
 weak_alias (__ulimit, ulimit)
 
 stub_warning (ulimit)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/umask.c b/sysdeps/generic/umask.c
index 58b369d6fe..584780dd3b 100644
--- a/sysdeps/stub/umask.c
+++ b/sysdeps/generic/umask.c
@@ -31,3 +31,4 @@ __umask (mask)
 stub_warning (umask)
 
 weak_alias (__umask, umask)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/unlink.c b/sysdeps/generic/unlink.c
index fd303b8662..545a24abe0 100644
--- a/sysdeps/stub/unlink.c
+++ b/sysdeps/generic/unlink.c
@@ -38,3 +38,4 @@ __unlink (name)
 stub_warning (unlink)
 
 weak_alias (__unlink, unlink)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/usleep.c b/sysdeps/generic/usleep.c
index 7ee41b63fa..8c0e851d6d 100644
--- a/sysdeps/stub/usleep.c
+++ b/sysdeps/generic/usleep.c
@@ -29,3 +29,4 @@ usleep (useconds)
 }
 
 stub_warning (usleep)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/ustat.c b/sysdeps/generic/ustat.c
index 660b3087ad..5371641f40 100644
--- a/sysdeps/stub/ustat.c
+++ b/sysdeps/generic/ustat.c
@@ -30,3 +30,4 @@ ustat (dev, ust)
   return -1;
 }
 stub_warning (ustat)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/utime.c b/sysdeps/generic/utime.c
index b69e4903ad..40b554daa3 100644
--- a/sysdeps/stub/utime.c
+++ b/sysdeps/generic/utime.c
@@ -40,3 +40,4 @@ utime (file, times)
 
 
 stub_warning (utime)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/utimes.c b/sysdeps/generic/utimes.c
index 1cdc8fac33..438673bf17 100644
--- a/sysdeps/stub/utimes.c
+++ b/sysdeps/generic/utimes.c
@@ -40,3 +40,4 @@ __utimes (file, tvp)
 weak_alias (__utimes, utimes)
 
 stub_warning (utimes)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/vdprintf.c b/sysdeps/generic/vdprintf.c
index b99116923c..29e7fd3ab2 100644
--- a/sysdeps/stub/vdprintf.c
+++ b/sysdeps/generic/vdprintf.c
@@ -30,3 +30,4 @@ vdprintf (int d, const char *format, va_list arg)
 }
 
 stub_warning (vdprintf)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/vhangup.c b/sysdeps/generic/vhangup.c
index 94925285e8..2e112b14a6 100644
--- a/sysdeps/stub/vhangup.c
+++ b/sysdeps/generic/vhangup.c
@@ -30,3 +30,4 @@ vhangup ()
 }
 
 stub_warning (vhangup)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/wait.c b/sysdeps/generic/wait.c
index 8b186afd50..6f1db03f2d 100644
--- a/sysdeps/stub/wait.c
+++ b/sysdeps/generic/wait.c
@@ -31,3 +31,4 @@ __wait (stat_loc)
 stub_warning (wait)
 
 weak_alias (__wait, wait)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/wait3.c b/sysdeps/generic/wait3.c
index b0c71afb51..4df9d420df 100644
--- a/sysdeps/stub/wait3.c
+++ b/sysdeps/generic/wait3.c
@@ -43,3 +43,4 @@ __wait3 (stat_loc, options, usage)
 stub_warning (wait3)
 
 weak_alias (__wait3, wait3)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/wait4.c b/sysdeps/generic/wait4.c
index e67e37bdec..d29d80c73e 100644
--- a/sysdeps/stub/wait4.c
+++ b/sysdeps/generic/wait4.c
@@ -33,3 +33,4 @@ __wait4 (pid, stat_loc, options, usage)
 stub_warning (wait4)
 
 weak_alias (__wait4, wait4)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/waitpid.c b/sysdeps/generic/waitpid.c
index 0e52335f19..66d8915556 100644
--- a/sysdeps/stub/waitpid.c
+++ b/sysdeps/generic/waitpid.c
@@ -49,3 +49,4 @@ weak_alias (__libc_waitpid, __waitpid)
 weak_alias (__libc_waitpid, waitpid)
 
 stub_warning (waitpid)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/write.c b/sysdeps/generic/write.c
index d4fee7bdb2..6f98a83623 100644
--- a/sysdeps/stub/write.c
+++ b/sysdeps/generic/write.c
@@ -45,3 +45,4 @@ stub_warning (write)
 
 weak_alias (__libc_write, __write)
 weak_alias (__libc_write, write)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/writev.c b/sysdeps/generic/writev.c
index d18d73cddc..fc6bc20095 100644
--- a/sysdeps/stub/writev.c
+++ b/sysdeps/generic/writev.c
@@ -37,3 +37,4 @@ __writev (fd, vector, count)
 weak_alias (__writev, writev)
 
 stub_warning (writev)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/xmknod.c b/sysdeps/generic/xmknod.c
index 35234c2d81..6759801638 100644
--- a/sysdeps/stub/xmknod.c
+++ b/sysdeps/generic/xmknod.c
@@ -38,3 +38,4 @@ __xmknod (int vers, const char *path, mode_t mode, dev_t *dev)
 stub_warning (__xmknod)
 
 weak_alias (__xmknod, _xmknod)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/xstat.c b/sysdeps/generic/xstat.c
index 31fd3a0ed6..02f097f160 100644
--- a/sysdeps/stub/xstat.c
+++ b/sysdeps/generic/xstat.c
@@ -36,3 +36,4 @@ __xstat (int vers, const char *file, struct stat *buf)
 stub_warning (stat)
 
 weak_alias (__xstat, _xstat)
+#include <stub-tag.h>
diff --git a/sysdeps/stub/xstat64.c b/sysdeps/generic/xstat64.c
index 8eb1d177df..8d85360cb8 100644
--- a/sysdeps/stub/xstat64.c
+++ b/sysdeps/generic/xstat64.c
@@ -34,3 +34,4 @@ __xstat64 (int vers, const char *file, struct stat64 *buf)
   return -1;
 }
 stub_warning (stat64)
+#include <stub-tag.h>
diff --git a/sysdeps/i386/i486/bits/string.h b/sysdeps/i386/i486/bits/string.h
index ef808d2e7d..80fcc48a2b 100644
--- a/sysdeps/i386/i486/bits/string.h
+++ b/sysdeps/i386/i486/bits/string.h
@@ -979,6 +979,14 @@ __strchr_g (__const char *__s, int __c)
 }
 
 
+/* Find the first occurrence of C in S.  This is the BSD name.  */
+#define _HAVE_STRING_ARCH_index 1
+#define index(s, c) \
+  (__extension__ (__builtin_constant_p (c)				      \
+		  ? __strchr_c (s, ((c) & 0xff) << 8)			      \
+		  : __strchr_g (s, c)))
+
+
 /* Find the last occurrence of C in S.  */
 #define _HAVE_STRING_ARCH_strrchr 1
 #define strrchr(s, c) \
@@ -1067,6 +1075,14 @@ __strrchr_g (__const char *__s, int __c)
 #endif
 
 
+/* Find the last occurrence of C in S.  This is the BSD name.  */
+#define _HAVE_STRING_ARCH_rindex 1
+#define rindex(s, c) \
+  (__extension__ (__builtin_constant_p (c)				      \
+		  ? __strrchr_c (s, ((c) & 0xff) << 8)			      \
+		  : __strrchr_g (s, c)))
+
+
 /* Return the length of the initial segment of S which
    consists entirely of characters not in REJECT.  */
 #define _HAVE_STRING_ARCH_strcspn 1
diff --git a/sysdeps/mach/hurd/mmap.c b/sysdeps/mach/hurd/mmap.c
index dc4b024bb8..8b4c3455c1 100644
--- a/sysdeps/mach/hurd/mmap.c
+++ b/sysdeps/mach/hurd/mmap.c
@@ -27,12 +27,12 @@
    is nonzero, it is the desired mapping address.  If the MAP_FIXED bit is
    set in FLAGS, the mapping will be at ADDR exactly (which must be
    page-aligned); otherwise the system chooses a convenient nearby address.
-   The return value is the actual mapping address chosen or (caddr_t) -1
+   The return value is the actual mapping address chosen or (__ptr_t) -1
    for errors (in which case `errno' is set).  A successful `mmap' call
    deallocates any previous mapping for the affected region.  */
 
-caddr_t
-__mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
+__ptr_t
+__mmap (__ptr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
 {
   error_t err;
   vm_prot_t vmprot;
@@ -49,7 +49,7 @@ __mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
       /* A specific address is requested.  It need not be page-aligned;
 	 it just needs to be congruent with the object offset.  */
       if ((mapaddr & (vm_page_size - 1)) != pageoff)
-	return (caddr_t) (long int) __hurd_fail (EINVAL);
+	return (__ptr_t) (long int) __hurd_fail (EINVAL);
       else
 	/* We will add back PAGEOFF after mapping.  */
 	mapaddr -= pageoff;
@@ -66,7 +66,7 @@ __mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
   switch (flags & MAP_TYPE)
     {
     default:
-      return (caddr_t) (long int) __hurd_fail (EINVAL);
+      return (__ptr_t) (long int) __hurd_fail (EINVAL);
 
     case MAP_ANON:
       memobj = MACH_PORT_NULL;
@@ -77,7 +77,7 @@ __mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
       {
 	mach_port_t robj, wobj;
 	if (err = HURD_DPORT_USE (fd, __io_map (port, &robj, &wobj)))
-	  return (caddr_t) (long int) __hurd_dfail (fd, err);
+	  return (__ptr_t) (long int) __hurd_dfail (fd, err);
 	switch (prot & (PROT_READ|PROT_WRITE))
 	  {
 	  case PROT_READ:
@@ -106,7 +106,7 @@ __mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
 	    else
 	      {
 		__mach_port_deallocate (__mach_task_self (), wobj);
-		return (caddr_t) (long int) __hurd_fail (EACCES);
+		return (__ptr_t) (long int) __hurd_fail (EACCES);
 	      }
 	    break;
 	  }
@@ -144,12 +144,12 @@ __mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
     __mach_port_deallocate (__mach_task_self (), memobj);
 
   if (err)
-    return (caddr_t) (long int) __hurd_fail (err);
+    return (__ptr_t) (long int) __hurd_fail (err);
 
   /* Adjust the mapping address for the offset-within-page.  */
   mapaddr += pageoff;
 
-  return (caddr_t) mapaddr;
+  return (__ptr_t) mapaddr;
 }
 
 weak_alias (__mmap, mmap)
diff --git a/sysdeps/mach/mprotect.c b/sysdeps/mach/mprotect.c
index f98c663862..f297cdbf4c 100644
--- a/sysdeps/mach/mprotect.c
+++ b/sysdeps/mach/mprotect.c
@@ -26,7 +26,7 @@
    (and sets errno).  */
 
 int
-__mprotect (caddr_t addr, size_t len, int prot)
+__mprotect (__ptr_t addr, size_t len, int prot)
 {
   kern_return_t err;
   vm_prot_t vmprot;
diff --git a/sysdeps/mach/munmap.c b/sysdeps/mach/munmap.c
index 6b3e07d1cf..79f54e14ad 100644
--- a/sysdeps/mach/munmap.c
+++ b/sysdeps/mach/munmap.c
@@ -25,7 +25,7 @@
    bytes.  Returns 0 if successful, -1 for errors (and sets errno).  */
 
 int
-__munmap (caddr_t addr, size_t len)
+__munmap (__ptr_t addr, size_t len)
 {
   kern_return_t err;
   if (err = __vm_deallocate (__mach_task_self (),
diff --git a/sysdeps/unix/Makefile b/sysdeps/unix/Makefile
index 0e837ca2e7..f8cdb0277a 100644
--- a/sysdeps/unix/Makefile
+++ b/sysdeps/unix/Makefile
@@ -19,7 +19,7 @@
 # The unix-specific configure fragment writes `unix-generated' in config.make.
 config-generated := $(config-generated) $(unix-generated)
 
-ifeq (,$(filter-out $(sysdep_dir)/stub/ $(common-objpfx),\
+ifeq (,$(filter-out $(sysdep_dir)/generic/ $(common-objpfx),\
 	$(dir $(firstword $(wildcard $(+sysdep_dirs:%=%/bits/local_lim.h))))))
 
 ifneq (,$(wildcard $(sysincludedir)/sys/param.h))
@@ -43,7 +43,7 @@ common-generated := $(common-generated) local_lim.h mk-local_lim
 
 endif
 
-ifeq (,$(filter-out $(sysdep_dir)/stub/ $(common-objpfx),\
+ifeq (,$(filter-out $(sysdep_dir)/generic/ $(common-objpfx),\
 	$(patsubst %/sys/param.h,%/,\
 		   $(firstword $(wildcard $(+sysdep_dirs:%=%/sys/param.h))))))
 
@@ -126,11 +126,11 @@ endif # misc
 
 endif # No sysdep sys/param.h.
 
-ifeq (,$(filter-out $(sysdep_dir)/stub/ $(common-objpfx),\
+ifeq (,$(filter-out $(sysdep_dir)/generic/ $(common-objpfx),\
 	$(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.
+# so cpp doesn't instead find the generic versions.
 before-compile := $(before-compile) $(common-objpfx)bits/errno.h
 
 $(common-objpfx)bits/errno.h: $(common-objpfx)make-errnos
@@ -155,7 +155,7 @@ common-generated := $(common-generated) \
 		    errnos.h errnos make-errnos make-errnos.c
 endif
 
-ifeq (,$(filter-out $(sysdep_dir)/stub/ $(common-objpfx),\
+ifeq (,$(filter-out $(sysdep_dir)/generic/ $(common-objpfx),\
 	$(dir $(firstword $(wildcard $(+sysdep_dirs:%=%/bits/ioctls.h))))))
 
 before-compile := $(before-compile) $(common-objpfx)bits/ioctls.h
@@ -211,7 +211,7 @@ common-generated := $(common-generated) \
 endif
 
 ifeq ($(subdir),stdio-common)
-ifeq (,$(filter-out $(sysdep_dir)/stub/ $(objpfx),\
+ifeq (,$(filter-out $(sysdep_dir)/generic/ $(objpfx),\
 	$(dir $(firstword $(wildcard $(+sysdep_dirs:%=%/errlist.c))))))
 
 before-compile: $(objpfx)errlist.c
@@ -228,7 +228,7 @@ generated := $(generated) make_errlist errlist.c
 endif
 endif # stdio-common
 
-ifeq (,$(filter-out $(sysdep_dir)/stub/ $(common-objpfx),\
+ifeq (,$(filter-out $(sysdep_dir)/generic/ $(common-objpfx),\
 	$(dir $(firstword $(wildcard $(+sysdep_dirs:%=%/sys/syscall.h))))))
 
 # The syscall code assumes a file <sys/syscall.h> that defines macros
diff --git a/sysdeps/unix/bsd/osf/sys/mman.h b/sysdeps/unix/bsd/osf/sys/mman.h
index 816f271e30..cf0bf45673 100644
--- a/sysdeps/unix/bsd/osf/sys/mman.h
+++ b/sysdeps/unix/bsd/osf/sys/mman.h
@@ -77,7 +77,7 @@
 #define MS_INVALIDATE	4		/* Invalidate cached pages.  */
 
 /* Return value of `mmap' in case of an error.  */
-#define MAP_FAILED	((__caddr_t) -1)
+#define MAP_FAILED	((__ptr_t) -1)
 
 
 __BEGIN_DECLS
@@ -90,31 +90,31 @@ __BEGIN_DECLS
    for errors (in which case `errno' is set).  A successful `mmap' call
    deallocates any previous mapping for the affected region.  */
 
-extern __caddr_t __mmap __P ((__caddr_t __addr, size_t __len, int __prot,
-			      int __flags, int __fd, off_t __offset));
-extern __caddr_t mmap __P ((__caddr_t __addr, size_t __len, int __prot,
-			    int __flags, int __fd, off_t __offset));
+extern __ptr_t __mmap __P ((__ptr_t __addr, size_t __len, int __prot,
+			  int __flags, int __fd, off_t __offset));
+extern __ptr_t mmap __P ((__ptr_t __addr, size_t __len, int __prot,
+			int __flags, int __fd, off_t __offset));
 
 /* Deallocate any mapping for the region starting at ADDR and extending LEN
    bytes.  Returns 0 if successful, -1 for errors (and sets errno).  */
-extern int __munmap __P ((__caddr_t __addr, size_t __len));
-extern int munmap __P ((__caddr_t __addr, size_t __len));
+extern int __munmap __P ((__ptr_t __addr, size_t __len));
+extern int munmap __P ((__ptr_t __addr, size_t __len));
 
 /* Change the memory protection of the region starting at ADDR and
    extending LEN bytes to PROT.  Returns 0 if successful, -1 for errors
    (and sets errno).  */
-extern int __mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
-extern int mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
+extern int __mprotect __P ((__ptr_t __addr, size_t __len, int __prot));
+extern int mprotect __P ((__ptr_t __addr, size_t __len, int __prot));
 
 /* Synchronize the region starting at ADDR and extending LEN bytes with the
    file it maps.  Filesystem operations on a file being mapped are
    unpredictable before this is done.  */
-extern int msync __P ((__caddr_t __addr, size_t __len, int __flags));
+extern int msync __P ((__ptr_t __addr, size_t __len, int __flags));
 
 #ifdef __USE_BSD
 /* Advise the system about particular usage patterns the program follows
    for the region starting at ADDR and extending LEN bytes.  */
-extern int madvise __P ((__caddr_t __addr, size_t __len, int __advice));
+extern int madvise __P ((__ptr_t __addr, size_t __len, int __advice));
 #endif
 
 __END_DECLS
diff --git a/sysdeps/unix/bsd/sun/sunos4/mmap.c b/sysdeps/unix/bsd/sun/sunos4/mmap.c
index 7c373c41af..8400aaa1db 100644
--- a/sysdeps/unix/bsd/sun/sunos4/mmap.c
+++ b/sysdeps/unix/bsd/sun/sunos4/mmap.c
@@ -25,16 +25,16 @@
    is nonzero, it is the desired mapping address.  If the MAP_FIXED bit is
    set in FLAGS, the mapping will be at ADDR exactly (which must be
    page-aligned); otherwise the system chooses a convenient nearby address.
-   The return value is the actual mapping address chosen or (caddr_t) -1
+   The return value is the actual mapping address chosen or MAP_FAILED
    for errors (in which case `errno' is set).  A successful `mmap' call
    deallocates any previous mapping for the affected region.  */
 
-extern caddr_t __mmap_syscall (caddr_t addr, size_t len,
+extern __ptr_t __mmap_syscall (__ptr_t addr, size_t len,
 			       int prot, int flags, int fd, off_t offset);
 
 
-caddr_t
-__mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
+__ptr_t
+__mmap (__ptr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
 {
   return __mmap_syscall (addr, len, prot, flags | _MAP_NEW, fd, offset);
 }
diff --git a/sysdeps/unix/bsd/sun/sunos4/sys/mman.h b/sysdeps/unix/bsd/sun/sunos4/sys/mman.h
index d2a8998d9a..420aed9296 100644
--- a/sysdeps/unix/bsd/sun/sunos4/sys/mman.h
+++ b/sysdeps/unix/bsd/sun/sunos4/sys/mman.h
@@ -74,7 +74,7 @@
 #define	MS_INVALIDATE	0x2		/* Invalidate caches.  */
 
 /* Return value of `mmap' in case of an error.  */
-#define MAP_FAILED	((__caddr_t) -1)
+#define MAP_FAILED	((__ptr_t) -1)
 
 
 __BEGIN_DECLS
@@ -87,31 +87,31 @@ __BEGIN_DECLS
    for errors (in which case `errno' is set).  A successful `mmap' call
    deallocates any previous mapping for the affected region.  */
 
-extern __caddr_t __mmap __P ((__caddr_t __addr, size_t __len, int __prot,
-			      int __flags, int __fd, __off_t __offset));
-extern __caddr_t mmap __P ((__caddr_t __addr, size_t __len, int __prot,
-			    int __flags, int __fd, __off_t __offset));
+extern __ptr_t __mmap __P ((__ptr_t __addr, size_t __len, int __prot,
+			  int __flags, int __fd, __off_t __offset));
+extern __ptr_t mmap __P ((__ptr_t __addr, size_t __len, int __prot,
+			int __flags, int __fd, __off_t __offset));
 
 /* Deallocate any mapping for the region starting at ADDR and extending LEN
    bytes.  Returns 0 if successful, -1 for errors (and sets errno).  */
-extern int __munmap __P ((__caddr_t __addr, size_t __len));
-extern int munmap __P ((__caddr_t __addr, size_t __len));
+extern int __munmap __P ((__ptr_t __addr, size_t __len));
+extern int munmap __P ((__ptr_t __addr, size_t __len));
 
 /* Change the memory protection of the region starting at ADDR and
    extending LEN bytes to PROT.  Returns 0 if successful, -1 for errors
    (and sets errno).  */
-extern int __mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
-extern int mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
+extern int __mprotect __P ((__ptr_t __addr, size_t __len, int __prot));
+extern int mprotect __P ((__ptr_t __addr, size_t __len, int __prot));
 
 /* Synchronize the region starting at ADDR and extending LEN bytes with the
    file it maps.  Filesystem operations on a file being mapped are
    unpredictable before this is done.  */
-extern int msync __P ((__caddr_t __addr, size_t __len, int __flags));
+extern int msync __P ((__ptr_t __addr, size_t __len, int __flags));
 
 #ifdef __USE_BSD
 /* Advise the system about particular usage patterns the program follows
    for the region starting at ADDR and extending LEN bytes.  */
-extern int madvise __P ((__caddr_t __addr, size_t __len, int __advice));
+extern int madvise __P ((__ptr_t __addr, size_t __len, int __advice));
 #endif
 
 __END_DECLS
diff --git a/sysdeps/unix/bsd/ultrix4/sys/mman.h b/sysdeps/unix/bsd/ultrix4/sys/mman.h
index 4262fce438..b884ba51ac 100644
--- a/sysdeps/unix/bsd/ultrix4/sys/mman.h
+++ b/sysdeps/unix/bsd/ultrix4/sys/mman.h
@@ -58,7 +58,7 @@
 #endif
 
 /* Return value of `mmap' in case of an error.  */
-#define MAP_FAILED	((__caddr_t) -1)
+#define MAP_FAILED	((__ptr_t) -1)
 
 
 __BEGIN_DECLS
@@ -71,33 +71,33 @@ __BEGIN_DECLS
    for errors (in which case `errno' is set).  A successful `mmap' call
    deallocates any previous mapping for the affected region.  */
 
-extern __caddr_t __mmap __P ((__caddr_t __addr, size_t __len, int __prot,
-			      int __flags, int __fd, off_t __offset));
-extern __caddr_t mmap __P ((__caddr_t __addr, size_t __len, int __prot,
-			    int __flags, int __fd, off_t __offset));
+extern __ptr_t __mmap __P ((__ptr_t __addr, size_t __len, int __prot,
+			  int __flags, int __fd, off_t __offset));
+extern __ptr_t mmap __P ((__ptr_t __addr, size_t __len, int __prot,
+			int __flags, int __fd, off_t __offset));
 
 /* Deallocate any mapping for the region starting at ADDR and extending LEN
    bytes.  Returns 0 if successful, -1 for errors (and sets errno).  */
-extern int __munmap __P ((__caddr_t __addr, size_t __len));
-extern int munmap __P ((__caddr_t __addr, size_t __len));
+extern int __munmap __P ((__ptr_t __addr, size_t __len));
+extern int munmap __P ((__ptr_t __addr, size_t __len));
 
 /* Change the memory protection of the region starting at ADDR and
    extending LEN bytes to PROT.  Returns 0 if successful, -1 for errors
    (and sets errno).  */
-extern int __mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
-extern int mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
+extern int __mprotect __P ((__ptr_t __addr, size_t __len, int __prot));
+extern int mprotect __P ((__ptr_t __addr, size_t __len, int __prot));
 
 /* Ultrix 4 does not implement `msync' or `madvise'.  */
 
 /* Synchronize the region starting at ADDR and extending LEN bytes with the
    file it maps.  Filesystem operations on a file being mapped are
    unpredictable before this is done.  */
-extern int msync __P ((caddr_t __addr, size_t __len));
+extern int msync __P ((__ptr_t __addr, size_t __len));
 
 #ifdef __USE_BSD
 /* Advise the system about particular usage patterns the program follows
    for the region starting at ADDR and extending LEN bytes.  */
-extern int madvise __P ((__caddr_t __addr, size_t __len, int __advice));
+extern int madvise __P ((__ptr_t __addr, size_t __len, int __advice));
 #endif
 
 __END_DECLS
diff --git a/sysdeps/unix/sysv/irix4/sys/mman.h b/sysdeps/unix/sysv/irix4/sys/mman.h
index c3a923832a..ff1918ec88 100644
--- a/sysdeps/unix/sysv/irix4/sys/mman.h
+++ b/sysdeps/unix/sysv/irix4/sys/mman.h
@@ -68,7 +68,7 @@
 #define	MS_INVALIDATE	 0x2		/* Invalidate caches.  */
 
 /* Return value of `mmap' in case of an error.  */
-#define MAP_FAILED	((__caddr_t) -1)
+#define MAP_FAILED	((__ptr_t) -1)
 
 
 __BEGIN_DECLS
@@ -81,31 +81,31 @@ __BEGIN_DECLS
    for errors (in which case `errno' is set).  A successful `mmap' call
    deallocates any previous mapping for the affected region.  */
 
-extern __caddr_t __mmap __P ((__caddr_t __addr, size_t __len, int __prot,
-			      int __flags, int __fd, __off_t __offset));
-extern __caddr_t mmap __P ((__caddr_t __addr, size_t __len, int __prot,
-			    int __flags, int __fd, __off_t __offset));
+extern __ptr_t __mmap __P ((__ptr_t __addr, size_t __len, int __prot,
+			  int __flags, int __fd, __off_t __offset));
+extern __ptr_t mmap __P ((__ptr_t __addr, size_t __len, int __prot,
+			int __flags, int __fd, __off_t __offset));
 
 /* Deallocate any mapping for the region starting at ADDR and extending LEN
    bytes.  Returns 0 if successful, -1 for errors (and sets errno).  */
-extern int __munmap __P ((__caddr_t __addr, size_t __len));
-extern int munmap __P ((__caddr_t __addr, size_t __len));
+extern int __munmap __P ((__ptr_t __addr, size_t __len));
+extern int munmap __P ((__ptr_t __addr, size_t __len));
 
 /* Change the memory protection of the region starting at ADDR and
    extending LEN bytes to PROT.  Returns 0 if successful, -1 for errors
    (and sets errno).  */
-extern int __mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
-extern int mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
+extern int __mprotect __P ((__ptr_t __addr, size_t __len, int __prot));
+extern int mprotect __P ((__ptr_t __addr, size_t __len, int __prot));
 
 /* Synchronize the region starting at ADDR and extending LEN bytes with the
    file it maps.  Filesystem operations on a file being mapped are
    unpredictable before this is done.  */
-extern int msync __P ((caddr_t __addr, size_t __len, int __flags));
+extern int msync __P ((__ptr_t __addr, size_t __len, int __flags));
 
 #ifdef __USE_BSD
 /* Advise the system about particular usage patterns the program follows
    for the region starting at ADDR and extending LEN bytes.  */
-extern int madvise __P ((__caddr_t __addr, size_t __len, int __advice));
+extern int madvise __P ((__ptr_t __addr, size_t __len, int __advice));
 #endif
 
 __END_DECLS
diff --git a/sysdeps/unix/sysv/linux/madvise.c b/sysdeps/unix/sysv/linux/madvise.c
index 72b7d76543..c223184aac 100644
--- a/sysdeps/unix/sysv/linux/madvise.c
+++ b/sysdeps/unix/sysv/linux/madvise.c
@@ -1 +1 @@
-#include <sysdeps/stub/madvise.c>
+#include <sysdeps/generic/madvise.c>
diff --git a/sysdeps/unix/sysv/linux/sys/mman.h b/sysdeps/unix/sysv/linux/sys/mman.h
index 129702e33c..ea326e2cd9 100644
--- a/sysdeps/unix/sysv/linux/sys/mman.h
+++ b/sysdeps/unix/sysv/linux/sys/mman.h
@@ -30,7 +30,7 @@
 #include <bits/mman.h>
 
 /* Return value of `mmap' in case of an error.  */
-#define MAP_FAILED	((__caddr_t) -1)
+#define MAP_FAILED	((__ptr_t) -1)
 
 __BEGIN_DECLS
 /* Map addresses starting near ADDR and extending for LEN bytes.  from
@@ -42,41 +42,41 @@ __BEGIN_DECLS
    for errors (in which case `errno' is set).  A successful `mmap' call
    deallocates any previous mapping for the affected region.  */
 
-extern __caddr_t __mmap __P ((__caddr_t __addr, size_t __len, int __prot,
-			      int __flags, int __fd, __off_t __offset));
+extern __ptr_t __mmap __P ((__ptr_t __addr, size_t __len, int __prot,
+			  int __flags, int __fd, __off_t __offset));
 #ifndef __USE_FILE_OFFSET64
-extern __caddr_t mmap __P ((__caddr_t __addr, size_t __len, int __prot,
-			    int __flags, int __fd, __off_t __offset));
+extern __ptr_t mmap __P ((__ptr_t __addr, size_t __len, int __prot,
+			int __flags, int __fd, __off_t __offset));
 #else
-extern __caddr_t mmap __P ((__caddr_t __addr, size_t __len, int __prot,
-			    int __flags, int __fd, __off_t __offset))
+extern __ptr_t mmap __P ((__ptr_t __addr, size_t __len, int __prot,
+			int __flags, int __fd, __off_t __offset))
      __asm__ ("mmap64");
 #endif
 #ifdef __USE_LARGEFILE64
-extern __caddr_t mmap64 __P ((__caddr_t __addr, size_t __len, int __prot,
-			      int __flags, int __fd, __off64_t __offset));
+extern __ptr_t mmap64 __P ((__ptr_t __addr, size_t __len, int __prot,
+			  int __flags, int __fd, __off64_t __offset));
 #endif
 
 /* Deallocate any mapping for the region starting at ADDR and extending LEN
    bytes.  Returns 0 if successful, -1 for errors (and sets errno).  */
-extern int __munmap __P ((__caddr_t __addr, size_t __len));
-extern int munmap __P ((__caddr_t __addr, size_t __len));
+extern int __munmap __P ((__ptr_t __addr, size_t __len));
+extern int munmap __P ((__ptr_t __addr, size_t __len));
 
 /* Change the memory protection of the region starting at ADDR and
    extending LEN bytes to PROT.  Returns 0 if successful, -1 for errors
    (and sets errno).  */
-extern int __mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
-extern int mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
+extern int __mprotect __P ((__ptr_t __addr, size_t __len, int __prot));
+extern int mprotect __P ((__ptr_t __addr, size_t __len, int __prot));
 
 /* Synchronize the region starting at ADDR and extending LEN bytes with the
    file it maps.  Filesystem operations on a file being mapped are
    unpredictable before this is done.  Flags are from the MS_* set.  */
-extern int msync __P ((__caddr_t __addr, size_t __len, int __flags));
+extern int msync __P ((__ptr_t __addr, size_t __len, int __flags));
 
 #ifdef __USE_BSD
 /* Advise the system about particular usage patterns the program follows
    for the region starting at ADDR and extending LEN bytes.  */
-extern int madvise __P ((__caddr_t __addr, size_t __len, int __advice));
+extern int madvise __P ((__ptr_t __addr, size_t __len, int __advice));
 #endif
 
 /* Cause all currently mapped pages of the process to be memory resident
@@ -90,22 +90,21 @@ extern int munlockall __P ((void));
 
 /* Guarantee all whole pages mapped by the range [ADDR,ADDR+LEN) to
    be memory resident.  */
-extern int mlock __P ((__caddr_t __addr, size_t __len));
+extern int mlock __P ((__ptr_t __addr, size_t __len));
 
 /* Unlock whole pages previously mapped by the range [ADDR,ADDR+LEN).  */
-extern int munlock __P ((__caddr_t __addr, size_t __len));
+extern int munlock __P ((__ptr_t __addr, size_t __len));
 
 #ifdef __USE_MISC
 /* Remap pages mapped by the range [ADDR,ADDR+OLD_LEN) to new length
    NEW_LEN.  If MAY_MOVE is MREMAP_MAYMOVE the returned address may
    differ from ADDR.  */
-extern __caddr_t __mremap __P ((__caddr_t __addr, size_t __old_len,
-				size_t __new_len, int __may_move));
-extern __caddr_t mremap __P ((__caddr_t __addr, size_t __old_len,
-			      size_t __new_len, int __may_move));
+extern __ptr_t __mremap __P ((__ptr_t __addr, size_t __old_len,
+			    size_t __new_len, int __may_move));
+extern __ptr_t mremap __P ((__ptr_t __addr, size_t __old_len,
+			  size_t __new_len, int __may_move));
 #endif
 
 __END_DECLS
 
-
 #endif	/* _SYS_MMAN_H */
diff --git a/version.c b/version.c
index 908558cf32..e823a6db9b 100644
--- a/version.c
+++ b/version.c
@@ -28,7 +28,7 @@ This is free software; see the source for copying conditions.\n\
 There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n\
 PARTICULAR PURPOSE.\n"
 #include "version-info.h"
-"Report bugs using the `glibcbug' script to <bugs@gnu.ai.mit.edu>.\n";
+"Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n";
 
 #include <unistd.h>