summary refs log tree commit diff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1997-12-28 16:01:53 +0000
committerUlrich Drepper <drepper@redhat.com>1997-12-28 16:01:53 +0000
commitb9b49b44fdc1c74ad85076bca9ff7ea0200e2214 (patch)
tree9fb0945b8576709212f84f3bbc6bd051e36b36af
parent9756dfe161e523a5d543fb2b1f33a7e682a36342 (diff)
downloadglibc-b9b49b44fdc1c74ad85076bca9ff7ea0200e2214.tar.gz
glibc-b9b49b44fdc1c74ad85076bca9ff7ea0200e2214.tar.xz
glibc-b9b49b44fdc1c74ad85076bca9ff7ea0200e2214.zip
1997-12-28 15:08  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/powerpc/__longjmp.S: Define _SETJMP_H before including
	<bits/setjmp.h>.
	* sysdeps/powerpc/setjmp.S: Likewise.
	Patches by Matt McLean <keys@keys.got.net>.

	* Make-dist (sysdep_dirs): Ignore bits dirs while searching.

	* Makefile: Undo last patch.
	(distribute): Add test-installation.pl.

	* configure.in: Correct handling of --enable-add-ons without parameter.
	Correct address of WWW pages.

	* libc.map: Add _nl_domain_bindings.

	* db2/mutex/tsl_parisc.s: New file.

	* iconvdata/Makefile (distribute): Add jis0201.c, jis0208.c, jis0212.c,
	and extra-module.mk.

	* localedata/Makefile (distribute): New.  Add all the files.

	* stdlib/Makefile (headers): Add inttypes.h.
	(routines): Add strtoimax, strtoumax, wcstoimax, and wcstoumax.
	* sysdeps/generic/inttypes.h: New file.
	* sysdeps/generic/strtoimax.c: New file.
	* sysdeps/generic/strtoumax.c: New file.
	* sysdeps/generic/wcstoimax.c: New file.
	* sysdeps/generic/wcstoumax.c: New file.
	* sysdeps/wordsize-32/Dist: Removed.
	* sysdeps/wordsize-32/Makefile: Removed.
	* sysdeps/wordsize-64/Dist: Removed.
	* sysdeps/wordsize-64/Makefile: Removed.
	* sysdeps/generic/bits/environments.h: New file.

	* include/limits.h: Define MB_LEN_MAX in any case to 6.  The gcc
	header is still not correct.

	* io/fcntl.h [__USE_FILE_OFFSET64]: We have to use the __*64 types.
	* posix/unistd.h: Likewise.
	* sysdeps/generic/sys/mman.h: Likewise.
	* sysdeps/unix/sysv/linux/sys/mman.h: Likewise.

	* manual/arith.texi: Change definition of mul macro.
	* manual/math.texi: Likewise.

	* misc/Makefile (routines): Add mmap64.
	* sysdeps/generic/mmap64.c: New file.
	* sysdeps/unix/sysv/linux/alpha/mmap64.c: New file.
	* sysdeps/unix/sysv/linux/sparc/sparc64/mmap64.c: New file.
	* sysdeps/unix/sysv/linux/alpha/syscalls.list: Add __mmap64 and mmap64
	aliases to mmap.
	* sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: Likewise.

	* sysdeps/generic/setrlimit64.c: Don't mark as stub.

	* nis/nss_nis/nis-hosts.c (internal_nis_gethostent_r): Pretty print.

	* nis(rpcsvc/nis_tags.h: Prevent warning by unknown pragma.

	* sysdeps/posix/mk-stdiolim.c: Generate correct file which defines
	FOPEN_MAX also when included by limits.h.
	* sysdeps/unix/sysv/linux/stdio_lim.h.in: Likewise.

	* sysdeps/unix/sysv/linux/Dist: Add oldsiglist.c, netax25/ax25.h,
	and netrom/netrom.h.
	* sysdeps/unix/sysv/linux/Makefile [$(subdir)=stdio-common]: Add
	oldsiglist to sysdep_routines, not aux.
	[$(subdir)=inet] (sysdep_headers): Add netax25/ax25.h, netrom/netrom.h.

	* sysdeps/unix/sysv/linux/bits/socket.h: Remove SOL_AX25, SOL_ATALK,
	and SOL_NETROM definition.

	* sysdeps/unix/sysv/linux/i386/Dist: Add s_pwrite64.S and s_pread64.S.

	* sysdeps/unix/sysv/linux/net/route.h: Pretty print.
	* sysdeps/unix/sysv/linux/netatalk/at.h: Pretty print.

1997-12-25  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/unix/sysv/linux/alpha/net/route.h: New file.

	* sysdeps/unix/sysv/linux/alpha/kernel_sigaction.h: Replace
	sa_handler with k_sa_handler.
	* sysdeps/unix/sysv/linux/alpha/syscalls.list: Add __getrlimit as
	strong alias.
	Reported by a sun.

	* sysdeps/unix/sysv/linux/sigsuspend.c: Don't define
	__libc_have_rt_sigs here.
	* sysdeps/unix/sysv/linux/sigaction.c: Do it instead here.
	* sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise.
	* sysdeps/unix/sysv/linux/sigpending.c: Correct comment.
	* sysdeps/unix/sysv/linux/sigprocmask.c: Likewise.

1997-12-11 07:51  Geoff Keating  <geoffk@ozemail.com.au>

	* sysdeps/powerpc/atomicity.h: New file.
	* sysdeps/mach/powerpc/machine-lock.h: New file.

	* Rules: Use -fpic to build anything that might end up in a users'
	shared library.

	* sysdeps/powerpc/s_fdim.c: New file.
	* sysdeps/powerpc/s_fdimf.c: New file.
	* sysdeps/powerpc/s_fmax.S: New file.
	* sysdeps/powerpc/s_fmaxf.S: New file.
	* sysdeps/powerpc/s_fmin.S: New file.
	* sysdeps/powerpc/s_fminf.S: New file.
	* sysdeps/powerpc/s_llrint.c: Now is for double.
	* sysdeps/powerpc/s_llrintf.c: New file.
	* sysdeps/powerpc/s_llround.c: Now is for double.
	* sysdeps/powerpc/s_llroundf.c: New file.
	* sysdeps/powerpc/s_lrint.c: Now is for double.
	* sysdeps/powerpc/s_lrintf.S: New file.
	* sysdeps/powerpc/s_lround.c: Now is for double.
	* sysdeps/powerpc/s_lroundf.c: New file.
	* sysdeps/powerpc/bits/mathinlines.h: Add inline versions of lrint,
	lrintf, fdim, fdimf.

	* sysdeps/unix/sysv/linux/powerpc/kernel_termios.h: Don't use bits/
	file directly, use its parent.

	* sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c: Re-instate '++'
	(for the third time).

1997-12-20 13:50  Richard Henderson  <rth@cygnus.com>

	* posix/sched.h: timespec is in <time.h>.

	* sysdeps/unix/sysv/linux/sys/kd.h: Don't redefine _LINUX_TYPES_H.
-rw-r--r--ChangeLog134
-rw-r--r--FAQ.in4
-rw-r--r--Make-dist2
-rw-r--r--Makefile13
-rw-r--r--PROJECTS3
-rw-r--r--README6
-rw-r--r--README.template6
-rw-r--r--Rules6
-rw-r--r--bits/environments.h35
-rwxr-xr-xconfigure152
-rw-r--r--configure.in10
-rw-r--r--db2/mutex/tsl_parisc.s65
-rw-r--r--iconvdata/Makefile15
-rw-r--r--include/limits.h9
-rw-r--r--io/fcntl.h2
-rw-r--r--libc.map2
-rw-r--r--manual/arith.texi19
-rw-r--r--manual/math.texi12
-rw-r--r--misc/Makefile2
-rw-r--r--nis/nss_nis/nis-hosts.c3
-rw-r--r--nis/rpcsvc/nis_tags.h2
-rw-r--r--posix/sched.h6
-rw-r--r--posix/unistd.h12
-rw-r--r--stdlib/Makefile6
-rw-r--r--sysdeps/generic/bits/environments.h35
-rw-r--r--sysdeps/generic/inttypes.h1
-rw-r--r--sysdeps/generic/mmap64.c48
-rw-r--r--sysdeps/generic/setrlimit64.c1
-rw-r--r--sysdeps/generic/strtoimax.c1
-rw-r--r--sysdeps/generic/strtoumax.c1
-rw-r--r--sysdeps/generic/sys/mman.h2
-rw-r--r--sysdeps/generic/wcstoimax.c1
-rw-r--r--sysdeps/generic/wcstoumax.c1
-rw-r--r--sysdeps/mach/powerpc/machine-lock.h75
-rw-r--r--sysdeps/posix/mk-stdiolim.c4
-rw-r--r--sysdeps/powerpc/__longjmp.S1
-rw-r--r--sysdeps/powerpc/atomicity.h99
-rw-r--r--sysdeps/powerpc/bits/mathinline.h67
-rw-r--r--sysdeps/powerpc/s_fdim.c31
-rw-r--r--sysdeps/powerpc/s_fdimf.c27
-rw-r--r--sysdeps/powerpc/s_fmax.S43
-rw-r--r--sysdeps/powerpc/s_fmaxf.S1
-rw-r--r--sysdeps/powerpc/s_fmin.S43
-rw-r--r--sysdeps/powerpc/s_fminf.S1
-rw-r--r--sysdeps/powerpc/s_llrint.c11
-rw-r--r--sysdeps/powerpc/s_llrintf.c27
-rw-r--r--sysdeps/powerpc/s_llround.c12
-rw-r--r--sysdeps/powerpc/s_llroundf.c46
-rw-r--r--sysdeps/powerpc/s_lrint.c28
-rw-r--r--sysdeps/powerpc/s_lrintf.S1
-rw-r--r--sysdeps/powerpc/s_lround.c12
-rw-r--r--sysdeps/powerpc/s_lroundf.c46
-rw-r--r--sysdeps/powerpc/setjmp.S1
-rw-r--r--sysdeps/unix/sysv/linux/Dist3
-rw-r--r--sysdeps/unix/sysv/linux/Makefile4
-rw-r--r--sysdeps/unix/sysv/linux/alpha/kernel_sigaction.h2
-rw-r--r--sysdeps/unix/sysv/linux/alpha/mmap64.c1
-rw-r--r--sysdeps/unix/sysv/linux/alpha/net/route.h140
-rw-r--r--sysdeps/unix/sysv/linux/alpha/syscalls.list4
-rw-r--r--sysdeps/unix/sysv/linux/bits/socket.h3
-rw-r--r--sysdeps/unix/sysv/linux/i386/Dist2
-rw-r--r--sysdeps/unix/sysv/linux/i386/sigaction.c4
-rw-r--r--sysdeps/unix/sysv/linux/net/route.h3
-rw-r--r--sysdeps/unix/sysv/linux/netatalk/at.h6
-rw-r--r--sysdeps/unix/sysv/linux/netax25/ax25.h147
-rw-r--r--sysdeps/unix/sysv/linux/netrom/netrom.h80
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c7
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/kernel_termios.h2
-rw-r--r--sysdeps/unix/sysv/linux/sigaction.c4
-rw-r--r--sysdeps/unix/sysv/linux/sigpending.c2
-rw-r--r--sysdeps/unix/sysv/linux/sigprocmask.c2
-rw-r--r--sysdeps/unix/sysv/linux/sigsuspend.c4
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/mmap64.c1
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list1
-rw-r--r--sysdeps/unix/sysv/linux/stdio_lim.h.in5
-rw-r--r--sysdeps/unix/sysv/linux/sys/kd.h4
-rw-r--r--sysdeps/unix/sysv/linux/sys/mman.h10
-rw-r--r--sysdeps/wordsize-32/Dist5
-rw-r--r--sysdeps/wordsize-32/Makefile5
-rw-r--r--sysdeps/wordsize-64/Dist5
-rw-r--r--sysdeps/wordsize-64/Makefile5
81 files changed, 1437 insertions, 217 deletions
diff --git a/ChangeLog b/ChangeLog
index 00185bf0a3..db94809eb7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,137 @@
+1997-12-28 15:08  Ulrich Drepper  <drepper@cygnus.com>
+
+	* sysdeps/powerpc/__longjmp.S: Define _SETJMP_H before including
+	<bits/setjmp.h>.
+	* sysdeps/powerpc/setjmp.S: Likewise.
+	Patches by Matt McLean <keys@keys.got.net>.
+
+	* Make-dist (sysdep_dirs): Ignore bits dirs while searching.
+
+	* Makefile: Undo last patch.
+	(distribute): Add test-installation.pl.
+
+	* configure.in: Correct handling of --enable-add-ons without parameter.
+	Correct address of WWW pages.
+
+	* libc.map: Add _nl_domain_bindings.
+
+	* db2/mutex/tsl_parisc.s: New file.
+
+	* iconvdata/Makefile (distribute): Add jis0201.c, jis0208.c, jis0212.c,
+	and extra-module.mk.
+
+	* localedata/Makefile (distribute): New.  Add all the files.
+
+	* stdlib/Makefile (headers): Add inttypes.h.
+	(routines): Add strtoimax, strtoumax, wcstoimax, and wcstoumax.
+	* sysdeps/generic/inttypes.h: New file.
+	* sysdeps/generic/strtoimax.c: New file.
+	* sysdeps/generic/strtoumax.c: New file.
+	* sysdeps/generic/wcstoimax.c: New file.
+	* sysdeps/generic/wcstoumax.c: New file.
+	* sysdeps/wordsize-32/Dist: Removed.
+	* sysdeps/wordsize-32/Makefile: Removed.
+	* sysdeps/wordsize-64/Dist: Removed.
+	* sysdeps/wordsize-64/Makefile: Removed.
+	* sysdeps/generic/bits/environments.h: New file.
+
+	* include/limits.h: Define MB_LEN_MAX in any case to 6.  The gcc
+	header is still not correct.
+
+	* io/fcntl.h [__USE_FILE_OFFSET64]: We have to use the __*64 types.
+	* posix/unistd.h: Likewise.
+	* sysdeps/generic/sys/mman.h: Likewise.
+	* sysdeps/unix/sysv/linux/sys/mman.h: Likewise.
+
+	* manual/arith.texi: Change definition of mul macro.
+	* manual/math.texi: Likewise.
+
+	* misc/Makefile (routines): Add mmap64.
+	* sysdeps/generic/mmap64.c: New file.
+	* sysdeps/unix/sysv/linux/alpha/mmap64.c: New file.
+	* sysdeps/unix/sysv/linux/sparc/sparc64/mmap64.c: New file.
+	* sysdeps/unix/sysv/linux/alpha/syscalls.list: Add __mmap64 and mmap64
+	aliases to mmap.
+	* sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: Likewise.
+
+	* sysdeps/generic/setrlimit64.c: Don't mark as stub.
+
+	* nis/nss_nis/nis-hosts.c (internal_nis_gethostent_r): Pretty print.
+
+	* nis(rpcsvc/nis_tags.h: Prevent warning by unknown pragma.
+
+	* sysdeps/posix/mk-stdiolim.c: Generate correct file which defines
+	FOPEN_MAX also when included by limits.h.
+	* sysdeps/unix/sysv/linux/stdio_lim.h.in: Likewise.
+
+	* sysdeps/unix/sysv/linux/Dist: Add oldsiglist.c, netax25/ax25.h,
+	and netrom/netrom.h.
+	* sysdeps/unix/sysv/linux/Makefile [$(subdir)=stdio-common]: Add
+	oldsiglist to sysdep_routines, not aux.
+	[$(subdir)=inet] (sysdep_headers): Add netax25/ax25.h, netrom/netrom.h.
+
+	* sysdeps/unix/sysv/linux/bits/socket.h: Remove SOL_AX25, SOL_ATALK,
+	and SOL_NETROM definition.
+
+	* sysdeps/unix/sysv/linux/i386/Dist: Add s_pwrite64.S and s_pread64.S.
+
+	* sysdeps/unix/sysv/linux/net/route.h: Pretty print.
+	* sysdeps/unix/sysv/linux/netatalk/at.h: Pretty print.
+
+1997-12-25  Ulrich Drepper  <drepper@cygnus.com>
+
+	* sysdeps/unix/sysv/linux/alpha/net/route.h: New file.
+
+	* sysdeps/unix/sysv/linux/alpha/kernel_sigaction.h: Replace
+	sa_handler with k_sa_handler.
+	* sysdeps/unix/sysv/linux/alpha/syscalls.list: Add __getrlimit as
+	strong alias.
+	Reported by a sun.
+
+	* sysdeps/unix/sysv/linux/sigsuspend.c: Don't define
+	__libc_have_rt_sigs here.
+	* sysdeps/unix/sysv/linux/sigaction.c: Do it instead here.
+	* sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise.
+	* sysdeps/unix/sysv/linux/sigpending.c: Correct comment.
+	* sysdeps/unix/sysv/linux/sigprocmask.c: Likewise.
+
+1997-12-11 07:51  Geoff Keating  <geoffk@ozemail.com.au>
+
+	* sysdeps/powerpc/atomicity.h: New file.
+	* sysdeps/mach/powerpc/machine-lock.h: New file.
+
+	* Rules: Use -fpic to build anything that might end up in a users'
+	shared library.
+
+	* sysdeps/powerpc/s_fdim.c: New file.
+	* sysdeps/powerpc/s_fdimf.c: New file.
+	* sysdeps/powerpc/s_fmax.S: New file.
+	* sysdeps/powerpc/s_fmaxf.S: New file.
+	* sysdeps/powerpc/s_fmin.S: New file.
+	* sysdeps/powerpc/s_fminf.S: New file.
+	* sysdeps/powerpc/s_llrint.c: Now is for double.
+	* sysdeps/powerpc/s_llrintf.c: New file.
+	* sysdeps/powerpc/s_llround.c: Now is for double.
+	* sysdeps/powerpc/s_llroundf.c: New file.
+	* sysdeps/powerpc/s_lrint.c: Now is for double.
+	* sysdeps/powerpc/s_lrintf.S: New file.
+	* sysdeps/powerpc/s_lround.c: Now is for double.
+	* sysdeps/powerpc/s_lroundf.c: New file.
+	* sysdeps/powerpc/bits/mathinlines.h: Add inline versions of lrint,
+	lrintf, fdim, fdimf.
+
+	* sysdeps/unix/sysv/linux/powerpc/kernel_termios.h: Don't use bits/
+	file directly, use its parent.
+
+	* sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c: Re-instate '++'
+	(for the third time).
+
+1997-12-20 13:50  Richard Henderson  <rth@cygnus.com>
+
+	* posix/sched.h: timespec is in <time.h>.
+
+	* sysdeps/unix/sysv/linux/sys/kd.h: Don't redefine _LINUX_TYPES_H.
+
 1997-12-22 18:10  Ulrich Drepper  <drepper@cygnus.com>
 
 	* configure.in: Stop with error if --disable-static is used when
diff --git a/FAQ.in b/FAQ.in
index 62c943bd74..1d8918a1a2 100644
--- a/FAQ.in
+++ b/FAQ.in
@@ -42,7 +42,7 @@ few people have expressed interest.
 If you have a system not listed above (or in the `README' file) and
 you are really interested in porting it, contact
 
-	<bug-glibc@prep.ai.mit.edu>
+	<bug-glibc@gnu.org>
 
 ??	What compiler do I need to build GNU libc?
 
@@ -103,7 +103,7 @@ has not been ported to them.
   You should not need these tools unless you change the source files.
 
 * Some scripts need perl5 - but at the moment those scripts are not
-  vital for building and installing GNU libc (some data files will not 
+  vital for building and installing GNU libc (some data files will not
   be created).
 
 * When compiling for Linux, the header files of the Linux kernel must
diff --git a/Make-dist b/Make-dist
index 981d5e68f4..f77eb35507 100644
--- a/Make-dist
+++ b/Make-dist
@@ -34,7 +34,7 @@ foo:=$(shell echo 'foobar=$(filter %.c %.S %.s %.h,$(distribute))'>&2)
 
 ifndef sysdep_dirs
 # Find all sysdep directories.
-export sysdep_dirs := $(shell find $(..)sysdeps -type d \
+export sysdep_dirs := $(shell find $(..)sysdeps -type d ! -name bits \
 				   ! -name CVS ! -name RCS -print)
 else
 # Defined by the parent.
diff --git a/Makefile b/Makefile
index 9e7679bcf4..ed8d327ddc 100644
--- a/Makefile
+++ b/Makefile
@@ -188,19 +188,20 @@ $(version.c-objects): $(objpfx)version-info.h
 
 subdir-stubs := $(foreach dir,$(subdirs),$(common-objpfx)stub-$(dir))
 
-$(common-objpfx)stub-%: subdir_install
-
 # Since stubs.h is never needed when building the library, we simplify the
 # hairy installation process by producing it in place only as the last part
-# of the top-level `make install'.
-$(inst_includedir)/gnu/stubs.h: $(subdir-stubs)
+# of the top-level `make install'.  It depends on subdir_install, which
+# iterates over all the subdirs; subdir_install in each subdir depends on
+# the subdir's stubs file.  Having more direct dependencies would result in
+# extra iterations over the list for subdirs and many recursive makes.
+$(inst_includedir)/gnu/stubs.h: subdir_install
 	$(make-target-directory)
 	@rm -f $(objpfx)stubs.h
 	(echo '/* This file is automatically generated.';\
 	 echo '   It defines a symbol `__stub_FUNCTION'\'' for each function';\
 	 echo '   in the C library which is a stub, meaning it will fail';\
 	 echo '   every time called, usually setting errno to ENOSYS.  */';\
-	 sort $^) > $(objpfx)stubs.h
+	 sort $(subdir-stubs)) > $(objpfx)stubs.h
 	if test -r $@ && cmp -s $(objpfx)stubs.h $@; \
 	then echo 'stubs.h unchanged'; \
 	else $(INSTALL_DATA) $(objpfx)stubs.h $@; fi
@@ -315,7 +316,7 @@ distribute  := README INSTALL FAQ NOTES NEWS PROJECTS BUGS		\
 	       autolock.sh rellns-sh munch-tmpl.c munch.awk interp.c	\
 	       sysdep.h set-hooks.h libc-symbols.h version.h shlib-versions \
 	       rpm/Makefile rpm/template rpm/rpmrc glibcbug.in abi-tags	\
-	       stub-tag.h
+	       stub-tag.h test-installation.pl
 
 distribute := $(strip $(distribute))
 generated := $(generated) stubs.h version-info.h
diff --git a/PROJECTS b/PROJECTS
index d7291b8744..c8a196342b 100644
--- a/PROJECTS
+++ b/PROJECTS
@@ -86,7 +86,6 @@ contact <bug-glibc@prep.ai.mit.edu>
 
 [13] Several more or less small functions have to be written:
 
-     + tcgetid() and waitid()			from XPG4.2
      + grantpt(), ptsname(), unlockpt()		from XPG4.2
 
      More information is available on request.
@@ -97,6 +96,8 @@ contact <bug-glibc@prep.ai.mit.edu>
      This is needed in several places in the GNU libc and I already have
      rather concrete plans but so far no possibility to start this.
 
+***  The library is available, no it remains to be used in the streams.
+
 
 [15] Cleaning up the header files.  Ideally, each header style should
      follow the "good examples".  Each variable and function should have
diff --git a/README b/README
index 755d4ec667..4594cc5eb5 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-This directory contains the version 2.0.90 test release of the GNU C Library.
+This directory contains the version 2.0.91 test release of the GNU C Library.
 Many bugs have been fixed since the last release.
 Some bugs surely remain.
 
@@ -47,7 +47,7 @@ provides the Unix `crypt' function, plus some other entry points.
 Because of the United States export restriction on DES implementations,
 we are distributing this code separately from the rest of the C
 library.  There is an extra distribution tar file just for crypt; it is
-called `glibc-crypt-2.0.90.tar.gz'.  You can just unpack the crypt
+called `glibc-crypt-2.0.91.tar.gz'.  You can just unpack the crypt
 distribution along with the rest of the C library and build; you can
 also build the library without getting crypt.  Users outside the USA
 can get the crypt distribution via anonymous FTP from ftp.ifi.uio.no
@@ -80,7 +80,7 @@ in the GNU C library, explaining how you can tell the library what
 facilities you want it to make available.
 
 We prefer to get bug reports sent using the `glibcbug' shell script which
-is install together with the rest of the GNU libc to <bugs@gnu.org>.
+is installed together with the rest of the GNU libc to <bugs@gnu.org>.
 Simply run this shell script and fill in the information.  Nevertheless
 you can still send bug reports to <bug-glibc@prep.ai.mit.edu> as normal
 electronic mails.
diff --git a/README.template b/README.template
index 600a3e6d54..fbea883444 100644
--- a/README.template
+++ b/README.template
@@ -40,7 +40,7 @@ Since no one has volunteered to test and fix the above configurations,
 these are not supported at the moment.  It's expected that these don't
 work anymore.  Porting the library is not hard.  If you are interested
 in doing a port, please contact the glibc maintainers by sending
-electronic mail to <bug-glibc@prep.ai.mit.edu>.
+electronic mail to <bug-glibc@gnu.org>.
 
 The GNU C library now includes Michael Glad's Ultra Fast Crypt, which
 provides the Unix `crypt' function, plus some other entry points.
@@ -82,8 +82,8 @@ facilities you want it to make available.
 We prefer to get bug reports sent using the `glibcbug' shell script which
 is installed together with the rest of the GNU libc to <bugs@gnu.org>.
 Simply run this shell script and fill in the information.  Nevertheless
-you can still send bug reports to <bug-glibc@prep.ai.mit.edu> as normal
-electronic mails.
+you can still send bug reports to <bug-glibc@gnu.irg> as normal electronic
+mails.
 
 The GNU C Library is free software.  See the file COPYING.LIB for copying
 conditions.
diff --git a/Rules b/Rules
index c36e2c30d6..029f81b96e 100644
--- a/Rules
+++ b/Rules
@@ -171,6 +171,12 @@ ifdef static-only-routines
 $(static-only-routines:%=$(objpfx)%.os): %.os: $(common-objpfx)empty.os
 	rm -f $@
 	ln $< $@
+
+# Must build the routines as PIC, though, because they can end up in (users')
+# shared objects.  We don't want to use CFLAGS-os because users may, for
+# example, make that processor-specific.
+$(static-only-routines:%=$(objpfx)%.o): $(objpfx)%.o: %.c $(before-compile)
+	$(compile.c) $(pic-ccflag) $(OUTPUT_OPTION)
 endif
 
 ifdef shared-only-routines
diff --git a/bits/environments.h b/bits/environments.h
new file mode 100644
index 0000000000..8ed19906b4
--- /dev/null
+++ b/bits/environments.h
@@ -0,0 +1,35 @@
+/* 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 _UNISTD_H
+# error "Never include this file directly.  Use <unistd.h> instead"
+#endif
+
+/* This header should define the following symbols under the described
+   situations.  A value `1' means that the model is always supported,
+   `-1' means it is never supported.  Undefined means it cannot be
+   statically decided.
+
+   _XBS5_ILP32_OFF32	32bit int, long, pointers, and off_t type
+   _XBS5_ILP32_OFFBIG	32bit int, long, and pointers and larger off_t type
+
+   _XBS5_LP64_OFF32	64bit long and pointers and 32bit off_t type
+   _XBS5_LPBIG_OFFBIG	64bit long and pointers and large off_t type
+*/
+
+#endif /* environments.h */
diff --git a/configure b/configure
index 625d2f75ba..1e6489461b 100755
--- a/configure
+++ b/configure
@@ -694,8 +694,12 @@ fi
 if test "${enable_add_ons+set}" = set; then
   enableval="$enable_add_ons"
   case "$enableval" in
-    yes) add_ons=`echo $srcdir/*/configure | \
-		  sed -e "s!$srcdir/!!g" -e 's!/configure!!g'`;;
+    yes) if test "$srcdir" = "."; then
+	   add_ons=`echo */configure | sed -e 's!/configure!!g'`
+	 else
+	   add_ons=`echo $srcdir/*/configure | \
+		    sed -e "s!^$srcdir/!!g" -e 's!/configure!!g'`
+	 fi;;
     *) add_ons=`echo "$enableval" | sed 's/,/ /g'`;;
    esac
 else
@@ -758,7 +762,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
 fi
 
 echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:762: checking host system type" >&5
+echo "configure:766: checking host system type" >&5
 
 host_alias=$host
 case "$host_alias" in
@@ -809,7 +813,7 @@ if test -z "$enable_hacker_mode"; then
     echo "*** So far nobody cared to port it and if there is no volunteer it"
     echo "*** might never happen.  So, if you have interest to see glibc on"
     echo "*** this platform visit"
-    echo "***	http://www.gnu.ai.mit.edu/software/libc/porting.html"
+    echo "***	http://www.gnu.org/software/libc/porting.html"
     echo "*** and join the group of porters"
     exit 1
     ;;
@@ -877,7 +881,7 @@ fi
 # This can take a while to compute.
 sysdep_dir=$srcdir/sysdeps
 echo $ac_n "checking sysdep dirs""... $ac_c" 1>&6
-echo "configure:881: checking sysdep dirs" >&5
+echo "configure:885: checking sysdep dirs" >&5
 # Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
 os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
 
@@ -1078,7 +1082,7 @@ echo "$ac_t""sysdeps/generic" 1>&6
 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
 # ./install, which can be erroneously created by make from ./install.sh.
 echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:1082: checking for a BSD compatible install" >&5
+echo "configure:1086: checking for a BSD compatible install" >&5
 if test -z "$INSTALL"; then
 if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -1132,7 +1136,7 @@ if test "$INSTALL" = "${srcdir}/install-sh -c"; then
   INSTALL='\$(..)./install-sh -c'
 fi
 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:1136: checking whether ln -s works" >&5
+echo "configure:1140: checking whether ln -s works" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1157,7 +1161,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1161: checking for $ac_word" >&5
+echo "configure:1165: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_MSGFMT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1189,7 +1193,7 @@ test -n "$MSGFMT" || MSGFMT=":"
 # Extract the first word of "makeinfo", so it can be a program name with args.
 set dummy makeinfo; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1193: checking for $ac_word" >&5
+echo "configure:1197: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1229,7 +1233,7 @@ fi
 # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1233: checking for $ac_word" >&5
+echo "configure:1237: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1258,7 +1262,7 @@ if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1262: checking for $ac_word" >&5
+echo "configure:1266: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1306,7 +1310,7 @@ fi
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1310: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1314: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
 
 ac_ext=c
 # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -1316,11 +1320,11 @@ ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS
 cross_compiling=$ac_cv_prog_cc_cross
 
 cat > conftest.$ac_ext <<EOF
-#line 1320 "configure"
+#line 1324 "configure"
 #include "confdefs.h"
 main(){return(0);}
 EOF
-if { (eval echo configure:1324: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1328: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   ac_cv_prog_cc_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -1343,13 +1347,13 @@ else
  cross_linkable=yes
 fi
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1347: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1351: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
 
 cross_compiling=$ac_cv_prog_cc_cross
 
 echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1353: checking whether we are using GNU C" >&5
+echo "configure:1357: checking whether we are using GNU C" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1358,7 +1362,7 @@ else
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1362: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1366: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
   ac_cv_prog_gcc=yes
 else
   ac_cv_prog_gcc=no
@@ -1375,7 +1379,7 @@ if test $ac_cv_prog_gcc = yes; then
   yes;
 #endif
 EOF
-  if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1379: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+  if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1383: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
     if test -z "$CFLAGS"; then
       CFLAGS="-g -O2"
     fi
@@ -1387,7 +1391,7 @@ else
 fi
 
 echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:1391: checking build system type" >&5
+echo "configure:1395: checking build system type" >&5
 
 build_alias=$build
 case "$build_alias" in
@@ -1410,7 +1414,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1414: checking for $ac_word" >&5
+echo "configure:1418: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_BUILD_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1441,7 +1445,7 @@ done
 fi
 
 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:1445: checking how to run the C preprocessor" >&5
+echo "configure:1449: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -1456,13 +1460,13 @@ else
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 1460 "configure"
+#line 1464 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1466: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1470: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   :
@@ -1473,13 +1477,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 1477 "configure"
+#line 1481 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1483: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1487: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   :
@@ -1512,7 +1516,7 @@ LD=`$CC -print-file-name=ld`
 
 # Determine whether we are using GNU binutils.
 echo $ac_n "checking whether $AS is GNU as""... $ac_c" 1>&6
-echo "configure:1516: checking whether $AS is GNU as" >&5
+echo "configure:1520: checking whether $AS is GNU as" >&5
 if eval "test \"`echo '$''{'libc_cv_prog_as_gnu'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1530,7 +1534,7 @@ rm -f a.out
 gnu_as=$libc_cv_prog_as_gnu
 
 echo $ac_n "checking whether $LD is GNU ld""... $ac_c" 1>&6
-echo "configure:1534: checking whether $LD is GNU ld" >&5
+echo "configure:1538: checking whether $LD is GNU ld" >&5
 if eval "test \"`echo '$''{'libc_cv_prog_ld_gnu'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1554,7 +1558,7 @@ fi
 # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
 set dummy ${ac_tool_prefix}ar; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1558: checking for $ac_word" >&5
+echo "configure:1562: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1585,7 +1589,7 @@ fi
 # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
 set dummy ${ac_tool_prefix}ranlib; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1589: checking for $ac_word" >&5
+echo "configure:1593: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1616,7 +1620,7 @@ if test -n "$ac_tool_prefix"; then
   # Extract the first word of "ranlib", so it can be a program name with args.
 set dummy ranlib; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1620: checking for $ac_word" >&5
+echo "configure:1624: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1651,7 +1655,7 @@ fi
 # Extract the first word of "bash", so it can be a program name with args.
 set dummy bash; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1655: checking for $ac_word" >&5
+echo "configure:1659: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_BASH'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1693,7 +1697,7 @@ if test "$BASH" = no; then
   # Extract the first word of "ksh", so it can be a program name with args.
 set dummy ksh; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1697: checking for $ac_word" >&5
+echo "configure:1701: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_KSH'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1739,7 +1743,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1743: checking for $ac_word" >&5
+echo "configure:1747: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1774,7 +1778,7 @@ test -n "$PERL" || PERL="no"
 
 
 echo $ac_n "checking for signed size_t type""... $ac_c" 1>&6
-echo "configure:1778: checking for signed size_t type" >&5
+echo "configure:1782: checking for signed size_t type" >&5
 if eval "test \"`echo '$''{'libc_cv_signed_size_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1798,12 +1802,12 @@ EOF
 fi
 
 echo $ac_n "checking for libc-friendly stddef.h""... $ac_c" 1>&6
-echo "configure:1802: checking for libc-friendly stddef.h" >&5
+echo "configure:1806: checking for libc-friendly stddef.h" >&5
 if eval "test \"`echo '$''{'libc_cv_friendly_stddef'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1807 "configure"
+#line 1811 "configure"
 #include "confdefs.h"
 #define __need_size_t
 #define __need_wchar_t
@@ -1818,7 +1822,7 @@ size_t size; wchar_t wchar;
 if (&size == NULL || &wchar == NULL) abort ();
 ; return 0; }
 EOF
-if { (eval echo configure:1822: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1826: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   libc_cv_friendly_stddef=yes
 else
@@ -1837,7 +1841,7 @@ override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
 fi
 
 echo $ac_n "checking whether we need to use -P to assemble .S files""... $ac_c" 1>&6
-echo "configure:1841: checking whether we need to use -P to assemble .S files" >&5
+echo "configure:1845: checking whether we need to use -P to assemble .S files" >&5
 if eval "test \"`echo '$''{'libc_cv_need_minus_P'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1868,7 +1872,7 @@ if test $ac_cv_prog_gcc = yes; then
   # We must check this even if -pipe is not given here, because the user
   # might do `make CFLAGS=-pipe'.
   echo $ac_n "checking for gcc 2.7.x -pipe bug""... $ac_c" 1>&6
-echo "configure:1872: checking for gcc 2.7.x -pipe bug" >&5
+echo "configure:1876: checking for gcc 2.7.x -pipe bug" >&5
 if eval "test \"`echo '$''{'libc_cv_gcc_pipe_bug'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1897,7 +1901,7 @@ else
 fi
 
 echo $ac_n "checking for assembler global-symbol directive""... $ac_c" 1>&6
-echo "configure:1901: checking for assembler global-symbol directive" >&5
+echo "configure:1905: checking for assembler global-symbol directive" >&5
 if eval "test \"`echo '$''{'libc_cv_asm_global_directive'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1927,7 +1931,7 @@ EOF
 fi
 
 echo $ac_n "checking for .set assembler directive""... $ac_c" 1>&6
-echo "configure:1931: checking for .set assembler directive" >&5
+echo "configure:1935: checking for .set assembler directive" >&5
 if eval "test \"`echo '$''{'libc_cv_asm_set_directive'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1961,7 +1965,7 @@ EOF
 fi
 
 echo $ac_n "checking for .symver assembler directive""... $ac_c" 1>&6
-echo "configure:1965: checking for .symver assembler directive" >&5
+echo "configure:1969: checking for .symver assembler directive" >&5
 if eval "test \"`echo '$''{'libc_cv_asm_symver_directive'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1980,7 +1984,7 @@ fi
 
 echo "$ac_t""$libc_cv_asm_symver_directive" 1>&6
 echo $ac_n "checking for ld --version-script""... $ac_c" 1>&6
-echo "configure:1984: checking for ld --version-script" >&5
+echo "configure:1988: checking for ld --version-script" >&5
 if eval "test \"`echo '$''{'libc_cv_ld_version_script_option'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2003,7 +2007,7 @@ EOF
     if { ac_try='${CC-cc} $CFLAGS -shared -o conftest.so conftest.o
 					-nostartfiles -nostdlib
 					-Wl,--version-script,conftest.map
-		       1>&5'; { (eval echo configure:2007: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; };
+		       1>&5'; { (eval echo configure:2011: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; };
     then
       libc_cv_ld_version_script_option=yes
     else
@@ -2041,7 +2045,7 @@ if test $VERSIONING = no; then
 fi
 if test $elf = yes; then
   echo $ac_n "checking for .previous assembler directive""... $ac_c" 1>&6
-echo "configure:2045: checking for .previous assembler directive" >&5
+echo "configure:2049: checking for .previous assembler directive" >&5
 if eval "test \"`echo '$''{'libc_cv_asm_previous_directive'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2049,7 +2053,7 @@ else
 .section foo_section
 .previous
 EOF
-  if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2053: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+  if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2057: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
     libc_cv_asm_previous_directive=yes
   else
     libc_cv_asm_previous_directive=no
@@ -2065,7 +2069,7 @@ EOF
 
   else
     echo $ac_n "checking for .popsection assembler directive""... $ac_c" 1>&6
-echo "configure:2069: checking for .popsection assembler directive" >&5
+echo "configure:2073: checking for .popsection assembler directive" >&5
 if eval "test \"`echo '$''{'libc_cv_asm_popsection_directive'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2073,7 +2077,7 @@ else
 .pushsection foo_section
 .popsection
 EOF
-    if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2077: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+    if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2081: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
       libc_cv_asm_popsection_directive=yes
     else
       libc_cv_asm_popsection_directive=no
@@ -2093,12 +2097,12 @@ fi
 
 if test $elf != yes; then
   echo $ac_n "checking for .init and .fini sections""... $ac_c" 1>&6
-echo "configure:2097: checking for .init and .fini sections" >&5
+echo "configure:2101: checking for .init and .fini sections" >&5
 if eval "test \"`echo '$''{'libc_cv_have_initfini'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2102 "configure"
+#line 2106 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -2107,7 +2111,7 @@ asm (".section .init");
 				    asm (".text");
 ; return 0; }
 EOF
-if { (eval echo configure:2111: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2115: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   libc_cv_have_initfini=yes
 else
@@ -2135,19 +2139,19 @@ if test $elf = yes; then
 else
   if test $ac_cv_prog_cc_works = yes; then
     echo $ac_n "checking for _ prefix on C symbol names""... $ac_c" 1>&6
-echo "configure:2139: checking for _ prefix on C symbol names" >&5
+echo "configure:2143: checking for _ prefix on C symbol names" >&5
 if eval "test \"`echo '$''{'libc_cv_asm_underscores'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2144 "configure"
+#line 2148 "configure"
 #include "confdefs.h"
 asm ("_glibc_foobar:");
 int main() {
 glibc_foobar ();
 ; return 0; }
 EOF
-if { (eval echo configure:2151: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2155: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   libc_cv_asm_underscores=yes
 else
@@ -2162,17 +2166,17 @@ fi
 echo "$ac_t""$libc_cv_asm_underscores" 1>&6
   else
     echo $ac_n "checking for _ prefix on C symbol names""... $ac_c" 1>&6
-echo "configure:2166: checking for _ prefix on C symbol names" >&5
+echo "configure:2170: checking for _ prefix on C symbol names" >&5
 if eval "test \"`echo '$''{'libc_cv_asm_underscores'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2171 "configure"
+#line 2175 "configure"
 #include "confdefs.h"
 void underscore_test(void) {
 return; }
 EOF
-if { (eval echo configure:2176: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2180: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   if grep _underscore_test conftest* >/dev/null; then
     rm -f conftest*
     libc_cv_asm_underscores=yes
@@ -2205,7 +2209,7 @@ if test $elf = yes; then
   libc_cv_asm_weakext_directive=no
 else
   echo $ac_n "checking for assembler .weak directive""... $ac_c" 1>&6
-echo "configure:2209: checking for assembler .weak directive" >&5
+echo "configure:2213: checking for assembler .weak directive" >&5
 if eval "test \"`echo '$''{'libc_cv_asm_weak_directive'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2228,7 +2232,7 @@ echo "$ac_t""$libc_cv_asm_weak_directive" 1>&6
 
 if test $libc_cv_asm_weak_directive = no; then
   echo $ac_n "checking for assembler .weakext directive""... $ac_c" 1>&6
-echo "configure:2232: checking for assembler .weakext directive" >&5
+echo "configure:2236: checking for assembler .weakext directive" >&5
 if eval "test \"`echo '$''{'libc_cv_asm_weakext_directive'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2265,7 +2269,7 @@ EOF
 fi
 
 echo $ac_n "checking for ld --no-whole-archive""... $ac_c" 1>&6
-echo "configure:2269: checking for ld --no-whole-archive" >&5
+echo "configure:2273: checking for ld --no-whole-archive" >&5
 if eval "test \"`echo '$''{'libc_cv_ld_no_whole_archive'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2276,7 +2280,7 @@ __throw () {}
 EOF
 if { ac_try='${CC-cc} $CFLAGS
 			    -nostdlib -nostartfiles -Wl,--no-whole-archive
-			    -o conftest conftest.c 1>&5'; { (eval echo configure:2280: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+			    -o conftest conftest.c 1>&5'; { (eval echo configure:2284: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
   libc_cv_ld_no_whole_archive=yes
 else
   libc_cv_ld_no_whole_archive=no
@@ -2287,7 +2291,7 @@ fi
 echo "$ac_t""$libc_cv_ld_no_whole_archive" 1>&6
 
 echo $ac_n "checking for gcc -fno-exceptions""... $ac_c" 1>&6
-echo "configure:2291: checking for gcc -fno-exceptions" >&5
+echo "configure:2295: checking for gcc -fno-exceptions" >&5
 if eval "test \"`echo '$''{'libc_cv_gcc_no_exceptions'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2298,7 +2302,7 @@ __throw () {}
 EOF
 if { ac_try='${CC-cc} $CFLAGS
 			    -nostdlib -nostartfiles -fno-exceptions
-			    -o conftest conftest.c 1>&5'; { (eval echo configure:2302: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+			    -o conftest conftest.c 1>&5'; { (eval echo configure:2306: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
   libc_cv_gcc_no_exceptions=yes
 else
   libc_cv_gcc_no_exceptions=no
@@ -2310,14 +2314,14 @@ echo "$ac_t""$libc_cv_gcc_no_exceptions" 1>&6
 
 if test "$base_machine" = alpha ; then
 echo $ac_n "checking for function ..ng prefix""... $ac_c" 1>&6
-echo "configure:2314: checking for function ..ng prefix" >&5
+echo "configure:2318: checking for function ..ng prefix" >&5
 if eval "test \"`echo '$''{'libc_cv_gcc_alpha_ng_prefix'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.c <<\EOF
 foo () { }
 EOF
-if { ac_try='${CC-cc} -S conftest.c -o - | fgrep "\$foo..ng" > /dev/null'; { (eval echo configure:2321: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; };
+if { ac_try='${CC-cc} -S conftest.c -o - | fgrep "\$foo..ng" > /dev/null'; { (eval echo configure:2325: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; };
 then
   libc_cv_gcc_alpha_ng_prefix=yes
 else
@@ -2341,12 +2345,12 @@ fi
 fi
 
 echo $ac_n "checking for DWARF2 unwind info support""... $ac_c" 1>&6
-echo "configure:2345: checking for DWARF2 unwind info support" >&5
+echo "configure:2349: checking for DWARF2 unwind info support" >&5
 if eval "test \"`echo '$''{'libc_cv_gcc_dwarf2_unwind_info'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.c <<EOF
-#line 2350 "configure"
+#line 2354 "configure"
 static char __EH_FRAME_BEGIN__;
 _start ()
 {
@@ -2373,7 +2377,7 @@ __bzero () {}
 EOF
 if { ac_try='${CC-cc} $CFLAGS -DCHECK__register_frame_info
 			    -nostdlib -nostartfiles
-			    -o conftest conftest.c -lgcc >&5'; { (eval echo configure:2377: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+			    -o conftest conftest.c -lgcc >&5'; { (eval echo configure:2381: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
   libc_cv_gcc_dwarf2_unwind_info=static
 else
   libc_cv_gcc_dwarf2_unwind_info=no
@@ -2381,7 +2385,7 @@ fi
 if test $libc_cv_gcc_dwarf2_unwind_info = no; then
   if { ac_try='${CC-cc} $CFLAGS -DCHECK__register_frame
 			      -nostdlib -nostartfiles
-			      -o conftest conftest.c -lgcc >&5'; { (eval echo configure:2385: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+			      -o conftest conftest.c -lgcc >&5'; { (eval echo configure:2389: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
     libc_cv_gcc_dwarf2_unwind_info=yes
   else
     libc_cv_gcc_dwarf2_unwind_info=no
@@ -2452,7 +2456,7 @@ if test "$uname" = "sysdeps/generic"; then
   fi
 
   echo $ac_n "checking OS release for uname""... $ac_c" 1>&6
-echo "configure:2456: checking OS release for uname" >&5
+echo "configure:2460: checking OS release for uname" >&5
 if eval "test \"`echo '$''{'libc_cv_uname_release'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2474,7 +2478,7 @@ echo "$ac_t""$libc_cv_uname_release" 1>&6
   uname_release="$libc_cv_uname_release"
 
   echo $ac_n "checking OS version for uname""... $ac_c" 1>&6
-echo "configure:2478: checking OS version for uname" >&5
+echo "configure:2482: checking OS version for uname" >&5
 if eval "test \"`echo '$''{'libc_cv_uname_version'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2496,7 +2500,7 @@ else
 fi
 
 echo $ac_n "checking stdio selection""... $ac_c" 1>&6
-echo "configure:2500: checking stdio selection" >&5
+echo "configure:2504: checking stdio selection" >&5
 
 case $stdio in
 libio) cat >> confdefs.h <<\EOF
@@ -2508,7 +2512,7 @@ esac
 echo "$ac_t""$stdio" 1>&6
 
 echo $ac_n "checking ldap selection""... $ac_c" 1>&6
-echo "configure:2512: checking ldap selection" >&5
+echo "configure:2516: checking ldap selection" >&5
 
 case $add_ons in
 *ldap*)
@@ -2570,7 +2574,7 @@ if test $static = no && test $shared = yes; then
 fi
 
 echo $ac_n "checking whether -fPIC is default""... $ac_c" 1>&6
-echo "configure:2574: checking whether -fPIC is default" >&5
+echo "configure:2578: checking whether -fPIC is default" >&5
 if eval "test \"`echo '$''{'pic_default'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
diff --git a/configure.in b/configure.in
index 4aeeae047a..5f6dae1ed7 100644
--- a/configure.in
+++ b/configure.in
@@ -84,8 +84,12 @@ AC_ARG_ENABLE(add-ons, dnl
 [  --enable-add-ons[=DIR1,DIR2]... configure and build add-ons in DIR1,DIR2,...
                                   search for add-ons if no parameter given],
   [case "$enableval" in
-    yes) add_ons=`echo $srcdir/*/configure | \
-		  sed -e "s!$srcdir/!!g" -e 's!/configure!!g'`;;
+    yes) if test "$srcdir" = "."; then
+	   add_ons=`echo */configure | sed -e 's!/configure!!g'`
+	 else
+	   add_ons=`echo $srcdir/*/configure | \
+		    sed -e "s!^$srcdir/!!g" -e 's!/configure!!g'`
+	 fi;;
     *) add_ons=`echo "$enableval" | sed 's/,/ /g'`;;
    esac],
   [add_ons=])
@@ -144,7 +148,7 @@ if test -z "$enable_hacker_mode"; then
     echo "*** So far nobody cared to port it and if there is no volunteer it"
     echo "*** might never happen.  So, if you have interest to see glibc on"
     echo "*** this platform visit"
-    echo "***	http://www.gnu.ai.mit.edu/software/libc/porting.html"
+    echo "***	http://www.gnu.org/software/libc/porting.html"
     echo "*** and join the group of porters"
     exit 1
     ;;
diff --git a/db2/mutex/tsl_parisc.s b/db2/mutex/tsl_parisc.s
new file mode 100644
index 0000000000..e6054944ec
--- /dev/null
+++ b/db2/mutex/tsl_parisc.s
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 1996-1997 The University of Utah and the Computer Systems
+ * Laboratory at the University of Utah (CSL).  All rights reserved.
+ *
+ * Permission to use, copy, modify and distribute this software is hereby
+ * granted provided that (1) source code retains these copyright, permission,
+ * and disclaimer notices, and (2) redistributions including binaries
+ * reproduce the notices in supporting documentation, and (3) all advertising
+ * materials mentioning features or use of this software display the following
+ * acknowledgement: ``This product includes software developed by the Computer
+ * Systems Laboratory at the University of Utah.''
+ *
+ * THE UNIVERSITY OF UTAH AND CSL ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS
+ * IS" CONDITION.  THE UNIVERSITY OF UTAH AND CSL DISCLAIM ANY LIABILITY OF
+ * ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
+ *
+ * CSL requests users of this software to return to csl-dist@cs.utah.edu any
+ * improvements that they make and grant CSL redistribution rights.
+ *
+ *	@(#)tsl_parisc.s	8.4 (Sleepycat) 1/18/97
+ */
+
+/*
+ * Spin locks for the PA-RISC.  Based on Bob Wheeler's Mach implementation.
+ */
+	.SPACE	$TEXT$
+	.SUBSPA $CODE$
+
+/*
+ * int tsl_set(tsl_t *tsl)
+ *
+ * Try to acquire a lock, return 1 if successful, 0 if not.
+ */
+	.EXPORT	tsl_set,ENTRY
+tsl_set
+	.PROC
+	.CALLINFO FRAME=0,NO_CALLS
+	.ENTRY
+	ldo	15(%r26),%r26
+	depi	0,31,4,%r26
+	ldcws	0(%r26),%r28
+	subi,=	0,%r28,%r0
+	ldi	1,%r28
+	bv,n	0(%r2)
+	.EXIT
+	.PROCEND
+
+
+/*
+ * void tsl_unset(tsl_t *tsl)
+ *
+ * Release a lock.
+ */
+	.EXPORT	tsl_unset,ENTRY
+tsl_unset
+	.PROC
+	.CALLINFO FRAME=0,NO_CALLS
+	.ENTRY
+	ldo	15(%r26),%r26
+	ldi	-1,%r19
+	depi	0,31,4,%r26
+	bv	0(%r2)
+	stw	%r19,0(%r26)
+	.EXIT
+	.PROCEND
diff --git a/iconvdata/Makefile b/iconvdata/Makefile
index 0b64ba4a66..e5bfb7ab72 100644
--- a/iconvdata/Makefile
+++ b/iconvdata/Makefile
@@ -55,13 +55,14 @@ EBCDIC-AT-DE-A-routines := ebcdic-at-de-a
 EBCDIC-CA-FR-routines := ebcdic-ca-fr
 libJIS-routines := jis0201 jis0208 jis0212
 
-distribute := 8bit-generic.c 8bit-gap.c gap.pl gaptab.pl \
-	      iso8859-1.c iso8859-2.c iso8859-3.c iso8859-4.c iso8859-5.c \
-	      iso8859-6.c iso8859-7.c iso8859-8.c iso8859-9.c iso8859-10.c\
-	      t61.c iso6937.c sjis.c jis0201.h jis0208.h jis0212.h	  \
-	      koi-8.c koi8-r.c koi8-r.h hp-roman8.c latin-greek.c	  \
-	      latin-greek.h latin-greek-1.c latin-greek-1.h ebcdic-at-de.c\
-	      ebcdic-at-de-a.c ebcdic-ca-fr.c
+distribute := 8bit-generic.c 8bit-gap.c gap.pl gaptab.pl gconv-modules	    \
+	      iso8859-1.c iso8859-2.c iso8859-3.c iso8859-4.c iso8859-5.c   \
+	      iso8859-6.c iso8859-7.c iso8859-8.c iso8859-9.c iso8859-10.c  \
+	      t61.c iso6937.c sjis.c jis0201.h jis0208.h jis0212.h	    \
+	      koi-8.c koi8-r.c koi8-r.h hp-roman8.c latin-greek.c	    \
+	      latin-greek.h latin-greek-1.c latin-greek-1.h ebcdic-at-de.c  \
+	      ebcdic-at-de-a.c ebcdic-ca-fr.c jis0201.c jis0208.c jis0212.c \
+	      extra-module.mk
 
 # We build the transformation modules only when we build shared libs.
 ifeq (yes,$(build-shared))
diff --git a/include/limits.h b/include/limits.h
index ab51f48331..b149ba1a73 100644
--- a/include/limits.h
+++ b/include/limits.h
@@ -39,6 +39,12 @@
 #endif
 
 
+/* Maximum length of any multibyte character in any locale.
+   We define this value here since the gcc header does not define
+   the correct value.  */
+#define MB_LEN_MAX	6
+
+
 #if __GNUC__ >= 2
 
  /* Get the compiler's limits.h, which defines all the ANSI constants.  */
@@ -63,9 +69,6 @@
 /* Number of bits in a `char'.	*/
 #  define CHAR_BIT	8
 
-/* Maximum length of any multibyte character in any locale.  */
-#  define MB_LEN_MAX	6
-
 /* Minimum and maximum values a `signed char' can hold.  */
 #  define SCHAR_MIN	(-128)
 #  define SCHAR_MAX	127
diff --git a/io/fcntl.h b/io/fcntl.h
index 14a165539b..17120fadc2 100644
--- a/io/fcntl.h
+++ b/io/fcntl.h
@@ -99,7 +99,7 @@ extern int creat64 __P ((__const char *__file, __mode_t __mode));
 # ifndef __USE_FILE_OFFSET64
 extern int lockf __P ((int __fd, int __cmd, __off_t __len));
 # else
-extern int lockf __P ((int __fd, int __cmd, __off_t __len))
+extern int lockf __P ((int __fd, int __cmd, __off64_t __len))
      __asm__ ("lockf64");
 # endif
 # ifdef __USE_LARGEFILE64
diff --git a/libc.map b/libc.map
index 902d8f89c8..4bc3a4e27c 100644
--- a/libc.map
+++ b/libc.map
@@ -6,7 +6,7 @@ GLIBC_2.0 {
     _nl_msg_cat_cntr; __environ; _environ; _res;
     ___brk_addr; __curbrk; _nl_current_LC_CTYPE; _libc_intl_domainname;
     _sys_errlist; _sys_siglist; __progname; _nl_default_dirname;
-    __timezone; __daylight; __tzname;
+    _nl_domain_bindings; __timezone; __daylight; __tzname;
     _nl_current_LC_COLLATE; __collate_element_hash;
     __collate_element_strings; __collate_symbol_classes;
     __collate_symbol_hash; __collate_symbol_strings;
diff --git a/manual/arith.texi b/manual/arith.texi
index 3a6bb434de..563d9859af 100644
--- a/manual/arith.texi
+++ b/manual/arith.texi
@@ -2,17 +2,23 @@
 @ifclear cdot
 @ifhtml
 @set cdot ·
+@macro mul

+@end macro
 @end ifhtml
 @iftex
-@set cdot @cdot
+@set cdot ·
+@macro mul
+@cdot
+@end macro
 @end iftex
 @ifclear cdot
 @set cdot x
-@end ifclear
 @macro mul
-@value{cdot}
+x
 @end macro
 @end ifclear
+@end ifclear
 
 @node Arithmetic, Date and Time, Mathematics, Top
 @chapter Low-Level Arithmetic Functions
@@ -211,6 +217,13 @@ This function returns @code{-1} if @var{x} represents negative infinity,
 This function returns a nonzero value if @var{x} is a ``not a number''
 value, and zero otherwise.  (You can just as well use @code{@var{x} !=
 @var{x}} to get the same result).
+
+However, @code{isnan} will not raise an invalid exception if @var{x} is
+a signalling NaN, while @code{@var{x} != @var{x}} will.  This makes
+@code{isnan} much slower than the alternative; in code where performance
+matters and signalling NaNs are unimportant, it's usually better to use
+@code{@var{x} != @var{x}}, even though this is harder to understand.
+
 @end deftypefun
 
 @comment math.h
diff --git a/manual/math.texi b/manual/math.texi
index d6206eb4fe..b784afe52b 100644
--- a/manual/math.texi
+++ b/manual/math.texi
@@ -2,17 +2,23 @@
 @ifclear cdot
 @ifhtml
 @set cdot ·
+@macro mul

+@end macro
 @end ifhtml
 @iftex
-@set cdot @cdot
+@set cdot ·
+@macro mul
+@cdot
+@end macro
 @end iftex
 @ifclear cdot
 @set cdot x
-@end ifclear
 @macro mul
-@value{cdot}
+x
 @end macro
 @end ifclear
+@end ifclear
 @iftex
 @set infty @infty
 @end iftex
diff --git a/misc/Makefile b/misc/Makefile
index 842f9839bb..1dfde43f7e 100644
--- a/misc/Makefile
+++ b/misc/Makefile
@@ -52,7 +52,7 @@ routines := brk sbrk sstk ioctl \
 	    chflags fchflags \
 	    insremque getttyent getusershell getpass ttyslot \
 	    syslog syscall daemon \
-	    mmap munmap mprotect msync madvise \
+	    mmap munmap mprotect msync madvise mmap64 \
 	    efgcvt efgcvt_r qefgcvt qefgcvt_r \
 	    hsearch hsearch_r tsearch lsearch \
 	    err error ustat \
diff --git a/nis/nss_nis/nis-hosts.c b/nis/nss_nis/nis-hosts.c
index f08a624c37..e627d24399 100644
--- a/nis/nss_nis/nis-hosts.c
+++ b/nis/nss_nis/nis-hosts.c
@@ -199,7 +199,8 @@ internal_nis_gethostent_r (struct hostent *host, char *buffer,
 	++p;
       free (result);
 
-      if ((parse_res = parse_line (p, host, data, buflen, errnop)) == -1)
+      parse_res = parse_line (p, host, data, buflen, errnop);
+      if (parse_res == -1)
 	{
 	  free (outkey);
 	  *h_errnop = NETDB_INTERNAL;
diff --git a/nis/rpcsvc/nis_tags.h b/nis/rpcsvc/nis_tags.h
index 19a5bcab19..9a24188f98 100644
--- a/nis/rpcsvc/nis_tags.h
+++ b/nis/rpcsvc/nis_tags.h
@@ -12,7 +12,9 @@
 #ifndef	_RPCSVC_NIS_TAGS_H
 #define	_RPCSVC_NIS_TAGS_H
 
+#if 0
 #pragma ident	"@(#)nis_tags.h	1.16	96/10/25 SMI"
+#endif
 /* from file: zns_tags.h	1.7 Copyright (c) 1990 Sun Microsystems */
 
 #ifdef	__cplusplus
diff --git a/posix/sched.h b/posix/sched.h
index ae0f634fa4..b5c44996d4 100644
--- a/posix/sched.h
+++ b/posix/sched.h
@@ -1,5 +1,5 @@
 /* Definitions for POSIX 1003.1b-1993 (aka POSIX.4) scheduling interface.
-   Copyright (C) 1996 Free Software Foundation, Inc.
+   Copyright (C) 1996, 1997 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -24,7 +24,9 @@
 
 /* Get type definitions.  */
 #include <bits/types.h>
-#include <sys/time.h>		/* for struct timespec */
+
+#define __need_timespec
+#include <time.h>
 
 /* Get system specific constant and data structure definitions.  */
 #include <bits/sched.h>
diff --git a/posix/unistd.h b/posix/unistd.h
index 0147594f53..9e1cc8e8e0 100644
--- a/posix/unistd.h
+++ b/posix/unistd.h
@@ -273,7 +273,7 @@ extern __off_t __lseek __P ((int __fd, __off_t __offset, int __whence));
 #ifndef __USE_FILE_OFFSET64
 extern __off_t lseek __P ((int __fd, __off_t __offset, int __whence));
 #else
-extern __off_t lseek __P ((int __fd, __off_t __offset, int __whence))
+extern __off_t lseek __P ((int __fd, __off64_t __offset, int __whence))
      __asm__ ("lseek64");
 #endif
 #ifdef __USE_LARGEFILE64
@@ -304,7 +304,7 @@ extern ssize_t pread __P ((int __fd, __ptr_t __buf, size_t __nbytes,
 			   __off_t __offset));
 # else
 extern ssize_t pread __P ((int __fd, __ptr_t __buf, size_t __nbytes,
-			   __off_t __offset)) __asm__ ("pread64");
+			   __off64_t __offset)) __asm__ ("pread64");
 # endif
 extern ssize_t __pread64 __P ((int __fd, __ptr_t __buf, size_t __nbytes,
 			       __off64_t __offset));
@@ -322,7 +322,7 @@ extern ssize_t pwrite __P ((int __fd, __const __ptr_t __buf, size_t __n,
 			    __off_t __offset));
 # else
 extern ssize_t pwrite __P ((int __fd, __const __ptr_t __buf, size_t __n,
-			    __off_t __offset)) __asm__ ("pwrite64");
+			    __off64_t __offset)) __asm__ ("pwrite64");
 # endif
 extern ssize_t __pwrite64 __P ((int __fd, __const __ptr_t __buf, size_t __n,
 				__off64_t __offset));
@@ -878,7 +878,7 @@ extern int getpagesize __P ((void));
 #ifndef __USE_FILE_OFFSET64
 extern int truncate __P ((__const char *__file, __off_t __length));
 #else
-extern int truncate __P ((__const char *__file, __off_t __length))
+extern int truncate __P ((__const char *__file, __off64_t __length))
      __asm__ ("truncate64");
 #endif
 #ifdef __USE_LARGEFILE64
@@ -889,7 +889,7 @@ extern int truncate64 __P ((__const char *__file, __off64_t __length));
 #ifndef __USE_FILE_OFFSET64
 extern int ftruncate __P ((int __fd, __off_t __length));
 #else
-extern int ftruncate __P ((int __fd, __off_t __length))
+extern int ftruncate __P ((int __fd, __off64_t __length))
      __asm__ ("ftruncate64");
 #endif
 #ifdef __USE_LARGEFILE64
@@ -957,7 +957,7 @@ extern long int syscall __P ((long int __sysno, ...));
 # ifndef __USE_FILE_OFFSET64
 extern int lockf __P ((int __fd, int __cmd, __off_t __len));
 # else
-extern int lockf __P ((int __fd, int __cmd, __off_t __len))
+extern int lockf __P ((int __fd, int __cmd, __off64_t __len))
      __asm__ ("lockf64");
 # endif
 # ifdef __USE_LARGEFILE64
diff --git a/stdlib/Makefile b/stdlib/Makefile
index 0076ad4fff..2d297e5191 100644
--- a/stdlib/Makefile
+++ b/stdlib/Makefile
@@ -21,7 +21,8 @@
 #
 subdir	:= stdlib
 
-headers	:= stdlib.h alloca.h monetary.h fmtmsg.h ucontext.h sys/ucontext.h
+headers	:= stdlib.h alloca.h monetary.h fmtmsg.h ucontext.h sys/ucontext.h    \
+	   inttypes.h
 
 routines	:=							      \
 	atof atoi atol atoll						      \
@@ -44,7 +45,8 @@ routines	:=							      \
 	strtof_l strtod_l strtold_l					      \
 	system canonicalize						      \
 	a64l l64a							      \
-	rpmatch strfmon strfmon_l getsubopt xpg_basename fmtmsg
+	rpmatch strfmon strfmon_l getsubopt xpg_basename fmtmsg		      \
+	strtoimax strtoumax wcstoimax wcstoumax
 
 distribute	:= exit.h grouping.h abort-instr.h
 tests		:= tst-strtol tst-strtod testmb testrand testsort testdiv \
diff --git a/sysdeps/generic/bits/environments.h b/sysdeps/generic/bits/environments.h
new file mode 100644
index 0000000000..8ed19906b4
--- /dev/null
+++ b/sysdeps/generic/bits/environments.h
@@ -0,0 +1,35 @@
+/* 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 _UNISTD_H
+# error "Never include this file directly.  Use <unistd.h> instead"
+#endif
+
+/* This header should define the following symbols under the described
+   situations.  A value `1' means that the model is always supported,
+   `-1' means it is never supported.  Undefined means it cannot be
+   statically decided.
+
+   _XBS5_ILP32_OFF32	32bit int, long, pointers, and off_t type
+   _XBS5_ILP32_OFFBIG	32bit int, long, and pointers and larger off_t type
+
+   _XBS5_LP64_OFF32	64bit long and pointers and 32bit off_t type
+   _XBS5_LPBIG_OFFBIG	64bit long and pointers and large off_t type
+*/
+
+#endif /* environments.h */
diff --git a/sysdeps/generic/inttypes.h b/sysdeps/generic/inttypes.h
new file mode 100644
index 0000000000..c5a74b8d2d
--- /dev/null
+++ b/sysdeps/generic/inttypes.h
@@ -0,0 +1 @@
+#error "This file must be written based on the data typs sizes of the target"
diff --git a/sysdeps/generic/mmap64.c b/sysdeps/generic/mmap64.c
new file mode 100644
index 0000000000..c0e886867a
--- /dev/null
+++ b/sysdeps/generic/mmap64.c
@@ -0,0 +1,48 @@
+/* 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.  */
+
+#include <errno.h>
+#include <sys/mman.h>
+#include <sys/types.h>
+
+/* Map addresses starting near ADDR and extending for LEN bytes.  From
+   OFFSET into the file FD describes according to PROT and FLAGS.  If ADDR
+   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 MAP_FAILED
+   for errors (in which case `errno' is set).  A successful `mmap' call
+   deallocates any previous mapping for the affected region.  */
+
+__ptr_t
+__mmap64 (__ptr_t addr, size_t len, int prot, int flags, int fd,
+	  __off64_t offset)
+{
+  off_t small_offset = (off_t) offset;
+
+  if (small_offset != offset)
+    {
+      /* We cannot do this since the offset is too large.  */
+      __set_errno (EOVERFLOW);
+      return MAP_FAILED;
+    }
+
+  return __mmap (addr, len, prot, flags, fd, small_offset);
+}
+
+weak_alias (__mmap64, mmap64)
diff --git a/sysdeps/generic/setrlimit64.c b/sysdeps/generic/setrlimit64.c
index 97329c58d8..57c5da44c1 100644
--- a/sysdeps/generic/setrlimit64.c
+++ b/sysdeps/generic/setrlimit64.c
@@ -43,4 +43,3 @@ setrlimit64 (resource, rlimits)
 }
 
 stub_warning (setrlimit64)
-#include <stub-tag.h>
diff --git a/sysdeps/generic/strtoimax.c b/sysdeps/generic/strtoimax.c
new file mode 100644
index 0000000000..f1de70f320
--- /dev/null
+++ b/sysdeps/generic/strtoimax.c
@@ -0,0 +1 @@
+#error "The correct implementation must be chosen based on the `intmax_t' type"
diff --git a/sysdeps/generic/strtoumax.c b/sysdeps/generic/strtoumax.c
new file mode 100644
index 0000000000..508cb19f8c
--- /dev/null
+++ b/sysdeps/generic/strtoumax.c
@@ -0,0 +1 @@
+#error "The correct implementation must be chosen based on the `uintmax_t' type"
diff --git a/sysdeps/generic/sys/mman.h b/sysdeps/generic/sys/mman.h
index f8ca3f03ee..f6e0196f70 100644
--- a/sysdeps/generic/sys/mman.h
+++ b/sysdeps/generic/sys/mman.h
@@ -100,6 +100,8 @@ extern __ptr_t mmap __P ((__ptr_t __addr, size_t __len, int __prot,
      __asm__ ("mmap64");
 #endif
 #ifdef __USE_LARGEFILE64
+extern __ptr_t __mmap64 __P ((__ptr_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
diff --git a/sysdeps/generic/wcstoimax.c b/sysdeps/generic/wcstoimax.c
new file mode 100644
index 0000000000..f1de70f320
--- /dev/null
+++ b/sysdeps/generic/wcstoimax.c
@@ -0,0 +1 @@
+#error "The correct implementation must be chosen based on the `intmax_t' type"
diff --git a/sysdeps/generic/wcstoumax.c b/sysdeps/generic/wcstoumax.c
new file mode 100644
index 0000000000..508cb19f8c
--- /dev/null
+++ b/sysdeps/generic/wcstoumax.c
@@ -0,0 +1 @@
+#error "The correct implementation must be chosen based on the `uintmax_t' type"
diff --git a/sysdeps/mach/powerpc/machine-lock.h b/sysdeps/mach/powerpc/machine-lock.h
new file mode 100644
index 0000000000..543927d048
--- /dev/null
+++ b/sysdeps/mach/powerpc/machine-lock.h
@@ -0,0 +1,75 @@
+/* Machine-specific definition for spin locks.  PowerPC version.
+   Copyright (C) 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.  */
+
+#ifndef _MACHINE_LOCK_H
+#define	_MACHINE_LOCK_H
+
+/* The type of a spin lock variable.  */
+
+typedef __volatile long int __spin_lock_t;
+
+/* Value to initialize `__spin_lock_t' variables to.  */
+
+#define	__SPIN_LOCK_INITIALIZER	0L
+
+
+#ifndef _EXTERN_INLINE
+#define _EXTERN_INLINE extern __inline
+#endif
+
+/* Unlock LOCK.  */
+
+_EXTERN_INLINE void
+__spin_unlock (__spin_lock_t *__lock)
+{
+  __asm__ __volatile__ ("sync ; stwcx. %1,0,%0"
+			: : "r" (__lock), "r" (0) : "cr0");
+}
+
+/* Try to lock LOCK; return nonzero if we locked it, zero if another has.  */
+
+_EXTERN_INLINE int
+__spin_try_lock (register __spin_lock_t *__lock)
+{
+  long int __rtn;
+
+  __asm__ __volatile__ ("\
+0:	lwarx	%0,0,%1
+	stwcx.	%2,0,%1
+	bne-	0b
+" : "=&r"(__rtn) : "r"(__lock), "r"(1) : "cr0");
+  return ~__rtn;
+}
+
+/* Return nonzero if LOCK is locked.  */
+
+_EXTERN_INLINE int
+__spin_lock_locked (__spin_lock_t *__lock)
+{
+  long int __rtn;
+  __asm__ __volatile__ ("\
+0:	lwarx	%0,0,%1
+	stwcx.	%0,0,%1
+	bne-	0b
+" : "=&r"(__rtn) : "r"(__lock) : "cr0");
+  return __rtn;
+}
+
+
+#endif /* machine-lock.h */
diff --git a/sysdeps/posix/mk-stdiolim.c b/sysdeps/posix/mk-stdiolim.c
index 8858ebeae5..ec482dee96 100644
--- a/sysdeps/posix/mk-stdiolim.c
+++ b/sysdeps/posix/mk-stdiolim.c
@@ -49,7 +49,7 @@ main()
 
   /* These values correspond to the code in sysdeps/posix/tempname.c.
      Change the values here if you change that code.  */
-  puts ("#ifndef __need_FOPEN_MAX");
+  puts ("#ifdef _STDIO_H");
   printf ("# define L_tmpnam %u\n", sizeof ("/usr/tmp/") + 9);
   printf ("# define TMP_MAX %u\n", 62 * 62 * 62);
 
@@ -74,6 +74,8 @@ main()
 #endif
 	  );
 
+  puts ("# undef __need_FOPEN_MAX");
+  puts ("# define __need_FOPEN_MAX	1");
   puts ("#endif\n");
 
   /* POSIX does not require that OPEN_MAX and PATH_MAX be defined, so
diff --git a/sysdeps/powerpc/__longjmp.S b/sysdeps/powerpc/__longjmp.S
index 4a22fb8952..5d6422c500 100644
--- a/sysdeps/powerpc/__longjmp.S
+++ b/sysdeps/powerpc/__longjmp.S
@@ -19,6 +19,7 @@
 
 #include <sysdep.h>
 #define _ASM
+#define _SETJMP_H
 #include <bits/setjmp.h>
 
 ENTRY (__longjmp)
diff --git a/sysdeps/powerpc/atomicity.h b/sysdeps/powerpc/atomicity.h
new file mode 100644
index 0000000000..dba09658cb
--- /dev/null
+++ b/sysdeps/powerpc/atomicity.h
@@ -0,0 +1,99 @@
+/* Low-level functions for atomic operations.  PowerPC version.
+   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 _ATOMICITY_H
+#define _ATOMICITY_H	1
+
+#include <inttypes.h>
+
+static inline int
+__attribute__ ((unused))
+exchange_and_add (volatile uint32_t *mem, int val)
+{
+  int tmp, result;
+  __asm__ __volatile__ ("\
+0:	lwarx	%0,0,%2
+	add	%1,%3,%0
+	stwcx.	%1,0,%2
+	bne-	0b
+" : "=&r"(result), "=&r"(tmp) : "r" (mem), "r"(val) : "cr0");
+  return result;
+}
+
+static inline void
+__attribute__ ((unused))
+atomic_add (volatile uint32_t *mem, int val)
+{
+  int tmp;
+  __asm__ __volatile__("\
+0:	lwarx	%0,0,%1
+	add	%0,%2,%0
+	stwcx.	%0,0,%1
+	bne-	0b
+" : "=&r"(tmp) : "r" (mem), "r"(val) : "cr0");
+}
+
+static inline int
+__attribute__ ((unused))
+compare_and_swap (volatile long int *p, long int oldval, long int newval)
+{
+  int result;
+  __asm__ __volatile__ ("\
+0:	lwarx	%0,0,%1
+	xor.	%0,%0,%2
+	cntlzw	%0,%0
+	bne-	1f
+	stwcx.	%3,0,%1
+	bne-	0b
+1:	srwi	%0,%0,5
+" : "=&r"(result) : "r"(p), "r"(oldval), "r"(newval) : "cr0");
+  return result;
+}
+
+static inline long int
+__attribute__ ((unused))
+always_swap (volatile long int *p, long int newval)
+{
+  long int result;
+  __asm__ __volatile__ ("\
+0:	lwarx	%0,0,%1
+	stwcx.	%2,0,%1
+	bne-	0b
+" : "=&r"(result) : "r"(p), "r"(newval) : "cr0");
+  return result;
+}
+
+static inline int
+__attribute__ ((unused))
+test_and_set (volatile long int *p, long int oldval, long int newval)
+{
+  int result;
+  __asm__ __volatile__ ("\
+0:	lwarx	%0,0,%1
+	xor.	%0,%0,%2
+	cntlzw	%0,%0
+	bne-	1f
+	stwcx.	%3,0,%1
+	bne-	0b
+1:	srwi	%0,%0,5
+" : "=&r"(result) : "r"(p), "r"(oldval), "r"(newval) : "cr0");
+  return result;
+}
+
+#endif /* atomicity.h */
diff --git a/sysdeps/powerpc/bits/mathinline.h b/sysdeps/powerpc/bits/mathinline.h
index 24f186adf1..fff1d64ce2 100644
--- a/sysdeps/powerpc/bits/mathinline.h
+++ b/sysdeps/powerpc/bits/mathinline.h
@@ -18,28 +18,14 @@
    Boston, MA 02111-1307, USA.  */
 
 #ifdef __GNUC__
-#if !defined __NO_MATH_INLINES && defined __OPTIMIZE__
-
-#ifdef __cplusplus
-# define __MATH_INLINE __inline
-#else
-# define __MATH_INLINE extern __inline
-#endif
-
-__MATH_INLINE double __sgn1 (double __x);
-__MATH_INLINE double
-__sgn1 (double __x)
-{
-  return __x >= 0.0 ? 1.0 : -1.0;
-}
-#endif /* !__NO_MATH_INLINES && __OPTIMIZE__ */
 
 #if __USE_ISOC9X && !defined _SOFT_FLOAT
 # define __unordered_cmp(x, y) \
   (__extension__							      \
    ({ __typeof__(x) __x = (x); __typeof__(y) __y = (y);			      \
       unsigned __r;							      \
-      __asm__("fcmpu 7,%1,%2 ; mfcr %0" : "=r" (__r) : "f" (__x), "f"(__y));  \
+      __asm__("fcmpu 7,%1,%2 ; mfcr %0" : "=r" (__r) : "f" (__x), "f"(__y)    \
+              : "cr7");  \
       __r; }))
 
 # define isgreater(x, y) (__unordered_cmp (x, y) >> 2 & 1)
@@ -50,4 +36,53 @@ __sgn1 (double __x)
 # define isunordered(x, y) (__unordered_cmp (x, y) & 1)
 #endif /* __USE_ISOC9X && !_SOFT_FLOAT */
 
+#if !defined __NO_MATH_INLINES && defined __OPTIMIZE__
+
+#ifdef __cplusplus
+# define __MATH_INLINE __inline
+#else
+# define __MATH_INLINE extern __inline
+#endif  /* __cplusplus */
+
+#ifdef __USE_ISOC9X
+__MATH_INLINE long int lrint (double __x);
+__MATH_INLINE long int
+lrint (double __x)
+{
+  union {
+    double __d;
+    long int __ll[2];
+  } __u;
+  asm ("fctiw %0,%1" : "=f"(__u.__d) : "f"(__x));
+  return __u.__ll[1];
+}
+
+__MATH_INLINE long int lrintf (float __x);
+__MATH_INLINE long int
+lrintf (float __x)
+{
+  union {
+    double __d;
+    long int __ll[2];
+  } __u;
+  asm ("fctiw %0,%1" : "=f"(__u.__d) : "f"(__x));
+  return __u.__ll[1];
+}
+
+__MATH_INLINE double fdim (double __x, double __y);
+__MATH_INLINE double
+fdim (double __x, double __y)
+{
+  return __x < __y ? 0 : __x - __y;
+}
+
+__MATH_INLINE float fdimf (float __x, float __y);
+__MATH_INLINE float
+fdimf (float __x, float __y)
+{
+  return __x < __y ? 0 : __x - __y;
+}
+
+#endif /* __USE_ISOC9X */
+#endif /* !__NO_MATH_INLINES && __OPTIMIZE__ */
 #endif /* __GNUC__  */
diff --git a/sysdeps/powerpc/s_fdim.c b/sysdeps/powerpc/s_fdim.c
new file mode 100644
index 0000000000..da22f5c978
--- /dev/null
+++ b/sysdeps/powerpc/s_fdim.c
@@ -0,0 +1,31 @@
+/* Return positive difference between arguments.
+   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.  */
+
+#include <math.h>
+
+double
+__fdim (double x, double y)
+{
+  return x < y ? 0 : x - y;
+}
+weak_alias (__fdim, fdim)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__fdim, __fdiml)
+weak_alias (__fdim, fdiml)
+#endif
diff --git a/sysdeps/powerpc/s_fdimf.c b/sysdeps/powerpc/s_fdimf.c
new file mode 100644
index 0000000000..bebe7e58f3
--- /dev/null
+++ b/sysdeps/powerpc/s_fdimf.c
@@ -0,0 +1,27 @@
+/* Return positive difference between arguments.
+   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.  */
+
+#include <math.h>
+
+float
+__fdimf (float x, float y)
+{
+  return x < y ? 0 : x - y;
+}
+weak_alias (__fdimf, fdimf)
diff --git a/sysdeps/powerpc/s_fmax.S b/sysdeps/powerpc/s_fmax.S
new file mode 100644
index 0000000000..559769a251
--- /dev/null
+++ b/sysdeps/powerpc/s_fmax.S
@@ -0,0 +1,43 @@
+/* Floating-point maximum.  PowerPC version.
+   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.  */
+
+#include <sysdep.h>
+
+ENTRY(__fmax)
+/* double [f1] fmax (double [f1] x, double [f2] y); */
+	fcmpu	%cr0,%f1,%f2
+	blt	%cr0,0f		/* if x < y, neither x nor y can be NaN... */
+	bnulr+	%cr0
+/* x and y are unordered, so one of x or y must be a NaN... */
+	fcmpu	%cr1,%f2,%f2
+	bunlr	%cr1
+0:	fmr	%f1,%f2
+	blr
+END(__fmax)
+
+weak_alias(__fmax,fmax)
+
+/* It turns out that it's safe to use this code even for single-precision.  */
+strong_alias(__fmax,__fmaxf)
+weak_alias(__fmax,fmaxf)
+
+#ifdef NO_LONG_DOUBLE
+weak_alias(__fmax,__fmaxl)
+weak_alias(__fmax,fmaxl)
+#endif
diff --git a/sysdeps/powerpc/s_fmaxf.S b/sysdeps/powerpc/s_fmaxf.S
new file mode 100644
index 0000000000..3c2d62bb81
--- /dev/null
+++ b/sysdeps/powerpc/s_fmaxf.S
@@ -0,0 +1 @@
+/* __fmaxf is in s_fmax.c  */
diff --git a/sysdeps/powerpc/s_fmin.S b/sysdeps/powerpc/s_fmin.S
new file mode 100644
index 0000000000..72516c29f0
--- /dev/null
+++ b/sysdeps/powerpc/s_fmin.S
@@ -0,0 +1,43 @@
+/* Floating-point minimum.  PowerPC version.
+   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.  */
+
+#include <sysdep.h>
+
+ENTRY(__fmin)
+/* double [f1] fmin (double [f1] x, double [f2] y); */
+	fcmpu	%cr0,%f1,%f2
+	bgt	%cr0,0f		/* if x > y, neither x nor y can be NaN... */
+	bnulr+	%cr0
+/* x and y are unordered, so one of x or y must be a NaN... */
+	fcmpu	%cr1,%f2,%f2
+	bunlr	%cr1
+0:	fmr	%f1,%f2
+	blr
+END(__fmin)
+
+weak_alias(__fmin,fmin)
+
+/* It turns out that it's safe to use this code even for single-precision.  */
+strong_alias(__fmin,__fminf)
+weak_alias(__fmin,fminf)
+
+#ifdef NO_LONG_DOUBLE
+weak_alias(__fmin,__fminl)
+weak_alias(__fmin,fminl)
+#endif
diff --git a/sysdeps/powerpc/s_fminf.S b/sysdeps/powerpc/s_fminf.S
new file mode 100644
index 0000000000..10ab7fe53c
--- /dev/null
+++ b/sysdeps/powerpc/s_fminf.S
@@ -0,0 +1 @@
+/* __fminf is in s_fmin.c  */
diff --git a/sysdeps/powerpc/s_llrint.c b/sysdeps/powerpc/s_llrint.c
index 7ca48c029a..1789e79860 100644
--- a/sysdeps/powerpc/s_llrint.c
+++ b/sysdeps/powerpc/s_llrint.c
@@ -1,5 +1,4 @@
-/* Round a long long floating point value to an integer in the current
-   rounding mode.
+/* Round a double value to a long long in the current rounding mode.
    Copyright (C) 1997 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -21,8 +20,12 @@
 #include "math.h"
 
 long long int
-__llrint (long double x)
+__llrint (double x)
 {
-  return (long long int) __rintl (x);
+  return (long long int) __rint (x);
 }
 weak_alias (__llrint, llrint)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__llrint, __llrintl)
+weak_alias (__llrint, llrintl)
+#endif
diff --git a/sysdeps/powerpc/s_llrintf.c b/sysdeps/powerpc/s_llrintf.c
new file mode 100644
index 0000000000..2068a02a93
--- /dev/null
+++ b/sysdeps/powerpc/s_llrintf.c
@@ -0,0 +1,27 @@
+/* Round a float value to a long long in the current rounding mode.
+   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.  */
+
+#include "math.h"
+
+long long int
+__llrintf (float x)
+{
+  return (long long int) __rintf (x);
+}
+weak_alias (__llrintf, llrintf)
diff --git a/sysdeps/powerpc/s_llround.c b/sysdeps/powerpc/s_llround.c
index fbe3a3217c..6b49dbf917 100644
--- a/sysdeps/powerpc/s_llround.c
+++ b/sysdeps/powerpc/s_llround.c
@@ -1,4 +1,4 @@
-/* Round long double value to long int.
+/* Round double value to long long int.
    Copyright (C) 1997 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -26,12 +26,12 @@
    clipping to MAX_LLONG or MIN_LLONG.  */
 
 long long int
-__llround (long double x)
+__llround (double x)
 {
-  long double xrf;
+  double xrf;
   long long int xr;
   xr = (long long int) x;
-  xrf = (long double) xr;
+  xrf = (double) xr;
   if (x >= 0.0)
     if (x - xrf >= 0.5 && x - xrf < 1.0 && x+1 > 0)
       return x+1;
@@ -44,3 +44,7 @@ __llround (long double x)
       return x;
 }
 weak_alias (__llround, llround)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__llround, __llroundl)
+weak_alias (__llround, llroundl)
+#endif
diff --git a/sysdeps/powerpc/s_llroundf.c b/sysdeps/powerpc/s_llroundf.c
new file mode 100644
index 0000000000..23f1c28ab0
--- /dev/null
+++ b/sysdeps/powerpc/s_llroundf.c
@@ -0,0 +1,46 @@
+/* Round float value to long long int.
+   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.  */
+
+#include <math.h>
+
+/* I think that what this routine is supposed to do is round a value
+   to the nearest integer, with values exactly on the boundary rounded
+   away from zero.  */
+/* This routine relies on (long long)x, when x is out of range of a long long,
+   clipping to MAX_LLONG or MIN_LLONG.  */
+
+long long int
+__llroundf (float x)
+{
+  float xrf;
+  long long int xr;
+  xr = (long long int) x;
+  xrf = (float) xr;
+  if (x >= 0.0)
+    if (x - xrf >= 0.5 && x - xrf < 1.0 && x+1 > 0)
+      return x+1;
+    else
+      return x;
+  else
+    if (xrf - x >= 0.5 && xrf - x < 1.0 && x-1 < 0)
+      return x-1;
+    else
+      return x;
+}
+weak_alias (__llroundf, llroundf)
diff --git a/sysdeps/powerpc/s_lrint.c b/sysdeps/powerpc/s_lrint.c
index 647cf30c9c..a060598859 100644
--- a/sysdeps/powerpc/s_lrint.c
+++ b/sysdeps/powerpc/s_lrint.c
@@ -19,26 +19,28 @@
 
 #include "math.h"
 
-#ifdef NO_LONG_DOUBLE
-
 long int
-__lrint (long double x)
-{
-  return (long int) __rintl(x);
-}
-
-#else
-
-long int
-__lrint (long double x)
+__lrint (double x)
 {
   union {
     double d;
     long int ll[2];
   } u;
   asm ("fctiw %0,%1" : "=f"(u.d) : "f"(x));
-  return d.ll[1];
+  return u.ll[1];
 }
+weak_alias (__lrint, lrint)
+
+/* This code will also work for a 'float' argument.  */
+asm ("\
+        .globl __lrintf
+        .globl lrintf
+        .weak lrintf
+	.set __lrintf,__lrint
+	.set lrintf,__lrint
+");
 
+#ifdef NO_LONG_DOUBLE
+strong_alias (__lrint, __lrintl)
+weak_alias (__lrint, lrintl)
 #endif
-weak_alias (__lrint, lrint)
diff --git a/sysdeps/powerpc/s_lrintf.S b/sysdeps/powerpc/s_lrintf.S
new file mode 100644
index 0000000000..e24766535f
--- /dev/null
+++ b/sysdeps/powerpc/s_lrintf.S
@@ -0,0 +1 @@
+/* __lrintf is in s_lrint.c  */
diff --git a/sysdeps/powerpc/s_lround.c b/sysdeps/powerpc/s_lround.c
index a6cb6c96d2..c52c0388f6 100644
--- a/sysdeps/powerpc/s_lround.c
+++ b/sysdeps/powerpc/s_lround.c
@@ -1,4 +1,4 @@
-/* Round long double value to long int.
+/* Round double value to long int.
    Copyright (C) 1997 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -26,12 +26,12 @@
    clipping to MAX_LONG or MIN_LONG.  */
 
 long int
-__lround (long double x)
+__lround (double x)
 {
-  long double xrf;
+  double xrf;
   long int xr;
   xr = (long int) x;
-  xrf = (long double) xr;
+  xrf = (double) xr;
   if (x >= 0.0)
     if (x - xrf >= 0.5 && x - xrf < 1.0 && x+1 > 0)
       return x+1;
@@ -44,3 +44,7 @@ __lround (long double x)
       return x;
 }
 weak_alias (__lround, lround)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__lround, __lroundl)
+weak_alias (__lround, lroundl)
+#endif
diff --git a/sysdeps/powerpc/s_lroundf.c b/sysdeps/powerpc/s_lroundf.c
new file mode 100644
index 0000000000..ce1c3cf257
--- /dev/null
+++ b/sysdeps/powerpc/s_lroundf.c
@@ -0,0 +1,46 @@
+/* Round float value to long int.
+   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.  */
+
+#include <math.h>
+
+/* I think that what this routine is supposed to do is round a value
+   to the nearest integer, with values exactly on the boundary rounded
+   away from zero.  */
+/* This routine relies on (long int)x, when x is out of range of a long int,
+   clipping to MAX_LONG or MIN_LONG.  */
+
+long int
+__lroundf (float x)
+{
+  float xrf;
+  long int xr;
+  xr = (long int) x;
+  xrf = (float) xr;
+  if (x >= 0.0)
+    if (x - xrf >= 0.5 && x - xrf < 1.0 && x+1 > 0)
+      return x+1;
+    else
+      return x;
+  else
+    if (xrf - x >= 0.5 && xrf - x < 1.0 && x-1 < 0)
+      return x-1;
+    else
+      return x;
+}
+weak_alias (__lroundf, lroundf)
diff --git a/sysdeps/powerpc/setjmp.S b/sysdeps/powerpc/setjmp.S
index 8fa863f161..dc9d923c75 100644
--- a/sysdeps/powerpc/setjmp.S
+++ b/sysdeps/powerpc/setjmp.S
@@ -19,6 +19,7 @@
 
 #include <sysdep.h>
 #define _ASM
+#define _SETJMP_H
 #include <bits/setjmp.h>
 
 ENTRY (__sigsetjmp)
diff --git a/sysdeps/unix/sysv/linux/Dist b/sysdeps/unix/sysv/linux/Dist
index e22cec7dec..6743794281 100644
--- a/sysdeps/unix/sysv/linux/Dist
+++ b/sysdeps/unix/sysv/linux/Dist
@@ -5,6 +5,7 @@ kernel_sigaction.h
 kernel_stat.h
 kernel_termios.h
 llseek.c
+oldsiglist.c
 s_pread64.c
 s_pwrite64.c
 siglist.h
@@ -21,6 +22,7 @@ net/ppp-comp.h
 net/ppp_defs.h
 net/route.h
 netatalk/at.h
+netax25/ax25.h
 netinet/if_fddi.h
 netinet/if_tr.h
 netinet/igmp.h
@@ -30,6 +32,7 @@ netinet/ip_icmp.h
 netinet/tcp.h
 netinet/udp.h
 netipx/ipx.h
+netrom/netrom.h
 nfs/nfs.h
 rt_sigaction.c
 rt_sigpending.c
diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
index 152c7984bd..29f1566753 100644
--- a/sysdeps/unix/sysv/linux/Makefile
+++ b/sysdeps/unix/sysv/linux/Makefile
@@ -69,7 +69,7 @@ ifeq ($(subdir),stdio-common)
 inhibit-siglist := yes
 
 ifeq ($(versioning),yes)
-aux += oldsiglist
+sysdep_routines += oldsiglist
 endif
 
 shared-only-routines += oldsiglist
@@ -79,7 +79,7 @@ ifeq ($(subdir),inet)
 sysdep_headers += netinet/in_systm.h netinet/udp.h \
 		  netinet/if_fddi.h netinet/if_tr.h netinet/igmp.h \
 		  netinet/ip_fw.h  netinet/ip_icmp.h netipx/ipx.h \
-		  sys/socketvar.h
+		  sys/socketvar.h netax25/ax25.h netrom/netrom.h
 endif
 
 ifeq ($(subdir),posix)
diff --git a/sysdeps/unix/sysv/linux/alpha/kernel_sigaction.h b/sysdeps/unix/sysv/linux/alpha/kernel_sigaction.h
index 6f8bc9bcd4..f8c42e0a1e 100644
--- a/sysdeps/unix/sysv/linux/alpha/kernel_sigaction.h
+++ b/sysdeps/unix/sysv/linux/alpha/kernel_sigaction.h
@@ -1,7 +1,7 @@
 /* This is the sigaction struction from the Linux 2.1.20 kernel.  */
 
 struct old_kernel_sigaction {
-	__sighandler_t sa_handler;
+	__sighandler_t k_sa_handler;
 	unsigned long sa_mask;
 	unsigned int sa_flags;
 };
diff --git a/sysdeps/unix/sysv/linux/alpha/mmap64.c b/sysdeps/unix/sysv/linux/alpha/mmap64.c
new file mode 100644
index 0000000000..0dbd384a6a
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/alpha/mmap64.c
@@ -0,0 +1 @@
+/* mmap64 is the same as mmap. */
diff --git a/sysdeps/unix/sysv/linux/alpha/net/route.h b/sysdeps/unix/sysv/linux/alpha/net/route.h
new file mode 100644
index 0000000000..6c7d8dd015
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/alpha/net/route.h
@@ -0,0 +1,140 @@
+/* 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.  */
+
+/* Based on the 4.4BSD and Linux version of this file.  */
+
+#ifndef _NET_ROUTE_H
+#define _NET_ROUTE_H	1
+
+#include <features.h>
+#include <sys/socket.h>
+#include <sys/types.h>
+#include <netinet/in.h>
+
+
+/* This structure gets passed by the SIOCADDRT and SIOCDELRT calls. */
+struct rtentry
+  {
+    unsigned long int rt_pad1;
+    struct sockaddr rt_dst;		/* Target address.  */
+    struct sockaddr rt_gateway;		/* Gateway addr (RTF_GATEWAY).  */
+    struct sockaddr rt_genmask;		/* Target network mask (IP).  */
+    unsigned short int rt_flags;
+    short int rt_pad2;
+    unsigned long int rt_pad3;
+    unsigned char rt_tos;
+    unsigned char rt_class;
+    short int rt_pad4[3];
+    short int rt_metric;		/* +1 for binary compatibility!  */
+    char *rt_dev;			/* Forcing the device at add.  */
+    unsigned long int rt_mtu;		/* Per route MTU/Window.  */
+    unsigned long int rt_window;	/* Window clamping.  */
+    unsigned short int rt_irtt;		/* Initial RTT.  */
+  };
+/* Compatibility hack.  */
+#define rt_mss	rt_mtu
+
+
+struct in6_rtmsg
+  {
+    struct in6_addr rtmsg_dst;
+    struct in6_addr rtmsg_src;
+    struct in6_addr rtmsg_gateway;
+    u_int32_t rtmsg_type;
+    u_int16_t rtmsg_dst_len;
+    u_int16_t rtmsg_src_len;
+    u_int32_t rtmsg_metric;
+    unsigned long int rtmsg_info;
+    u_int32_t rtmsg_flags;
+    int rtmsg_ifindex;
+  };
+
+
+#define	RTF_UP		0x0001		/* Route usable.  */
+#define	RTF_GATEWAY	0x0002		/* Destination is a gateway.  */
+
+#define	RTF_HOST	0x0004		/* Host entry (net otherwise).  */
+#define RTF_REINSTATE	0x0008		/* Reinstate route after timeout.  */
+#define	RTF_DYNAMIC	0x0010		/* Created dyn. (by redirect).  */
+#define	RTF_MODIFIED	0x0020		/* Modified dyn. (by redirect).  */
+#define RTF_MTU		0x0040		/* Specific MTU for this route.  */
+#define RTF_MSS		RTF_MTU		/* Compatibility.  */
+#define RTF_WINDOW	0x0080		/* Per route window clamping.  */
+#define RTF_IRTT	0x0100		/* Initial round trip time.  */
+#define RTF_REJECT	0x0200		/* Reject route.  */
+#define	RTF_STATIC	0x0400		/* Manually injected route.  */
+#define	RTF_XRESOLVE	0x0800		/* External resolver.  */
+#define RTF_NOFORWARD   0x1000		/* Forwarding inhibited.  */
+#define RTF_THROW	0x2000		/* Go to next class.  */
+#define RTF_NOPMTUDISC  0x4000		/* Do not send packets with DF.  */
+
+/* for IPv6 */
+#define RTF_DEFAULT	0x00010000	/* default - learned via ND	*/
+#define RTF_ALLONLINK	0x00020000	/* fallback, no routers on link	*/
+#define RTF_ADDRCONF	0x00040000	/* addrconf route - RA		*/
+
+#define RTF_LINKRT	0x00100000	/* link specific - device match	*/
+#define RTF_NONEXTHOP	0x00200000	/* route with no nexthop	*/
+
+#define RTF_CACHE	0x01000000	/* cache entry			*/
+#define RTF_FLOW	0x02000000	/* flow significant route	*/
+#define RTF_POLICY	0x04000000	/* policy route			*/
+
+#define RTCF_VALVE	0x00200000
+#define RTCF_MASQ	0x00400000
+#define RTCF_NAT	0x00800000
+#define RTCF_DOREDIRECT 0x01000000
+#define RTCF_LOG	0x02000000
+#define RTCF_DIRECTSRC	0x04000000
+
+#define RTF_LOCAL	0x80000000
+#define RTF_INTERFACE	0x40000000
+#define RTF_MULTICAST	0x20000000
+#define RTF_BROADCAST	0x10000000
+#define RTF_NAT		0x08000000
+
+#define RTF_ADDRCLASSMASK	0xF8000000
+#define RT_ADDRCLASS(flags)	((__u_int32_t) flags >> 23)
+
+#define RT_TOS(tos)		((tos) & IPTOS_TOS_MASK)
+
+#define RT_LOCALADDR(flags)	((flags & RTF_ADDRCLASSMASK) \
+				 == (RTF_LOCAL|RTF_INTERFACE))
+
+#define RT_CLASS_UNSPEC		0
+#define RT_CLASS_DEFAULT	253
+
+#define RT_CLASS_MAIN		254
+#define RT_CLASS_LOCAL		255
+#define RT_CLASS_MAX		255
+
+
+#define RTMSG_ACK		NLMSG_ACK
+#define RTMSG_OVERRUN		NLMSG_OVERRUN
+
+#define RTMSG_NEWDEVICE		0x11
+#define RTMSG_DELDEVICE		0x12
+#define RTMSG_NEWROUTE		0x21
+#define RTMSG_DELROUTE		0x22
+#define RTMSG_NEWRULE		0x31
+#define RTMSG_DELRULE		0x32
+#define RTMSG_CONTROL		0x40
+
+#define RTMSG_AR_FAILED		0x51	/* Address Resolution failed.  */
+
+#endif /* net/route.h */
diff --git a/sysdeps/unix/sysv/linux/alpha/syscalls.list b/sysdeps/unix/sysv/linux/alpha/syscalls.list
index af964718bc..9406892124 100644
--- a/sysdeps/unix/sysv/linux/alpha/syscalls.list
+++ b/sysdeps/unix/sysv/linux/alpha/syscalls.list
@@ -19,13 +19,13 @@ osf_sigprocmask	-	osf_sigprocmask	2	__osf_sigprocmask
 
 getpeername	-	getpeername	3	__getpeername	getpeername
 getpriority	-	getpriority	2	__getpriority	getpriority
-mmap		-	mmap		6	__mmap		mmap
+mmap		-	mmap		6	__mmap		mmap __mmap64 mmap64
 llseek		EXTRA	lseek		3	__llseek	llseek lseek64
 pread		EXTRA	pread		4	__pread		pread __pread64 pread64
 pwrite		EXTRA	pwrite		4	__pwrite	pwrite __pwrite64 pwrite64
 fstatfs		-	fstatfs		2	__fstatfs	fstatfs fstatfs64
 statfs		-	statfs		2	__statfs	statfs statfs64
-getrlimit	-	getrlimit	2	getrlimit	getrlimit64
+getrlimit	-	getrlimit	2	__getrlimit	getrlimit getrlimit64
 setrlimit	-	setrlimit	2	setrlimit	setrlimit64
 ftruncate	-	ftruncate	2	ftruncate	ftruncate64
 truncate	-	truncate	2	truncate	truncate64
diff --git a/sysdeps/unix/sysv/linux/bits/socket.h b/sysdeps/unix/sysv/linux/bits/socket.h
index 42a4f8b74f..34c2be4271 100644
--- a/sysdeps/unix/sysv/linux/bits/socket.h
+++ b/sysdeps/unix/sysv/linux/bits/socket.h
@@ -107,9 +107,6 @@ enum __socket_type
 #define SOL_IPV6        41
 #define SOL_ICMPV6      58
 #define SOL_RAW		255
-#define SOL_AX25        257
-#define SOL_ATALK       258
-#define SOL_NETROM      259
 #define SOL_ROSE        260
 #define SOL_DECNET      261
 #define SOL_X25         262
diff --git a/sysdeps/unix/sysv/linux/i386/Dist b/sysdeps/unix/sysv/linux/i386/Dist
index d762dc9416..75955fcc15 100644
--- a/sysdeps/unix/sysv/linux/i386/Dist
+++ b/sysdeps/unix/sysv/linux/i386/Dist
@@ -1,4 +1,6 @@
 bits/mman.h
 clone.S
+s_pwrite64.S
+s_pread64.S
 sys/perm.h
 sys/vm86.h
diff --git a/sysdeps/unix/sysv/linux/i386/sigaction.c b/sysdeps/unix/sysv/linux/i386/sigaction.c
index 05d187c432..90818c1dff 100644
--- a/sysdeps/unix/sysv/linux/i386/sigaction.c
+++ b/sysdeps/unix/sysv/linux/i386/sigaction.c
@@ -32,8 +32,8 @@ extern int __syscall_rt_sigaction (int, const struct sigaction *,
 				   struct sigaction *, size_t);
 
 /* The variable is shared between all wrappers around signal handling
-   functions which have RT equivalents.  It is defined in sigsuspend.c.  */
-extern int __libc_have_rt_sigs;
+   functions which have RT equivalents.  */
+int __libc_have_rt_sigs = -1;
 
 
 /* If ACT is not NULL, change the action for SIG to *ACT.
diff --git a/sysdeps/unix/sysv/linux/net/route.h b/sysdeps/unix/sysv/linux/net/route.h
index 2450d5154a..6cccbeee2e 100644
--- a/sysdeps/unix/sysv/linux/net/route.h
+++ b/sysdeps/unix/sysv/linux/net/route.h
@@ -19,10 +19,9 @@
 /* Based on the 4.4BSD and Linux version of this file.  */
 
 #ifndef _NET_ROUTE_H
-
 #define _NET_ROUTE_H	1
-#include <features.h>
 
+#include <features.h>
 #include <sys/socket.h>
 #include <sys/types.h>
 #include <netinet/in.h>
diff --git a/sysdeps/unix/sysv/linux/netatalk/at.h b/sysdeps/unix/sysv/linux/netatalk/at.h
index e0ccff8552..4c586106c6 100644
--- a/sysdeps/unix/sysv/linux/netatalk/at.h
+++ b/sysdeps/unix/sysv/linux/netatalk/at.h
@@ -16,8 +16,8 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
-#ifndef __NETATALK_ATALK_H
-#define __NETATALK_ATALK_H 1
+#ifndef _NETATALK_AT_H
+#define _NETATALK_AT_H 1
 
 #include <asm/types.h>
 #include <sys/socket.h>
@@ -25,4 +25,4 @@
 
 #define SOL_ATALK       258     /* sockopt level for atalk */
 
-#endif
+#endif	/* netatalk/at.h */
diff --git a/sysdeps/unix/sysv/linux/netax25/ax25.h b/sysdeps/unix/sysv/linux/netax25/ax25.h
new file mode 100644
index 0000000000..1bec5920aa
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/netax25/ax25.h
@@ -0,0 +1,147 @@
+/* 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 _NETAX25_AX25_H
+#define _NETAX25_AX25_H	1
+
+#include <features.h>
+#include <bits/sockaddr.h>
+
+/* Setsockoptions(2) level.  Thanks to BSD these must match IPPROTO_xxx.  */
+#define SOL_AX25	257
+
+/* AX.25 flags: */
+#define AX25_WINDOW	1
+#define AX25_T1		2
+#define AX25_T2		5
+#define AX25_T3		4
+#define AX25_N2		3
+#define AX25_BACKOFF	6
+#define AX25_EXTSEQ	7
+#define AX25_IDLE	9
+#define	AX25_PACLEN	10
+#define AX25_IPMAXQUEUE 11
+#define AX25_KILL	99
+
+/* AX.25 socket ioctls: */
+#define SIOCAX25GETUID		(SIOCPROTOPRIVATE)
+#define SIOCAX25ADDUID		(SIOCPROTOPRIVATE+1)
+#define SIOCAX25DELUID		(SIOCPROTOPRIVATE+2)
+#define SIOCAX25NOUID		(SIOCPROTOPRIVATE+3)
+#define SIOCAX25BPQADDR		(SIOCPROTOPRIVATE+4)
+#define SIOCAX25GETPARMS	(SIOCPROTOPRIVATE+5)
+#define SIOCAX25SETPARMS	(SIOCPROTOPRIVATE+6)
+#define SIOCAX25OPTRT		(SIOCPROTOPRIVATE+7)
+#define SIOCAX25CTLCON		(SIOCPROTOPRIVATE+8)
+
+/* unknown: */
+#define AX25_NOUID_DEFAULT	0
+#define AX25_NOUID_BLOCK	1
+#define AX25_SET_RT_IPMODE	2
+
+/* Digipeating flags: */
+#define AX25_DIGI_INBAND	0x01	/* Allow digipeating within port */
+#define AX25_DIGI_XBAND		0x02	/* Allow digipeating across ports */
+
+/* Maximim number of digipeaters: */
+#define AX25_MAX_DIGIS 8
+
+
+typedef struct
+  {
+    char ax25_call[7];		/* 6 call + SSID (shifted ascii) */
+  }
+ax25_address;
+
+struct sockaddr_ax25
+  {
+    sa_family_t sax25_family;
+    ax25_address sax25_call;
+    int sax25_ndigis;
+  };
+
+/*
+ * The sockaddr struct with the digipeater adresses:
+ */
+struct full_sockaddr_ax25
+  {
+    struct sockaddr_ax25 fsa_ax25;
+    ax25_address fsa_digipeater[AX25_MAX_DIGIS];
+  };
+#define sax25_uid	sax25_ndigis
+
+struct ax25_routes_struct
+  {
+    ax25_address port_addr;
+    ax25_address dest_addr;
+    unsigned char digi_count;
+    ax25_address digi_addr[AX25_MAX_DIGIS];
+  };
+
+/* The AX.25 ioctl structure: */
+struct ax25_ctl_struct
+  {
+    ax25_address port_addr;
+    ax25_address source_addr;
+    ax25_address dest_addr;
+    unsigned int cmd;
+    unsigned long arg;
+  };
+
+/* AX.25 route structure: */
+struct ax25_route_opt_struct
+  {
+    ax25_address port_addr;
+    ax25_address dest_addr;
+    int cmd;
+    int arg;
+  };
+
+/* AX.25 BPQ stuff: */
+struct ax25_bpqaddr_struct
+  {
+    char dev[16];
+    ax25_address addr;
+  };
+
+/* Definitions for the AX.25 `values' fields: */
+#define	AX25_VALUES_IPDEFMODE	0	/* 'D'=DG 'V'=VC */
+#define	AX25_VALUES_AXDEFMODE	1	/* 8=Normal 128=Extended Seq Nos */
+#define	AX25_VALUES_NETROM	2	/* Allow NET/ROM  - 0=No 1=Yes */
+#define	AX25_VALUES_TEXT	3	/* Allow PID=Text - 0=No 1=Yes */
+#define	AX25_VALUES_BACKOFF	4	/* 'E'=Exponential 'L'=Linear */
+#define	AX25_VALUES_CONMODE	5	/* Allow connected modes - 0=No 1=Yes */
+#define	AX25_VALUES_WINDOW	6	/* Default window size for standard AX.25 */
+#define	AX25_VALUES_EWINDOW	7	/* Default window size for extended AX.25 */
+#define	AX25_VALUES_T1		8	/* Default T1 timeout value */
+#define	AX25_VALUES_T2		9	/* Default T2 timeout value */
+#define	AX25_VALUES_T3		10	/* Default T3 timeout value */
+#define	AX25_VALUES_N2		11	/* Default N2 value */
+#define	AX25_VALUES_DIGI	12	/* Digipeat mode */
+#define AX25_VALUES_IDLE	13	/* mode vc idle timer */
+#define AX25_VALUES_PACLEN	14	/* AX.25 MTU */
+#define AX25_VALUES_IPMAXQUEUE  15	/* Maximum number of buffers enqueued */
+#define	AX25_MAX_VALUES		20
+
+struct ax25_parms_struct
+  {
+    ax25_address port_addr;
+    unsigned short values[AX25_MAX_VALUES];
+  };
+
+#endif /* netax25/ax25.h */
diff --git a/sysdeps/unix/sysv/linux/netrom/netrom.h b/sysdeps/unix/sysv/linux/netrom/netrom.h
new file mode 100644
index 0000000000..b8c2af0c11
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/netrom/netrom.h
@@ -0,0 +1,80 @@
+/* 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 _NETROM_NETROM_H
+#define _NETROM_NETROM_H	1
+
+#include <netax25/ax25.h>
+
+/* Setsockoptions(2) level.  Thanks to BSD these must match IPPROTO_xxx.  */
+#define SOL_NETROM	259
+
+/* NetRom control values: */
+#define NETROM_T1	1
+#define NETROM_T2	2
+#define NETROM_N2	3
+#define NETROM_PACLEN	5
+
+#define NETROM_KILL	99
+
+/* Type of route: */
+#define NETROM_NEIGH    0
+#define NETROM_NODE     1
+
+struct nr_route_struct
+  {
+    int type;
+    ax25_address callsign;
+    char device[16];
+    unsigned int quality;
+    char mnemonic[7];
+    ax25_address neighbour;
+    unsigned int obs_count;
+  };
+
+/* NetRom socket ioctls: */
+#define	SIOCNRGETPARMS		(SIOCPROTOPRIVATE+0)
+#define	SIOCNRSETPARMS		(SIOCPROTOPRIVATE+1)
+#define	SIOCNRDECOBS		(SIOCPROTOPRIVATE+2)
+#define	SIOCNRRTCTL		(SIOCPROTOPRIVATE+3)
+#define	SIOCNRCTLCON		(SIOCPROTOPRIVATE+4)
+
+/* NetRom parameter structure: */
+struct nr_parms_struct
+  {
+    unsigned int quality;
+    unsigned int obs_count;
+    unsigned int ttl;
+    unsigned int timeout;
+    unsigned int ack_delay;
+    unsigned int busy_delay;
+    unsigned int tries;
+    unsigned int window;
+    unsigned int paclen;
+  };
+
+/* NetRom control structure: */
+struct nr_ctl_struct
+  {
+    unsigned char index;
+    unsigned char id;
+    unsigned int cmd;
+    unsigned long arg;
+  };
+
+#endif /* netrom/netrom.h */
diff --git a/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c b/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c
index 6b4373db0f..211a56b9f0 100644
--- a/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c
+++ b/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c
@@ -29,12 +29,13 @@
     (envp) = (argv) + (argc) + 1;				\
     for (_tmp = (void **) (envp); *_tmp; ++_tmp)		\
       continue;							\
-    if (*_tmp == 0 && ((size_t)_tmp & 0xf) != 0)		\
+    /* The following '++' is important!  */			\
+    ++_tmp;							\
+    if (*_tmp == 0)						\
       {								\
 	size_t _test = (size_t)_tmp;				\
 	_test = _test + 0xf & ~0xf;				\
-	if (*(long *)_test == AT_PHDR)				\
-	  _tmp = (void **)_test;				\
+	_tmp = (void **)_test;					\
       }								\
     (auxp) = (void *) _tmp;					\
   } while (0)
diff --git a/sysdeps/unix/sysv/linux/powerpc/kernel_termios.h b/sysdeps/unix/sysv/linux/powerpc/kernel_termios.h
index c3908d7080..a40b3c19bd 100644
--- a/sysdeps/unix/sysv/linux/powerpc/kernel_termios.h
+++ b/sysdeps/unix/sysv/linux/powerpc/kernel_termios.h
@@ -20,7 +20,7 @@
 #define _KERNEL_TERMIOS_H 1
 
 /* We need the definition of tcflag_t, cc_t, and speed_t.  */
-#include <bits/termios.h>
+#include <termios.h>
 
 #define __KERNEL_NCCS 19
 
diff --git a/sysdeps/unix/sysv/linux/sigaction.c b/sysdeps/unix/sysv/linux/sigaction.c
index 3eb721454e..6b3d69d451 100644
--- a/sysdeps/unix/sysv/linux/sigaction.c
+++ b/sysdeps/unix/sysv/linux/sigaction.c
@@ -30,8 +30,8 @@ extern int __syscall_rt_sigaction (int, const struct sigaction *,
 				   struct sigaction *, size_t);
 
 /* The variable is shared between all wrappers around signal handling
-   functions which have RT equivalents.  It is defined in sigsuspend.c.  */
-extern int __libc_have_rt_sigs;
+   functions which have RT equivalents.  */
+int __libc_have_rt_sigs = -1;
 
 
 /* If ACT is not NULL, change the action for SIG to *ACT.
diff --git a/sysdeps/unix/sysv/linux/sigpending.c b/sysdeps/unix/sysv/linux/sigpending.c
index 4cecb8dc60..fade020d26 100644
--- a/sysdeps/unix/sysv/linux/sigpending.c
+++ b/sysdeps/unix/sysv/linux/sigpending.c
@@ -25,7 +25,7 @@ extern int __syscall_rt_sigpending (sigset_t *, size_t);
 
 
 /* The variable is shared between all wrappers around signal handling
-   functions which have RT equivalents.  It is defined in sigsuspend.c.  */
+   functions which have RT equivalents.  It is defined in sigaction.c.  */
 extern int __libc_have_rt_sigs;
 
 
diff --git a/sysdeps/unix/sysv/linux/sigprocmask.c b/sysdeps/unix/sysv/linux/sigprocmask.c
index dc262c88f4..63889a61dd 100644
--- a/sysdeps/unix/sysv/linux/sigprocmask.c
+++ b/sysdeps/unix/sysv/linux/sigprocmask.c
@@ -25,7 +25,7 @@ extern int __syscall_rt_sigprocmask (int, const sigset_t *, sigset_t *,
 				     size_t);
 
 /* The variable is shared between all wrappers around signal handling
-   functions which have RT equivalents.  It is defined in sigsuspend.c.  */
+   functions which have RT equivalents.  It is defined in sigaction.c.  */
 extern int __libc_have_rt_sigs;
 
 
diff --git a/sysdeps/unix/sysv/linux/sigsuspend.c b/sysdeps/unix/sysv/linux/sigsuspend.c
index 2cf34eb9b1..8d8fa8e709 100644
--- a/sysdeps/unix/sysv/linux/sigsuspend.c
+++ b/sysdeps/unix/sysv/linux/sigsuspend.c
@@ -25,8 +25,8 @@ extern int __syscall_rt_sigsuspend (const sigset_t *, size_t);
 
 
 /* The variable is shared between all wrappers around signal handling
-   functions which have RT equivalents.  */
-int __libc_have_rt_sigs = 1;
+   functions which have RT equivalents.  It is defined in sigaction.c.  */
+extern int __libc_have_rt_sigs;
 
 
 /* Change the set of blocked signals to SET,
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/mmap64.c b/sysdeps/unix/sysv/linux/sparc/sparc64/mmap64.c
new file mode 100644
index 0000000000..0dbd384a6a
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/mmap64.c
@@ -0,0 +1 @@
+/* mmap64 is the same as mmap. */
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list b/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list
index 7e64daf578..ca142da29c 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list
@@ -10,6 +10,7 @@ getrlimit	-	getrlimit	2	getrlimit	getrlimit64
 setrlimit	-	setrlimit	2	setrlimit	setrlimit64
 ftruncate	-	ftruncate	2	ftruncate	ftruncate64
 truncate	-	truncate	2	truncate	truncate64
+mmap		-	mmap		6	__mmap		mmap __mmap64 mmap64
 
 # Override select.S in parent directory:
 select		-	select		5	__select	select
diff --git a/sysdeps/unix/sysv/linux/stdio_lim.h.in b/sysdeps/unix/sysv/linux/stdio_lim.h.in
index 07280956f2..bded904ef0 100644
--- a/sysdeps/unix/sysv/linux/stdio_lim.h.in
+++ b/sysdeps/unix/sysv/linux/stdio_lim.h.in
@@ -21,7 +21,7 @@
 # error "Never include <bits/stdio_lim.h> directly; use <stdio.h> instead."
 #endif
 
-#ifndef __need_FOPEN_MAX
+#ifdef _STDIO_H
 # define L_tmpnam 19
 # define TMP_MAX 238328
 
@@ -31,6 +31,9 @@
 # endif
 
 # define FILENAME_MAX	DEFAULT_FILENAME_MAX
+
+# undef __need_FOPEN_MAX
+# define __need_FOPEN_MAX
 #endif
 
 #if defined __need_FOPEN_MAX && !defined __defined_FOPEN_MAX
diff --git a/sysdeps/unix/sysv/linux/sys/kd.h b/sysdeps/unix/sysv/linux/sys/kd.h
index 0ff5220014..b37586abfd 100644
--- a/sysdeps/unix/sysv/linux/sys/kd.h
+++ b/sysdeps/unix/sysv/linux/sys/kd.h
@@ -20,7 +20,9 @@
 #define _SYS_KD_H	1
 
 /* Make sure the <linux/types.h> header is not loaded.  */
-#define _LINUX_TYPES_H	1
+#ifndef _LINUX_TYPES_H
+# define _LINUX_TYPES_H	1
+#endif
 
 #include <linux/kd.h>
 
diff --git a/sysdeps/unix/sysv/linux/sys/mman.h b/sysdeps/unix/sysv/linux/sys/mman.h
index e2434f135f..70f95d080f 100644
--- a/sysdeps/unix/sysv/linux/sys/mman.h
+++ b/sysdeps/unix/sysv/linux/sys/mman.h
@@ -42,18 +42,20 @@ __BEGIN_DECLS
    deallocates any previous mapping for the affected region.  */
 
 extern __ptr_t __mmap __P ((__ptr_t __addr, size_t __len, int __prot,
-			  int __flags, int __fd, __off_t __offset));
+			    int __flags, int __fd, __off_t __offset));
 #ifndef __USE_FILE_OFFSET64
 extern __ptr_t mmap __P ((__ptr_t __addr, size_t __len, int __prot,
-			int __flags, int __fd, __off_t __offset));
+			  int __flags, int __fd, __off_t __offset));
 #else
 extern __ptr_t mmap __P ((__ptr_t __addr, size_t __len, int __prot,
-			int __flags, int __fd, __off_t __offset))
+			  int __flags, int __fd, __off64_t __offset))
      __asm__ ("mmap64");
 #endif
 #ifdef __USE_LARGEFILE64
+extern __ptr_t __mmap64 __P ((__ptr_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));
+			    int __flags, int __fd, __off64_t __offset));
 #endif
 
 /* Deallocate any mapping for the region starting at ADDR and extending LEN
diff --git a/sysdeps/wordsize-32/Dist b/sysdeps/wordsize-32/Dist
deleted file mode 100644
index 36bfb62e73..0000000000
--- a/sysdeps/wordsize-32/Dist
+++ /dev/null
@@ -1,5 +0,0 @@
-inttypes.h
-strtoimax.c
-strtoumax.c
-wcstoimax.c
-wcstoumax.c
diff --git a/sysdeps/wordsize-32/Makefile b/sysdeps/wordsize-32/Makefile
deleted file mode 100644
index b22eaee177..0000000000
--- a/sysdeps/wordsize-32/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
-ifeq ($(subdir),stdlib)
-sysdep_headers += inttypes.h
-
-sysdep_routines += strtoimax strtoumax wcstoimax wcstoumax
-endif
diff --git a/sysdeps/wordsize-64/Dist b/sysdeps/wordsize-64/Dist
deleted file mode 100644
index 36bfb62e73..0000000000
--- a/sysdeps/wordsize-64/Dist
+++ /dev/null
@@ -1,5 +0,0 @@
-inttypes.h
-strtoimax.c
-strtoumax.c
-wcstoimax.c
-wcstoumax.c
diff --git a/sysdeps/wordsize-64/Makefile b/sysdeps/wordsize-64/Makefile
deleted file mode 100644
index b22eaee177..0000000000
--- a/sysdeps/wordsize-64/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
-ifeq ($(subdir),stdlib)
-sysdep_headers += inttypes.h
-
-sysdep_routines += strtoimax strtoumax wcstoimax wcstoumax
-endif