about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog39
-rw-r--r--INSTALL796
-rwxr-xr-xconfigure2
-rw-r--r--glibcbug.in6
-rw-r--r--libc.map4
-rw-r--r--manual/filesys.texi2
-rw-r--r--manual/install.texi34
-rw-r--r--manual/maint.texi105
-rw-r--r--posix/regex.c4
-rw-r--r--posix/wordexp-test.c1
-rw-r--r--posix/wordexp.c99
-rw-r--r--sysdeps/i386/bits/string.h186
-rw-r--r--sysdeps/unix/sysv/linux/adjtime.c3
13 files changed, 363 insertions, 918 deletions
diff --git a/ChangeLog b/ChangeLog
index d9dd45dd6a..704c4cecb5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,42 @@
+1998-03-25  Ulrich Drepper  <drepper@cygnus.com>
+
+	* glibcbug.in: Create files safely when mktemp is not available.
+
+	* sysdeps/unix/sysv/linux/adjtime.c: Make weak alias appear again.
+	Patch by a sun <asun@saul1.u.washington.edu>.
+
+1998-03-25  Thorsten Kukuk  <kukuk@vt.uni-paderborn.de>
+
+	* libc.map: Rename getname to getnetname.
+
+1998-03-25 13:35  Ulrich Drepper  <drepper@cygnus.com>
+
+	* manual/maint.texi: Use supported platform in examples.
+
+	* manual/install.texi: Document some installation tips.
+
+1998-03-25 10:56  Ulrich Drepper  <drepper@cygnus.com>
+
+	* posix/wordexp.c: Fix some memory leaks and makes $* more efficient.
+	Fix a bug so that it returns an error if a numeric parameter is
+	unset and WRDE_UNDEF is set.
+	Patch by Andreas Schwab and Tim Waugh.
+	* posix/wordexp-test.c: Add new new test.
+
+1998-03-25  Ulrich Drepper  <drepper@cygnus.com>
+
+	* posix/regex.c (regex_compile): Last patch wasn't entirely
+	correct.  Patch by Alain Magloire <alainm@rcsm.ece.mcgill.ca>.
+
+1998-03-24  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
+
+	* manual/filesys.texi (Scanning Directory Content): Fix typo.
+
+1998-03-25 09:24  Bernd Schmidt  <crux@Pool.Informatik.RWTH-Aachen.DE>
+
+	* sysdeps/i386/bits/string.h: Fix all assembler statements so that
+	clobbered registers don't appear as operands.
+
 1998-03-24  Ulrich Drepper  <drepper@cygnus.com>
 
 	* posix/regex.c: Undefine ISASCII and ISPRINT before defining for
diff --git a/INSTALL b/INSTALL
index 6a03afcf2b..369e50e822 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,313 +1,6 @@
 Library Maintenance
 *******************
 
-How to Install the GNU C Library
-================================
-
-   Installation of the GNU C library is relatively simple, but usually
-requires several GNU tools to be installed already.
-
-   To configure the GNU C library for your system, run the shell script
-`configure' with `sh'.  Use an argument which is the conventional GNU
-name for your system configuration--for example, `sparc-sun-sunos4.1',
-for a Sun 4 running SunOS 4.1.  *Note Installation:
-(gcc.info)Installation, for a full description of standard GNU
-configuration names.  If you omit the configuration name, `configure'
-will try to guess one for you by inspecting the system it is running
-on.  It may or may not be able to come up with a guess, and the its
-guess might be wrong.  `configure' will tell you the canonical name of
-the chosen configuration before proceeding.
-
-   Here are some options that you should specify (if appropriate) when
-you run `configure':
-
-`--with-binutils=DIRECTORY'
-     Use the binutils (assembler and linker) in `DIRECTORY', not the
-     ones the C compiler would default to.  You could use this option if
-     the default binutils on your system cannot deal with all the
-     constructs in the GNU C library.  (`configure' will detect the
-     problem and suppress these constructs, so the library will still
-     be usable, but functionality may be lost--for example, you can not
-     build a shared libc with old binutils.)
-
-`--without-fp'
-`--nfp'
-     Use this option if your computer lacks hardware floating-point
-     support and your operating system does not emulate an FPU.
-
-`--prefix=DIRECTORY'
-     Install machine-independent data files in subdirectories of
-     `DIRECTORY'.  (You can also set this in `configparms'; see below.)
-     The default is to install in `/usr/local'.
-
-`--exec-prefix=DIRECTORY'
-     Install the library and other machine-dependent files in
-     subdirectories of `DIRECTORY'.  (You can also set this in
-     `configparms'; see below.)  The default is to use <prefix>/bin and
-     <prefix>/sbin.
-
-`--enable-shared'
-`--disable-shared'
-     Enable or disable building of an ELF shared library on systems that
-     support it.  The default is to build the shared library on systems
-     using ELF when the GNU `binutils' are available.
-
-`--enable-profile'
-`--disable-profile'
-     Enable or disable building of the profiled C library, `-lc_p'.  The
-     default is to build the profiled library.  You may wish to disable
-     it if you don't plan to do profiling, because it doubles the build
-     time of compiling just the unprofiled static library.
-
-`--enable-omitfp'
-     Enable building a highly-optimized but possibly undebuggable
-     static C library.  This causes the normal static and shared (if
-     enabled) C libraries to be compiled with maximal optimization,
-     including the `-fomit-frame-pointer' switch that makes debugging
-     impossible on many machines, and without debugging information
-     (which makes the binaries substantially smaller).  An additional
-     static library is compiled with no optimization and full debugging
-     information, and installed as `-lc_g'.
-
-   The simplest way to run `configure' is to do it in the directory
-that contains the library sources.  This prepares to build the library
-in that very directory.
-
-   You can prepare to build the library in some other directory by going
-to that other directory to run `configure'.  In order to run configure,
-you will have to specify a directory for it, like this:
-
-     mkdir sun4
-     cd sun4
-     ../configure sparc-sun-sunos4.1
-
-`configure' looks for the sources in whatever directory you specified
-for finding `configure' itself.  It does not matter where in the file
-system the source and build directories are--as long as you specify the
-source directory when you run `configure', you will get the proper
-results.
-
-   This feature lets you keep sources and binaries in different
-directories, and that makes it easy to build the library for several
-different machines from the same set of sources.  Simply create a build
-directory for each target machine, and run `configure' in that
-directory specifying the target machine's configuration name.
-
-   The library has a number of special-purpose configuration parameters.
-These are defined in the file `Makeconfig'; see the comments in that
-file for the details.
-
-   But don't edit the file `Makeconfig' yourself--instead, create a
-file `configparms' in the directory where you are building the library,
-and define in that file the parameters you want to specify.
-`configparms' should *not* be an edited copy of `Makeconfig'; specify
-only the parameters that you want to override.  To see how to set these
-parameters, find the section of `Makeconfig' that says "These are the
-configuration variables." Then for each parameter that you want to
-change, copy the definition from `Makeconfig' to your new `configparms'
-file, and change the value as appropriate for your system.
-
-   It is easy to configure the GNU C library for cross-compilation by
-setting a few variables in `configparms'.  Set `CC' to the
-cross-compiler for the target you configured the library for; it is
-important to use this same `CC' value when running `configure', like
-this: `CC=TARGET-gcc configure TARGET'.  Set `BUILD_CC' to the compiler
-to use for for programs run on the build system as part of compiling
-the library.  You may need to set `AR' and `RANLIB' to cross-compiling
-versions of `ar' and `ranlib' if the native tools are not configured to
-work with object files for the target you configured for.
-
-   Some of the machine-dependent code for some machines uses extensions
-in the GNU C compiler, so you may need to compile the library with GCC.
-(In fact, all of the existing complete ports require GCC.)
-
-   To build the library and related programs, type `make'.  This will
-produce a lot of output, some of which may look like errors from `make'
-(but isn't).  Look for error messages from `make' containing `***'.
-Those indicate that something is really wrong.
-
-   To build and run some test programs which exercise some of the
-library facilities, type `make check'.  This will produce several files
-with names like `PROGRAM.out'.
-
-   To format the `GNU C Library Reference Manual' for printing, type
-`make dvi'.  You need a working TeX installation to do this.
-
-   To install the library and its header files, and the Info files of
-the manual, type `make install'.  This will build things if necessary,
-before installing them.  If you want to install the files in a different
-place than the one specified at configuration time you can specify a
-value for the Makefile variable `install_root' on the command line.
-This is useful to create chroot'ed environment or to prepare binary
-releases.
-
-Recommended Tools to Install the GNU C Library
-----------------------------------------------
-
-   We recommend installing the following GNU tools before attempting to
-build the GNU C library:
-
-   * `make' 3.76.1
-
-     You need the latest version of GNU `make'.  Modifying the GNU C
-     Library to work with other `make' programs would be so hard that we
-     recommend you port GNU `make' instead.  *Really.*  We recommend
-     version GNU `make' version 3.75, 3.76.1 or later.  Version 3.76 is
-     known to have a bug which only shows up in big projects like GNU
-     `libc'.
-
-   * GCC 2.7.2.3
-
-     On most platforms, the GNU C library can only be compiled with the
-     GNU C compiler.  We recommend GCC version 2.7.2 or later; earlier
-     versions may have problems.
-
-     On PowerPC, GCC versions dated earlier than 970904 are known not
-     to work (they crash), including 2.7.2.
-
-   * `binutils' 2.8.1
-
-     Using the GNU `binutils' (assembler, linker, and related tools) is
-     preferable when possible, and they are required to build an ELF
-     shared C library.  We recommend `binutils' version 2.8.1 or later;
-     earlier versions are known to have problems or to not support all
-     architectures.
-
-   * `texinfo' 3.11
-
-     To correctly translate and install the Texinfo documentation you
-     need this version of the `texinfo' package.  Former versions did
-     not understand all the tags used in the document and also the
-     installation mechanisms for the info files was not present or
-     worked differently.
-
-     On some Debian Linux based systems the used `install-info' program
-     works differently.  Here you have to run make like this:
-
-          make INSTALL_INFO=/path/to/GNU/install-info install
-
-   If you change any configuration file you will need also
-
-   * `autoconf' 2.12
-
-and if you change any of the message translation files you will also
-need
-
-   * `GNU gettext' 0.10 or later
-
-If you upgrade your source tree using the patches made available you
-probably will need those package above in any case.
-
-Supported Configurations
-------------------------
-
-   The GNU C Library currently supports configurations that match the
-following patterns:
-
-     alpha-ANYTHING-linux
-     iX86-ANYTHING-gnu
-     iX86-ANYTHING-linux
-     m68k-ANYTHING-linux
-     powerpc-ANYTHING-linux
-     sparc64-ANYTHING-linux
-
-   Former releases of this library (version 1.09.1 and perhaps earlier
-versions) used to run on the following configurations:
-
-     alpha-dec-osf1
-     alpha-ANYTHING-linuxecoff
-     iX86-ANYTHING-bsd4.3
-     iX86-ANYTHING-isc2.2
-     iX86-ANYTHING-isc3.N
-     iX86-ANYTHING-sco3.2
-     iX86-ANYTHING-sco3.2v4
-     iX86-ANYTHING-sysv
-     iX86-ANYTHING-sysv4
-     iX86-force_cpu386-none
-     iX86-sequent-bsd
-     i960-nindy960-none
-     m68k-hp-bsd4.3
-     m68k-mvme135-none
-     m68k-mvme136-none
-     m68k-sony-newsos3
-     m68k-sony-newsos4
-     m68k-sun-sunos4.N
-     mips-dec-ultrix4.N
-     mips-sgi-irix4.N
-     sparc-sun-solaris2.N
-     sparc-sun-sunos4.N
-
-   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>.
-
-   Each case of `iX86' can be `i386', `i486', `i586', or `i686'.  All
-of those configurations produce a library that can run on any of these
-processors.  The library will be optimized for the specified processor,
-but will not use instructions not available on all of them.
-
-   While no other configurations are supported, there are handy aliases
-for these few.  (These aliases work in other GNU software as well.)
-
-     decstation
-     hp320-bsd4.3 hp300bsd
-     i486-gnu
-     i586-linux
-     i386-sco
-     i386-sco3.2v4
-     i386-sequent-dynix
-     i386-svr4
-     news
-     sun3-sunos4.N sun3
-     sun4-solaris2.N sun4-sunos5.N
-     sun4-sunos4.N sun4
-
-Reporting Bugs
-==============
-
-   There are probably bugs in the GNU C library.  There are certainly
-errors and omissions in this manual.  If you report them, they will get
-fixed.  If you don't, no one will ever know about them and they will
-remain unfixed for all eternity, if not longer.
-
-   To report a bug, first you must find it.  Hopefully, this will be the
-hard part.  Once you've found a bug, make sure it's really a bug.  A
-good way to do this is to see if the GNU C library behaves the same way
-some other C library does.  If so, probably you are wrong and the
-libraries are right (but not necessarily).  If not, one of the libraries
-is probably wrong.
-
-   Once you're sure you've found a bug, try to narrow it down to the
-smallest test case that reproduces the problem.  In the case of a C
-library, you really only need to narrow it down to one library function
-call, if possible.  This should not be too difficult.
-
-   The final step when you have a simple test case is to report the bug.
-When reporting a bug, send your test case, the results you got, the
-results you expected, what you think the problem might be (if you've
-thought of anything), your system type, and the version of the GNU C
-library which you are using.  Also include the files `config.status'
-and `config.make' which are created by running `configure'; they will
-be in whatever directory was current when you ran `configure'.
-
-   If you think you have found some way in which the GNU C library does
-not conform to the ISO and POSIX standards (*note Standards and
-Portability::.), that is definitely a bug.  Report it!
-
-   Send bug reports to the Internet address <bug-glibc@prep.ai.mit.edu>
-or the UUCP path <mit-eddie!prep.ai.mit.edu!bug-glibc>.  If you have
-other problems with installation or use, please report those as well.
-
-   If you are not sure how a function should behave, and this manual
-doesn't tell you, that's a bug in the manual.  Report that too!  If the
-function's behavior disagrees with the manual, then either the library
-or the manual has a bug, so report the disagreement.  If you find any
-errors or omissions in this manual, please report them to the Internet
-address <bug-glibc-manual@prep.ai.mit.edu> or the UUCP path
-<mit-eddie!prep.ai.mit.edu!bug-glibc-manual>.
-
 Adding New Functions
 ====================
 
@@ -463,8 +156,8 @@ function is used.
    Some rare functions are only useful on specific systems and aren't
 defined at all on others; these do not appear anywhere in the
 system-independent source code or makefiles (including the `generic'
-and `stub' directories), only in the system-dependent `Makefile' in the
-specific system's subdirectory.
+directory), only in the system-dependent `Makefile' in the specific
+system's subdirectory.
 
    If you come across a file that is in one of the main source
 directories (`string', `stdio', etc.), and you want to write a machine-
@@ -560,73 +253,56 @@ manufacturer's name, and the operating system.  `configure' uses these
 to pick the list of system-dependent directories to look for.  If the
 `--nfp' option is *not* passed to `configure', the directory
 `MACHINE/fpu' is also used.  The operating system often has a "base
-operating system"; for example, if the operating system is `sunos4.1',
-the base operating system is `unix/bsd'.  The algorithm used to pick
-the list of directories is simple: `configure' makes a list of the base
+operating system"; for example, if the operating system is `Linux', the
+base operating system is `unix/sysv'.  The algorithm used to pick the
+list of directories is simple: `configure' makes a list of the base
 operating system, manufacturer, CPU type, and operating system, in that
 order.  It then concatenates all these together with slashes in
 between, to produce a directory name; for example, the configuration
-`sparc-sun-sunos4.1' results in `unix/bsd/sun/sparc/sunos4.1'.
-`configure' then tries removing each element of the list in turn, so
-`unix/bsd/sparc' and `sun/sparc' are also tried, among others.  Since
+`i686-linux-gnu' results in `unix/sysv/linux/i386/i686'.  `configure'
+then tries removing each element of the list in turn, so
+`unix/sysv/linux' and `unix/sysv' are also tried, among others.  Since
 the precise version number of the operating system is often not
 important, and it would be very inconvenient, for example, to have
-identical `sunos4.1.1' and `sunos4.1.2' directories, `configure' tries
+identical `irix6.2' and `irix6.3' directories, `configure' tries
 successively less specific operating system names by removing trailing
 suffixes starting with a period.
 
    As an example, here is the complete list of directories that would be
-tried for the configuration `sparc-sun-sunos4.1' (without the `--nfp'
-option):
-
-     sparc/fpu
-     unix/bsd/sun/sunos4.1/sparc
-     unix/bsd/sun/sunos4.1
-     unix/bsd/sun/sunos4/sparc
-     unix/bsd/sun/sunos4
-     unix/bsd/sun/sunos/sparc
-     unix/bsd/sun/sunos
-     unix/bsd/sun/sparc
-     unix/bsd/sun
-     unix/bsd/sunos4.1/sparc
-     unix/bsd/sunos4.1
-     unix/bsd/sunos4/sparc
-     unix/bsd/sunos4
-     unix/bsd/sunos/sparc
-     unix/bsd/sunos
-     unix/bsd/sparc
-     unix/bsd
-     unix/sun/sunos4.1/sparc
-     unix/sun/sunos4.1
-     unix/sun/sunos4/sparc
-     unix/sun/sunos4
-     unix/sun/sunos/sparc
-     unix/sun/sunos
-     unix/sun/sparc
-     unix/sun
-     unix/sunos4.1/sparc
-     unix/sunos4.1
-     unix/sunos4/sparc
-     unix/sunos4
-     unix/sunos/sparc
-     unix/sunos
-     unix/sparc
-     unix
-     sun/sunos4.1/sparc
-     sun/sunos4.1
-     sun/sunos4/sparc
-     sun/sunos4
-     sun/sunos/sparc
-     sun/sunos
-     sun/sparc
-     sun
-     sunos4.1/sparc
-     sunos4.1
-     sunos4/sparc
-     sunos4
-     sunos/sparc
-     sunos
-     sparc
+tried for the configuration `i686-linux-gnu' (with the `crypt' and
+`linuxthreads' add-on):
+
+     sysdeps/i386/elf
+     crypt/sysdeps/unix
+     linuxthreads/sysdeps/unix/sysv/linux
+     linuxthreads/sysdeps/pthread
+     linuxthreads/sysdeps/unix/sysv
+     linuxthreads/sysdeps/unix
+     linuxthreads/sysdeps/i386/i686
+     linuxthreads/sysdeps/i386
+     linuxthreads/sysdeps/pthread/no-cmpxchg
+     sysdeps/unix/sysv/linux/i386
+     sysdeps/unix/sysv/linux
+     sysdeps/gnu
+     sysdeps/unix/common
+     sysdeps/unix/mman
+     sysdeps/unix/inet
+     sysdeps/unix/sysv/i386/i686
+     sysdeps/unix/sysv/i386
+     sysdeps/unix/sysv
+     sysdeps/unix/i386
+     sysdeps/unix
+     sysdeps/posix
+     sysdeps/i386/i686
+     sysdeps/i386/i486
+     sysdeps/libm-i387/i686
+     sysdeps/i386/fpu
+     sysdeps/libm-i387
+     sysdeps/i386
+     sysdeps/wordsize-32
+     sysdeps/ieee754
+     sysdeps/libm-ieee754
+     sysdeps/generic
 
    Different machine architectures are conventionally subdirectories at
 the top level of the `sysdeps' directory tree.  For example,
@@ -651,6 +327,15 @@ hierarchy that are not for particular machine architectures.
      this directory is referred to in the `Implies' file in a machine
      architecture-specific directory, such as `m68k/Implies'.
 
+`libm-ieee754'
+     This directory contains an implementation of a mathematical library
+     usable on platforms which use IEEE 754 conformant floating-point
+     arithmetic.
+
+`libm-i387'
+     This is a special case.  Ideally the code should be in
+     `sysdeps/i386/fpu' but for various reasons it is kept aside.
+
 `posix'
      This directory contains implementations of things in the library in
      terms of POSIX.1 functions.  This includes some of the POSIX.1
@@ -670,8 +355,8 @@ hierarchy that are not for particular machine architectures.
 
     `unix/inet'
           This directory is for `socket' and related functions on Unix
-          systems.  The `inet' top-level subdirectory is enabled by
-          `unix/inet/Subdirs'.  `unix/common' implies `unix/inet'.
+          systems.  `unix/inet/Subdirs' enables the `inet' top-level
+          subdirectory.  `unix/common' implies `unix/inet'.
 
 `mach'
      This is the directory for things based on the Mach microkernel
@@ -695,10 +380,11 @@ subdirectories (and subdirectory trees) for various Unix variants.
 
    The functions which are system calls in most Unix systems are
 implemented in assembly code, which is generated automatically from
-specifications in the file `sysdeps/unix/syscalls.list'.  Some special
-system calls are implemented in files that are named with a suffix of
-`.S'; for example, `_exit.S'.  Files ending in `.S' are run through the
-C preprocessor before being fed to the assembler.
+specifications in files named `syscalls.list'.  There are several such
+files, one in `sysdeps/unix' and others in its subdirectories.  Some
+special system calls are implemented in files that are named with a
+suffix of `.S'; for example, `_exit.S'.  Files ending in `.S' are run
+through the C preprocessor before being fed to the assembler.
 
    These files all use a set of macros that should be defined in
 `sysdep.h'.  The `sysdep.h' file in `sysdeps/unix' partially defines
@@ -707,368 +393,12 @@ for the particular machine and operating system variant.  See
 `sysdeps/unix/sysdep.h' and the machine-specific `sysdep.h'
 implementations to see what these macros are and what they should do.
 
-   The system-specific makefile for the `unix' directory (that is, the
-file `sysdeps/unix/Makefile') gives rules to generate several files
-from the Unix system you are building the library on (which is assumed
-to be the target system you are building the library *for*).  All the
+   The system-specific makefile for the `unix' directory
+(`sysdeps/unix/Makefile') gives rules to generate several files from
+the Unix system you are building the library on (which is assumed to be
+the target system you are building the library *for*).  All the
 generated files are put in the directory where the object files are
 kept; they should not affect the source tree itself.  The files
 generated are `ioctls.h', `errnos.h', `sys/param.h', and `errlist.c'
 (for the `stdio' section of the library).
 
-Contributors to the GNU C Library
-=================================
-
-   The GNU C library was written originally by Roland McGrath.  Some
-parts of the library were contributed or worked on by other people.
-
-   * The `getopt' function and related code were written by Richard
-     Stallman, David J. MacKenzie, and Roland McGrath.
-
-   * The merge sort function `qsort' was written by Michael J. Haertel.
-
-   * The quick sort function used as a fallback by `qsort' was written
-     by Douglas C. Schmidt.
-
-   * The memory allocation functions `malloc', `realloc' and `free' and
-     related code were written by Michael J. Haertel.
-
-   * Fast implementations of many of the string functions (`memcpy',
-     `strlen', etc.) were written by Torbj"orn Granlund.
-
-   * The `tar.h' header file was written by David J. MacKenzie.
-
-   * The port to the MIPS DECStation running Ultrix 4
-     (`mips-dec-ultrix4') was contributed by Brendan Kehoe and Ian
-     Lance Taylor.
-
-   * The DES encryption function `crypt' and related functions were
-     contributed by Michael Glad.
-
-   * The `ftw' and `nftw' function was contributed by Ulrich Drepper.
-
-   * The startup code to support SunOS shared libraries was contributed
-     by Tom Quinn.
-
-   * The `mktime' function was contributed by Paul Eggert.
-
-   * The port to the Sequent Symmetry running Dynix version 3
-     (`i386-sequent-bsd') was contributed by Jason Merrill.
-
-   * The timezone support code is derived from the public-domain
-     timezone package by Arthur David Olson and his many contributors.
-
-   * The port to the DEC Alpha running OSF/1 (`alpha-dec-osf1') was
-     contributed by Brendan Kehoe, using some code written by Roland
-     McGrath.
-
-   * The port to SGI machines running Irix 4 (`mips-sgi-irix4') was
-     contributed by Tom Quinn.
-
-   * The port of the Mach and Hurd code to the MIPS architecture
-     (`mips-ANYTHING-gnu') was contributed by Kazumoto Kojima.
-
-   * The floating-point printing function used by `printf' and friends
-     and the floating-point reading function used by `scanf', `strtod'
-     and friends were written by Ulrich Drepper.  The multi-precision
-     integer functions used in those functions are taken from GNU MP,
-     which was contributed by Torbj"orn Granlund.
-
-   * The internationalization support in the library, and the support
-     programs `locale' and `localedef', were written by Ulrich Drepper.
-     Ulrich Drepper adapted the support code for message catalogs
-     (`libintl.h', etc.) from the GNU `gettext' package, which he also
-     wrote.  He also contributed the `catgets' support and the entire
-     suite of multi-byte and wide-character support functions
-     (`wctype.h', `wchar.h', etc.).
-
-   * The implementations of the `nsswitch.conf' mechanism and the files
-     and DNS backends for it were designed and written by Ulrich
-     Drepper and Roland McGrath, based on a backend interface defined
-     by Peter Eriksson.
-
-   * The port to Linux i386/ELF (`i386-ANYTHING-linux') was contributed
-     by Ulrich Drepper, based in large part on work done in Hongjiu
-     Lu's Linux version of the GNU C Library.
-
-   * The port to Linux/m68k (`m68k-ANYTHING-linux') was contributed by
-     Andreas Schwab.
-
-   * The ports to Linux/ARM (`arm-ANYTHING-linuxaout') and ARM
-     standalone (`arm-ANYTHING-none'), as well as parts of the IPv6
-     support code, were contributed by Philip Blundell.
-
-   * Richard Henderson contributed the ELF dynamic linking code and
-     other support for the Alpha processor.
-
-   * David Mosberger-Tang contributed the port to Linux/Alpha
-     (`alpha-ANYTHING-linux').
-
-   * The port to Linux on PowerPC (`powerpc-ANYTHING-linux') was
-     contributed by Geoffrey Keating.
-
-   * Miles Bader wrote the argp argument-parsing package, and the
-     argz/envz interfaces.
-
-   * Stephen R. van den Berg contributed a highly-optimized `strstr'
-     function.
-
-   * Ulrich Drepper contributed the `hsearch' and `drand48' families of
-     functions; reentrant `...`_r'' versions of the `random' family;
-     System V shared memory and IPC support code; and several
-     highly-optimized string functions for iX86 processors.
-
-   * The math functions are taken from `fdlibm-5.1' by Sun
-     Microsystems, as modified by J.T. Conklin, Ian Lance Taylor,
-     Ulrich Drepper, Andreas Schwab, and Roland McGrath.
-
-   * The `libio' library used to implement `stdio' functions on some
-     platforms was written by Per Bothner and modified by Ulrich
-     Drepper.
-
-   * The Internet-related code (most of the `inet' subdirectory) and
-     several other miscellaneous functions and header files have been
-     included from 4.4 BSD with little or no modification.
-
-     All code incorporated from 4.4 BSD is under the following
-     copyright:
-
-               Copyright (C) 1991 Regents of the University of California.
-               All rights reserved.
-
-          Redistribution and use in source and binary forms, with or
-          without modification, are permitted provided that the
-          following conditions are met:
-
-            1. Redistributions of source code must retain the above
-               copyright notice, this list of conditions and the
-               following disclaimer.
-
-            2. Redistributions in binary form must reproduce the above
-               copyright notice, this list of conditions and the
-               following disclaimer in the documentation and/or other
-               materials provided with the distribution.
-
-            3. All advertising materials mentioning features or use of
-               this software must display the following acknowledgement:
-                    This product includes software developed by the
-                    University of California, Berkeley and its
-                    contributors.
-
-            4. Neither the name of the University nor the names of its
-               contributors may be used to endorse or promote products
-               derived from this software without specific prior
-               written permission.
-
-          THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS
-          IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-          LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-          FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT
-          SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-          INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-          DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-          SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-          OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-          LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-          (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
-          THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
-          OF SUCH DAMAGE.
-
-   * The random number generation functions `random', `srandom',
-     `setstate' and `initstate', which are also the basis for the
-     `rand' and `srand' functions, were written by Earl T. Cohen for
-     the University of California at Berkeley and are copyrighted by the
-     Regents of the University of California.  They have undergone minor
-     changes to fit into the GNU C library and to fit the ISO C
-     standard, but the functional code is Berkeley's.
-
-   * The Internet resolver code is taken directly from BIND 4.9.5,
-     which is under both the Berkeley copyright above and also:
-
-          Portions Copyright (C) 1993 by Digital Equipment Corporation.
-
-          Permission to use, copy, modify, and distribute this software
-          for any purpose with or without fee is hereby granted,
-          provided that the above copyright notice and this permission
-          notice appear in all copies, and that the name of Digital
-          Equipment Corporation not be used in advertising or publicity
-          pertaining to distribution of the document or software
-          without specific, written prior permission.
-
-          THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP.
-          DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-          INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-          FITNESS.  IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION BE
-          LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
-          DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-          DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-          OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-          WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-   * The code to support Sun RPC is taken verbatim from Sun's
-     RPCSRC-4.0 distribution, and is covered by this copyright:
-
-               Copyright (C) 1984, Sun Microsystems, Inc.
-
-          Sun RPC is a product of Sun Microsystems, Inc. and is
-          provided for unrestricted use provided that this legend is
-          included on all tape media and as a part of the software
-          program in whole or part.  Users may copy or modify Sun RPC
-          without charge, but are not authorized to license or
-          distribute it to anyone else except as part of a product or
-          program developed by the user.
-
-          SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND
-          INCLUDING THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND
-          FITNESS FOR A PARTICULAR PURPOSE, OR ARISING FROM A COURSE OF
-          DEALING, USAGE OR TRADE PRACTICE.
-
-          Sun RPC is provided with no support and without any
-          obligation on the part of Sun Microsystems, Inc. to assist in
-          its use, correction, modification or enhancement.
-
-          SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT
-          TO THE INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY
-          PATENTS BY SUN RPC OR ANY PART THEREOF.
-
-          In no event will Sun Microsystems, Inc. be liable for any
-          lost revenue or profits or other special, indirect and
-          consequential damages, even if Sun has been advised of the
-          possibility of such damages.
-
-               Sun Microsystems, Inc.
-               2550 Garcia Avenue
-               Mountain View, California  94043
-
-   * Some of the support code for Mach is taken from Mach 3.0 by CMU,
-     and is under the following copyright terms:
-
-               Mach Operating System
-               Copyright (C) 1991,1990,1989 Carnegie Mellon University
-               All Rights Reserved.
-
-          Permission to use, copy, modify and distribute this software
-          and its documentation is hereby granted, provided that both
-          the copyright notice and this permission notice appear in all
-          copies of the software, derivative works or modified
-          versions, and any portions thereof, and that both notices
-          appear in supporting documentation.
-
-          CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS
-          IS" CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF
-          ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF
-          THIS SOFTWARE.
-
-          Carnegie Mellon requests users of this software to return to
-
-                Software Distribution Coordinator
-                School of Computer Science
-                Carnegie Mellon University
-                Pittsburgh PA 15213-3890
-
-          or <Software.Distribution@CS.CMU.EDU> any improvements or
-          extensions that they make and grant Carnegie Mellon the
-          rights to redistribute these changes.
-
-   * The code for the database library `libdb' comes from the 2.3
-     release of Berkeley DB. That code is under the same copyright as
-     4.4 BSD and also:
-
-               Copyright (C) 1990, 1993, 1994, 1995, 1996, 1997
-               Sleepycat Software.  All rights reserved.
-
-          Redistribution and use in source and binary forms, with or
-          without modification, are permitted provided that the
-          following conditions are met:
-
-            1. Redistributions of source code must retain the above
-               copyright notice, this list of conditions and the
-               following disclaimer.
-
-            2. Redistributions in binary form must reproduce the above
-               copyright notice, this list of conditions and the
-               following disclaimer in the documentation and/or other
-               materials provided with the distribution.
-
-            3. Redistributions in any form must be accompanied by
-               information on how to obtain complete source code for
-               the DB software and any accompanying software that uses
-               the DB software.  The source code must either be
-               included in the distribution or be available for no more
-               than the cost of distribution plus a nominal fee, and
-               must be freely redistributable under reasonable
-               conditions.  For an executable file, complete source
-               code means the source code for all modules it contains.
-               It does not mean source code for modules or files that
-               typically accompany the operating system on which the
-               executable file runs, e.g., standard library modules or
-               system header files.
-
-          THIS SOFTWARE IS PROVIDED BY SLEEPYCAT SOFTWARE "AS IS" AND
-          ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-          TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-          A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
-          SLEEPYCAT SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
-          INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-          (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-          GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-          INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-          WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-          NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-          THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-          DAMAGE.
-
-               Portions copyright (C) 1995, 1996
-               The President and Fellows of Harvard University.
-               All rights reserved.
-
-          Redistribution and use in source and binary forms, with or
-          without modification, are permitted provided that the
-          following conditions are met:
-            1. Redistributions of source code must retain the above
-               copyright notice, this list of conditions and the
-               following disclaimer.
-
-            2. Redistributions in binary form must reproduce the above
-               copyright notice, this list of conditions and the
-               following disclaimer in the documentation and/or other
-               materials provided with the distribution.
-
-            3. All advertising materials mentioning features or use of
-               this software must display the following acknowledgement:
-                     This product includes software developed by
-                    Harvard University  and its contributors.
-
-            4. Neither the name of the University nor the names of its
-               contributors may be used to endorse or promote products
-               derived from this software without specific prior
-               written permission.
-
-          THIS SOFTWARE IS PROVIDED BY HARVARD AND ITS CONTRIBUTORS "AS
-          IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-          LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-          FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT
-          SHALL HARVARD OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-          INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-          DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-          SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-          OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-          LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-          (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
-          THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
-          OF SUCH DAMAGE.
-
-          For a license to use, redistribute or sell DB software under
-          conditions other than those described above, or to purchase
-          support for this software, please contact Sleepycat Software
-          at
-
-                Sleepycat Software
-                394 E. Riding Dr.
-                Carlisle, MA 01741
-                USA
-                +1-508-287-4781
-
-          or <db@sleepycat.com>.
-
-
diff --git a/configure b/configure
index 6154b14221..6bb49c3dba 100755
--- a/configure
+++ b/configure
@@ -1685,7 +1685,7 @@ fi
 echo $ac_n "checking compiler version""... $ac_c" 1>&6
 echo "configure:1687: checking compiler version" >&5
 case `${CC-cc} -v 2>&1` in
-  *egcs-2.91.* | *egcs-1.0.[2-9]* | *egcs-1.1* | *2.8.[1-9]* | *2.9.[0-9] )
+  *egcs-2.91.* | *egcs-1.0.[2-9]* | *egcs-1.1* | *2.8.[1-9]* | *2.9.[0-9]*)
     cc_is_recent="ok"
     ;;
   *)
diff --git a/glibcbug.in b/glibcbug.in
index b55995d164..c915f34f04 100644
--- a/glibcbug.in
+++ b/glibcbug.in
@@ -24,15 +24,17 @@ STDIO="@stdio@"
 PATH=/bin:/usr/bin:/usr/local/bin:$PATH
 export PATH
 
-TEMP=`mktemp -q /tmp/glibcbugXXXXXX`
+TEMP=`mktemp -q /tmp/glibcbugXXXXXX 2>/dev/null`
 if test $? -ne 0; then
   TEMP=/tmp/glibcbug.$$
   echo > $TEMP
+  chmod 600 $TEMP
 fi
-TEMPx=`mktemp -q /tmp/glibcbugXXXXXX`
+TEMPx=`mktemp -q /tmp/glibcbugXXXXXX 2>/dev/null`
 if test $? -ne 0; then
   TEMPx=/tmp/glibcbug.$$.x
   echo > $TEMPx
+  chmod 600 $TEMPx
 fi
 
 BUGADDR=${1-$BUGGLIBC}
diff --git a/libc.map b/libc.map
index 3dbd234ee9..32f3c8c262 100644
--- a/libc.map
+++ b/libc.map
@@ -498,8 +498,8 @@ GLIBC_2.1 {
     fopen; fclose; fdopen;
 
     # g*
-    gai_strerror; getcontext; getdate; getdate_r; getitimer; getname;
-    getnameinfo; getpt; getrlimit64; getrusage; gettimeofday;
+    gai_strerror; getcontext; getdate; getdate_r; getitimer; getnameinfo;
+    getnetname; getpt; getrlimit64; getrusage; gettimeofday;
     getutxent; getutxid; getutxline; grantpt;
 
     # New special glibc functions.
diff --git a/manual/filesys.texi b/manual/filesys.texi
index c5c2f105d2..47f43adfb9 100644
--- a/manual/filesys.texi
+++ b/manual/filesys.texi
@@ -541,7 +541,7 @@ uses the @code{strverscmp} function internally.
 
 It is important not to mix the use of @code{scandir} and the 64 bits
 comparison functions or vice versa.  There are systems on which this
-work but on others it will fail miserably.
+works but on others it will fail miserably.
 
 @node Simple Directory Lister Mark II
 @subsection Simple Program to List a Directory, Mark II
diff --git a/manual/install.texi b/manual/install.texi
index e1d20868a6..3313bf0f38 100644
--- a/manual/install.texi
+++ b/manual/install.texi
@@ -8,6 +8,7 @@
 @menu
 * Tools for Installation::      We recommend using these tools to build.
 * Supported Configurations::    What systems the GNU C library runs on.
+* Tips for Installation::       Useful hints for the installation.
 * Reporting Bugs::              How to report bugs (if you want to
                                 get them fixed) and other troubles
                                 you may have with the GNU C library.
@@ -325,6 +326,39 @@ sun4-solaris2.@var{n} sun4-sunos5.@var{n}
 sun4-sunos4.@var{n} sun4
 @end smallexample
 
+@node Tips for Installation
+@appendixsec Useful hints for the installation
+
+There are a some more or less obvious methods one should know when
+compiling GNU libc:
+
+@itemize @bullet
+@item
+Better never compile in the source directory.  Create a new directory
+and run the @file{configure} from there.  Everything should happen
+automagically.
+
+@item
+You can use the @code{-j} option of GNU make by changing the line
+specifying @code{PARALLELMAKE} in the Makefile generated during the
+configuration.
+
+It is not useful to start the @code{make} process using the @code{-j}
+option since this option is not propagated down to the sub-@code{make}s.
+
+@item
+If you made some changes after a complete build and only want to check
+these changes run @code{make} while specifying the list of subdirs it
+has to visit.
+
+@smallexample
+make subdirs="nss elf"
+@end smallexample
+
+The above build run will only visit the subdirectories @file{nss} and
+@file{elf}.  Beside this it updates the @file{libc} files itself.
+@end itemize
+
 @node Reporting Bugs
 @appendixsec Reporting Bugs
 @cindex reporting bugs
diff --git a/manual/maint.texi b/manual/maint.texi
index b8ae488c2f..a7e0cc4b0a 100644
--- a/manual/maint.texi
+++ b/manual/maint.texi
@@ -296,74 +296,57 @@ these to pick the list of system-dependent directories to look for.  If
 the @samp{--nfp} option is @emph{not} passed to @file{configure}, the
 directory @file{@var{machine}/fpu} is also used.  The operating system
 often has a @dfn{base operating system}; for example, if the operating
-system is @samp{sunos4.1}, the base operating system is @samp{unix/bsd}.
+system is @samp{Linux}, the base operating system is @samp{unix/sysv}.
 The algorithm used to pick the list of directories is simple:
 @file{configure} makes a list of the base operating system,
 manufacturer, CPU type, and operating system, in that order.  It then
 concatenates all these together with slashes in between, to produce a
-directory name; for example, the configuration @w{@samp{sparc-sun-sunos4.1}}
-results in @file{unix/bsd/sun/sparc/sunos4.1}.  @file{configure} then
+directory name; for example, the configuration @w{@samp{i686-linux-gnu}}
+results in @file{unix/sysv/linux/i386/i686}.  @file{configure} then
 tries removing each element of the list in turn, so
-@file{unix/bsd/sparc} and @file{sun/sparc} are also tried, among others.
+@file{unix/sysv/linux} and @file{unix/sysv} are also tried, among others.
 Since the precise version number of the operating system is often not
 important, and it would be very inconvenient, for example, to have
-identical @file{sunos4.1.1} and @file{sunos4.1.2} directories,
+identical @file{irix6.2} and @file{irix6.3} directories,
 @file{configure} tries successively less specific operating system names
 by removing trailing suffixes starting with a period.
 
 As an example, here is the complete list of directories that would be
-tried for the configuration @w{@samp{sparc-sun-sunos4.1}} (without the
-@w{@samp{--nfp}} option):
+tried for the configuration @w{@samp{i686-linux-gnu}} (with the
+@file{crypt} and @file{linuxthreads} add-on):
 
 @smallexample
-sparc/fpu
-unix/bsd/sun/sunos4.1/sparc
-unix/bsd/sun/sunos4.1
-unix/bsd/sun/sunos4/sparc
-unix/bsd/sun/sunos4
-unix/bsd/sun/sunos/sparc
-unix/bsd/sun/sunos
-unix/bsd/sun/sparc
-unix/bsd/sun
-unix/bsd/sunos4.1/sparc
-unix/bsd/sunos4.1
-unix/bsd/sunos4/sparc
-unix/bsd/sunos4
-unix/bsd/sunos/sparc
-unix/bsd/sunos
-unix/bsd/sparc
-unix/bsd
-unix/sun/sunos4.1/sparc
-unix/sun/sunos4.1
-unix/sun/sunos4/sparc
-unix/sun/sunos4
-unix/sun/sunos/sparc
-unix/sun/sunos
-unix/sun/sparc
-unix/sun
-unix/sunos4.1/sparc
-unix/sunos4.1
-unix/sunos4/sparc
-unix/sunos4
-unix/sunos/sparc
-unix/sunos
-unix/sparc
-unix
-sun/sunos4.1/sparc
-sun/sunos4.1
-sun/sunos4/sparc
-sun/sunos4
-sun/sunos/sparc
-sun/sunos
-sun/sparc
-sun
-sunos4.1/sparc
-sunos4.1
-sunos4/sparc
-sunos4
-sunos/sparc
-sunos
-sparc
+sysdeps/i386/elf
+crypt/sysdeps/unix
+linuxthreads/sysdeps/unix/sysv/linux
+linuxthreads/sysdeps/pthread
+linuxthreads/sysdeps/unix/sysv
+linuxthreads/sysdeps/unix
+linuxthreads/sysdeps/i386/i686
+linuxthreads/sysdeps/i386
+linuxthreads/sysdeps/pthread/no-cmpxchg
+sysdeps/unix/sysv/linux/i386
+sysdeps/unix/sysv/linux
+sysdeps/gnu
+sysdeps/unix/common
+sysdeps/unix/mman
+sysdeps/unix/inet
+sysdeps/unix/sysv/i386/i686
+sysdeps/unix/sysv/i386
+sysdeps/unix/sysv
+sysdeps/unix/i386
+sysdeps/unix
+sysdeps/posix
+sysdeps/i386/i686
+sysdeps/i386/i486
+sysdeps/libm-i387/i686
+sysdeps/i386/fpu
+sysdeps/libm-i387
+sysdeps/i386
+sysdeps/wordsize-32
+sysdeps/ieee754
+sysdeps/libm-ieee754
+sysdeps/generic
 @end smallexample
 
 Different machine architectures are conventionally subdirectories at the
@@ -391,6 +374,15 @@ where the C type @code{float} is IEEE 754 single-precision format, and
 directory is referred to in the @file{Implies} file in a machine
 architecture-specific directory, such as @file{m68k/Implies}.
 
+@item libm-ieee754
+This directory contains an implementation of a mathematical library
+usable on platforms which use @w{IEEE 754} conformant floating-point
+arithmetic.
+
+@item libm-i387
+This is a special case.  Ideally the code should be in
+@file{sysdeps/i386/fpu} but for various reasons it is kept aside.
+
 @item posix
 This directory contains implementations of things in the library in
 terms of @sc{POSIX.1} functions.  This includes some of the @sc{POSIX.1}
@@ -466,6 +458,9 @@ generated are @file{ioctls.h}, @file{errnos.h}, @file{sys/param.h}, and
 
 @c ??? This section is really short now.  Want to keep it? --roland
 
+@c It's not anymore true.  glibc 2.1 cannot be used with K&R compilers.
+@c --drepper
+
 Although the GNU C library implements the @w{ISO C} library facilities, you
 @emph{can} use the GNU C library with traditional, ``pre-ISO'' C
 compilers.  However, you need to be careful because the content and
diff --git a/posix/regex.c b/posix/regex.c
index 8c259d972a..0778bb85df 100644
--- a/posix/regex.c
+++ b/posix/regex.c
@@ -2171,14 +2171,14 @@ regex_compile (pattern, size, syntax, bufp)
                     for (;;)
                       {
                         PATFETCH (c);
-                        if (c == ':' || c == ']' || !isalpha (c) || p == pend
+                        if ((c == ':' && *p == ']') || p == pend
                             || c1 == CHAR_CLASS_MAX_LENGTH)
                           break;
                         str[c1++] = c;
                       }
                     str[c1] = '\0';
 
-                    /* If isn't a word bracketed by `[:' and:`]':
+                    /* If isn't a word bracketed by `[:' and `:]':
                        undo the ending character, the letters, and leave
                        the leading `:' and `[' (but set bits for them).  */
                     if (c == ':' && *p == ']')
diff --git a/posix/wordexp-test.c b/posix/wordexp-test.c
index d9ecadcaa4..9ee1ab79c9 100644
--- a/posix/wordexp-test.c
+++ b/posix/wordexp-test.c
@@ -138,6 +138,7 @@ struct test_case_struct
     { WRDE_BADCHAR, NULL, "close-brace}", 0, 0, { NULL, } },
     { WRDE_CMDSUB, NULL, "$(ls)", WRDE_NOCMD, 0, { NULL, } },
     { WRDE_BADVAL, NULL, "$var", WRDE_UNDEF, 0, { NULL, } },
+    { WRDE_BADVAL, NULL, "$9", WRDE_UNDEF, 0, { NULL, } },
     { WRDE_SYNTAX, NULL, "$[50+20))", 0, 0, { NULL, } },
     { WRDE_SYNTAX, NULL, "${%%noparam}", 0, 0, { NULL, } },
     { WRDE_SYNTAX, NULL, "${missing-brace", 0, 0, { NULL, } },
diff --git a/posix/wordexp.c b/posix/wordexp.c
index 64d5b3c5a5..265ddd8a87 100644
--- a/posix/wordexp.c
+++ b/posix/wordexp.c
@@ -1147,7 +1147,7 @@ parse_param (char **word, size_t *word_length, size_t *max_length,
       switch (words[*offset])
 	{
 	case '}':
-	  /* Evalute. */
+	  /* Evaluate. */
 	  goto envsubst;
 
 	case '#':
@@ -1295,36 +1295,23 @@ envsubst:
       /* Is it `$*' or `$@' (unquoted) ? */
       else if (*env == '*' || (*env == '@' && !quoted))
 	{
-	  size_t plist_len = 1;
+	  size_t plist_len = 0;
 	  int p;
+	  char *end;
 
 	  /* Build up value parameter by parameter (copy them) */
 	  for (p = 1; __libc_argv[p]; ++p)
+	    plist_len += strlen (__libc_argv[p]) + 1; /* for space */
+	  value = malloc (plist_len);
+	  if (value == NULL)
+	    goto no_space;
+	  end = value;
+	  *end = 0;
+	  for (p = 1; __libc_argv[p]; ++p)
 	    {
-	      char *old_pointer = value;
-	      size_t argv_len = strlen (__libc_argv[p]);
-	      size_t old_plist_len = plist_len;
-
-	      if (value)
-		value[plist_len - 1] = 0;
-
-	      plist_len += 1 + argv_len;
-
-	      /* First realloc will act as malloc because value is
-	       * initialised to NULL. */
-	      value = realloc (value, plist_len); /* ### re-work this */
-	      if (value == NULL)
-		{
-		  free (old_pointer);
-		  return WRDE_NOSPACE;
-		}
-
-	      memcpy (&value[old_plist_len - 1], __libc_argv[p], argv_len + 1);
-	      if (__libc_argv[p + 1])
-		{
-		  value[plist_len - 1] = '\0';
-		  value[plist_len - 2] = ' ';
-		}
+	      if (p > 1)
+		*end++ = ' ';
+	      end = __stpcpy (end, __libc_argv[p]);
 	    }
 
 	  free_value = 1;
@@ -1336,11 +1323,7 @@ envsubst:
 
 	  /* Each parameter is a separate word ("$@") */
 	  if (__libc_argc == 2)
-	    {
-	      value = __strdup (__libc_argv[1]);
-	      if (value == NULL)
-		goto no_space;
-	    }
+	    value = __libc_argv[1];
 	  else if (__libc_argc > 2)
 	    {
 	      int p;
@@ -1361,8 +1344,6 @@ envsubst:
 	      /* Start a new word with the last parameter. */
 	      *word = w_newword (word_length, max_length);
 	      value = __strdup (__libc_argv[p]);
-	      if (value == NULL)
-		goto no_space;
 	    }
 	  else
 	    {
@@ -1373,11 +1354,16 @@ envsubst:
 	}
     }
   else
+    value = getenv (env);
+
+  if (value == NULL && (flags & WRDE_UNDEF))
     {
-      value = getenv (env);
-      if (value == NULL && (flags & WRDE_UNDEF))
-	/* Variable not defined. */
-	return WRDE_BADVAL;
+      /* Variable not defined. */
+      if (pattern)
+	free (pattern);
+      if (env)
+	free (env);
+      return WRDE_BADVAL;
     }
 
   if (action != ACT_NONE)
@@ -1408,7 +1394,19 @@ envsubst:
 		    if (fnmatch (pattern, value, 0) != FNM_NOMATCH)
 		      {
 			*p = c;
-			value = p;
+			if (free_value)
+			  {
+			    char *newval = __strdup (p);
+			    if (newval == NULL)
+			      {
+				free (value);
+				goto no_space;
+			      }
+			    free (value);
+			    value = newval;
+			  }
+			else
+			  value = p;
 			break;
 		      }
 		    *p = c;
@@ -1424,7 +1422,19 @@ envsubst:
 		    if (fnmatch (pattern, value, 0) != FNM_NOMATCH)
 		      {
 			*p = c;
-			value = p;
+			if (free_value)
+			  {
+			    char *newval = __strdup (p);
+			    if (newval == NULL)
+			      {
+				free (value);
+				goto no_space;
+			      }
+			    free (value);
+			    value = newval;
+			  }
+			else
+			  value = p;
 			break;
 		      }
 		    *p = c;
@@ -1519,6 +1529,8 @@ envsubst:
 
 	  free (env);
 	  free (pattern);
+	  if (free_value)
+	    free (value);
 	  return error;
 
 	case ACT_NULL_SUBST:
@@ -1531,6 +1543,8 @@ envsubst:
 	      /* Substitute NULL */
 	      free (env);
 	      free (pattern);
+	      if (free_value)
+		free (value);
 	      return 0;
 	    }
 
@@ -1540,6 +1554,9 @@ envsubst:
 	    wordexp_t we;
 	    int i;
 
+	    if (free_value)
+	      free (value);
+
 	    if (quoted)
 	      {
 		/* No field-splitting is allowed, so imagine
@@ -1622,6 +1639,8 @@ envsubst:
 	  /* Substitute NULL */
 	  free (env);
 	  free (pattern);
+	  if (free_value)
+	    free (value);
 	  return 0;
 
 	case ACT_NULL_ASSIGN:
@@ -1634,6 +1653,8 @@ envsubst:
 	      /* Substitute NULL */
 	      free (env);
 	      free (pattern);
+	      if (free_value)
+		free (value);
 	      return 0;
 	    }
 
diff --git a/sysdeps/i386/bits/string.h b/sysdeps/i386/bits/string.h
index c424306bcd..bf7d408cdc 100644
--- a/sysdeps/i386/bits/string.h
+++ b/sysdeps/i386/bits/string.h
@@ -48,6 +48,7 @@
 __STRING_INLINE void *
 __memcpy_c (void *__dest, __const void *__src, size_t __n)
 {
+  unsigned long int __d0, __d1, __d2;
   switch (__n)
     {
     case 0:
@@ -108,9 +109,9 @@ __memcpy_c (void *__dest, __const void *__src, size_t __n)
     ("cld\n\t"								      \
      "rep; movsl"							      \
      x									      \
-     : /* no outputs */							      \
-     : "c" (__n / 4), "D" (__dest), "S" (__src)				      \
-     : "cx", "di", "si", "memory");
+     : "=&c" (__d0), "=&D" (__d1), "=&S" (__d2)				      \
+     : "0" (__n / 4), "1" (__dest), "2" (__src)				      \
+     : "memory");
 
   switch (__n % 4)
     {
@@ -137,24 +138,25 @@ __memcpy_c (void *__dest, __const void *__src, size_t __n)
 __STRING_INLINE void *
 memmove (void *__dest, __const void *__src, size_t __n)
 {
+  unsigned long int __d0, __d1, __d2;
   if (__dest < __src)
     __asm__ __volatile__
       ("cld\n\t"
        "rep\n\t"
        "movsb"
-       : /* no output */
-       : "c" (__n), "S" (__src),"D" (__dest)
-       : "cx", "si", "di");
+       : "=&c" (__d0), "=&S" (__d1), "=&D" (__d2)
+       : "0" (__n), "1" (__src), "2" (__dest)
+       : "memory");
   else
     __asm__ __volatile__
       ("std\n\t"
        "rep\n\t"
        "movsb\n\t"
        "cld"
-       : /* no output */
-       : "c" (__n), "S" (__n - 1 + (const char *) __src),
-	 "D" (__n - 1 + (char *) __dest)
-       : "cx", "si", "di", "memory");
+       : "=&c" (__d0), "=&S" (__d1), "=&D" (__d2)
+       : "0" (__n), "1" (__n - 1 + (const char *) __src),
+	 "2" (__n - 1 + (char *) __dest)
+       : "memory");
   return __dest;
 }
 
@@ -171,6 +173,7 @@ memmove (void *__dest, __const void *__src, size_t __n)
 __STRING_INLINE void *
 __memset_cc (void *__s, unsigned long int __pattern, size_t __n)
 {
+  unsigned long int __d0, __d1;
   switch (__n)
     {
     case 0:
@@ -194,9 +197,9 @@ __memset_cc (void *__s, unsigned long int __pattern, size_t __n)
     ("cld\n\t"								      \
      "rep; stosl"							      \
      x									      \
-     : /* no outputs */							      \
-     : "a" (__pattern),"c" (__n / 4), "D" (__s)				      \
-     : "cx", "di", "memory")
+     : "=&c" (__d0), "=&D" (__d1)					      \
+     : "a" (__pattern),"0" (__n / 4), "1" (__s)				      \
+     : "memory")
 
   switch (__n % 4)
     {
@@ -219,32 +222,34 @@ __memset_cc (void *__s, unsigned long int __pattern, size_t __n)
 __STRING_INLINE void *
 __memset_cg (void *__s, unsigned long __c, size_t __n)
 {
+  unsigned long int __d0, __d1;
   __asm__ __volatile__
     ("cld\n\t"
      "rep; stosl\n\t"
-     "testb	$2,%b1\n\t"
+     "testb	$2,%b3\n\t"
      "je	1f\n\t"
      "stosw\n"
      "1:\n\t"
-     "testb	$1,%b1\n\t"
+     "testb	$1,%b3\n\t"
      "je	2f\n\t"
      "stosb\n"
      "2:"
-     : /* no output */
-     : "a" (__c), "q" (__n), "c" (__n / 4), "D" (__s)
-     : "cx", "di", "memory");
+     : "=&c" (__d0), "=&D" (__d1)
+     : "a" (__c), "q" (__n), "0" (__n / 4), "1" (__s)
+     : "memory");
   return __s;
 }
 
 __STRING_INLINE void *
 __memset_gg (void *__s, char __c, size_t __n)
 {
+  unsigned long int __d0, __d1;
   __asm__ __volatile__
     ("cld\n\t"
      "rep; stosb"
-     : /* no output */
-     : "a" (__c),"D" (__s), "c" (__n)
-     : "cx", "di", "memory");
+     : "=&D" (__d0), "=&c" (__d1)
+     : "a" (__c), "0" (__s), "1" (__n)
+     : "memory");
   return __s;
 }
 
@@ -256,6 +261,7 @@ __memset_gg (void *__s, char __c, size_t __n)
 __STRING_INLINE void *
 memchr (__const void *__s, int __c, size_t __n)
 {
+  unsigned long int __d0;
   register void *__res;
   if (count == 0)
     return NULL;
@@ -266,9 +272,8 @@ memchr (__const void *__s, int __c, size_t __n)
      "je	1f\n\t"
      "movl	$1,%0\n"
      "1:"
-     : "=D" (__res)
-     : "a" (__c), "0" (__s), "c" (__n)
-     : "cx");
+     : "=D" (__res), "=&c" (__d0)
+     : "a" (__c), "0" (__s), "1" (__n));
   return __res - 1;
 }
 
@@ -278,14 +283,15 @@ memchr (__const void *__s, int __c, size_t __n)
 __STRING_INLINE size_t
 strlen (__const char *__str)
 {
+  unsigned long int __d0;
   register size_t __res;
   __asm__ __volatile__
     ("cld\n\t"
      "repne; scasb\n\t"
      "notl %0"
-     : "=c" (__res)
-     : "D" (__str), "a" (0), "0" (0xffffffff)
-     : "di", "cc");
+     : "=c" (__res), "=&D" (__d0)
+     : "1" (__str), "a" (0), "0" (0xffffffff)
+     : "cc");
   return __res - 1;
 }
 
@@ -295,6 +301,7 @@ strlen (__const char *__str)
 __STRING_INLINE char *
 strcpy (char *__dest, __const char *__src)
 {
+  unsigned long int __d0, __d1;
   __asm__ __volatile__
     ("cld\n"
      "1:\n\t"
@@ -302,9 +309,9 @@ strcpy (char *__dest, __const char *__src)
      "stosb\n\t"
      "testb	%%al,%%al\n\t"
      "jne	1b"
-     : /* no output */
-     : "S" (__src), "D" (__dest)
-     : "si", "di", "ax", "memory", "cc");
+     : "=&S" (__d0), "=&D" (__d1)
+     : "0" (__src), "1" (__dest)
+     : "ax", "memory", "cc");
   return __dest;
 }
 
@@ -314,6 +321,7 @@ strcpy (char *__dest, __const char *__src)
 __STRING_INLINE char *
 strncpy (char *__dest, __const char *__src, size_t __n)
 {
+  unsigned long int __d0, __d1, __d2;
   __asm__ __volatile__
     ("cld\n"
      "1:\n\t"
@@ -325,9 +333,9 @@ strncpy (char *__dest, __const char *__src, size_t __n)
      "jne	1b\n\t"
      "rep; stosb\n"
      "2:"
-     : /* no output */
-     : "S" (__src), "D" (__dest), "c" (__n)
-     : "si", "di", "ax", "cx", "memory", "cc");
+     : "=&S" (__d0), "=&D" (__d1), "=&c" (__d2)
+     : "0" (__src), "1" (__dest), "2" (__n)
+     : "ax", "memory", "cc");
   return __dest;
 }
 
@@ -337,6 +345,7 @@ strncpy (char *__dest, __const char *__src, size_t __n)
 __STRING_INLINE char *
 strcat (char *__dest, __const char *__src)
 {
+  unsigned long int __d0, __d1, __d2, __d3;
   __asm__ __volatile__
     ("cld\n\t"
      "repne; scasb\n\t"
@@ -346,9 +355,9 @@ strcat (char *__dest, __const char *__src)
      "stosb\n\t"
      "testb	%%al,%%al\n\t"
      "jne	1b"
-     : /* no output */
-     : "S" (__src), "D" (__dest), "a" (0), "c" (0xffffffff)
-     : "si", "di", "ax", "cx", "memory", "cc");
+     : "=&S" (__d0), "=&D" (__d1), "=&c" (__d2), "=&a" (__d3)
+     : "0" (__src), "1" (__dest), "2" (0xffffffff), "3" (0)
+     : "memory", "cc");
   return __dest;
 }
 
@@ -358,11 +367,12 @@ strcat (char *__dest, __const char *__src)
 __STRING_INLINE char *
 strncat (char *__dest, __const char *__src, size_t __n)
 {
+  unsigned long int __d0, __d1, __d2, __d3;
   __asm__ __volatile__
     ("cld\n\t"
      "repne; scasb\n\t"
      "decl	%1\n\t"
-     "movl	%4,%3\n"
+     "movl	%5,%3\n"
      "1:\n\t"
      "decl	%3\n\t"
      "js	2f\n\t"
@@ -373,9 +383,9 @@ strncat (char *__dest, __const char *__src, size_t __n)
      "2:\n\t"
      "xorl	%2,%2\n\t"
      "stosb"
-     : /* no output */
-     : "S" (__src), "D" (__dest), "a" (0), "c" (0xffffffff), "g" (__n)
-     : "si", "di", "ax", "cx", "memory", "cc");
+     : "=&S" (__d0), "=&D" (__d1), "=&c" (__d2), "=&a" (__d3)
+     : "g" (__n), "0" (__src), "1" (__dest), "2" (0xffffffff), "3" (0)
+     : "memory", "cc");
   return __dest;
 }
 
@@ -385,6 +395,7 @@ strncat (char *__dest, __const char *__src, size_t __n)
 __STRING_INLINE int
 strcmp (__const char *__s1, __const char *__s2)
 {
+  unsigned long int __d0, __d1;
   register int __res;
   __asm__ __volatile__
     ("cld\n"
@@ -400,9 +411,9 @@ strcmp (__const char *__s1, __const char *__s2)
      "sbbl	%%eax,%%eax\n\t"
      "orb	$1,%%eax\n"
      "3:"
-     : "=a" (__res)
-     : "S" (__s1), "D" (__s2)
-     : "si", "di", "cc");
+     : "=a" (__res), "=&S" (__d0), "=&D" (__d1)
+     : "1" (__s1), "2" (__s2)
+     : "cc");
   return __res;
 }
 
@@ -412,6 +423,7 @@ strcmp (__const char *__s1, __const char *__s2)
 __STRING_INLINE int
 strncmp (__const char *__s1, __const char *__s2, size_t __n)
 {
+  unsigned long int __d0, __d1, __d2;
   register int __res;
   __asm__ __volatile__
     ("cld\n"
@@ -430,9 +442,9 @@ strncmp (__const char *__s1, __const char *__s2, size_t __n)
      "sbbl	%%eax,%%eax\n\t"
      "orb	$1,%%al\n"
      "4:"
-     : "=a" (__res)
-     : "S" (__s1), "D" (__s2), "c" (__n)
-     : "si", "di", "cx", "cc");
+     : "=a" (__res), "=&S" (__d0), "=&D" (__d1), "=&c" (__d2)
+     : "1" (__s1), "2" (__s2), "3" (__n)
+     : "cc");
   return __res;
 }
 
@@ -447,6 +459,7 @@ strncmp (__const char *__s1, __const char *__s2, size_t __n)
 __STRING_INLINE char *
 __strchr_g (__const char *__s, int __c)
 {
+  unsigned long int __d0;
   register char *__res;
   __asm__ __volatile__
     ("cld\n\t"
@@ -460,15 +473,16 @@ __strchr_g (__const char *__s, int __c)
      "movl	$1,%1\n"
      "2:\n\t"
      "movl	%1,%0"
-     : "=a" (__res)
-     : "S" (__s), "0" (__c)
-     : "si", "cc");
+     : "=a" (__res), "=&S" (__d0)
+     : "0" (__c), "1" (__s)
+     : "cc");
   return __res - 1;
 }
 
 __STRING_INLINE char *
 __strchr_c (__const char *__s, int __c)
 {
+  unsigned long int __d0;
   register char *__res;
   __asm__ __volatile__
     ("cld\n\t"
@@ -481,9 +495,9 @@ __strchr_c (__const char *__s, int __c)
      "movl	$1,%1\n"
      "2:\n\t"
      "movl	%1,%0"
-     : "=a" (__res)
-     : "S" (__s), "0" (__c)
-     : "si", "cc");
+     : "=a" (__res), "=&S" (__d0)
+     : "0" (__c), "1" (__s)
+     : "cc");
   return __res - 1;
 }
 
@@ -495,6 +509,7 @@ __strchr_c (__const char *__s, int __c)
 __STRING_INLINE size_t
 strcspn (__const char *__s, __const char *__reject)
 {
+  unsigned long int __d0, __d1, __d2;
   register char *__res;
   __asm__ __volatile__
     ("pushl	%%ebx\n\t"
@@ -514,19 +529,20 @@ strcspn (__const char *__s, __const char *__reject)
      "jne	1b\n"
      "2:\n\t"
      "popl	%%ebx"
-     : "=S" (__res)
-     : "a" (0), "c" (0xffffffff), "0" (__s), "r" (__reject)
-     : "ax", "cx", "di", "cc");
+     : "=&S" (__res), "=&a" (__d0), "=&c" (__d1), "=&D" (__d2)
+     : "r" (__reject), "1" (0), "2" (0xffffffff), "3" (__s),
+     : "cc");
   return (__res - 1) - __s;
 }
 #else
 __STRING_INLINE size_t
 strcspn (__const char *__s, __const char *__reject)
 {
+  unsigned long int __d0, __d1, __d2, __d3;
   register char *__res;
   __asm__ __volatile__
     ("cld\n\t"
-     "movl	%4,%%edi\n\t"
+     "movl	%5,%%edi\n\t"
      "repne; scasb\n\t"
      "notl	%%ecx\n\t"
      "decl	%%ecx\n\t"
@@ -535,14 +551,14 @@ strcspn (__const char *__s, __const char *__reject)
      "lodsb\n\t"
      "testb	%%al,%%al\n\t"
      "je	2f\n\t"
-     "movl	%4,%%edi\n\t"
+     "movl	%5,%%edi\n\t"
      "movl	%%edx,%%ecx\n\t"
      "repne; scasb\n\t"
      "jne	1b\n"
      "2:"
-     : "=S" (__res)
-     : "a" (0), "c" (0xffffffff),"0" (__s), "g" (__reject)
-     : "ax", "cx", "dx", "di", "cc");
+     : "=&S" (__res), "=&a" (__d0), "=&c" (__d1), "=&d" (__d2), "=&D" (__d3)
+     : "g" (__reject), "0" (__s), "1" (0), "2" (0xffffffff)
+     : "cc");
   return (__res - 1) - __s;
 }
 #endif
@@ -555,6 +571,7 @@ strcspn (__const char *__s, __const char *__reject)
 __STRING_INLINE size_t
 strspn (__const char *__s, __const char *__accept)
 {
+  unsigned long int __d0, __d1, __d2;
   register char *__res;
   __asm__ __volatile__
     ("pushl	%%ebx\n\t"
@@ -574,19 +591,20 @@ strspn (__const char *__s, __const char *__accept)
      "je	1b\n"
      "2:\n\t"
      "popl	%%ebx"
-     : "=S" (__res)
-     : "a" (0), "c" (0xffffffff), "0" (__s), "r" (__accept)
-     : "ax", "cx", "di", "cc");
+     : "=&S" (__res), "=&a" (__d0), "=&c" (__d1), "=&D" (__d2)
+     : "r" (__accept), "0" (__s), "1" (0), "2" (0xffffffff)
+     : "cc");
   return (__res - 1) - __s;
 }
 #else
 __STRING_INLINE size_t
 strspn (__const char *__s, __const char *__accept)
 {
+  unsigned long int __d0, __d1, __d2, __d3;
   register char *__res;
   __asm__ __volatile__
     ("cld\n\t"
-     "movl	%4,%%edi\n\t"
+     "movl	%5,%%edi\n\t"
      "repne; scasb\n\t"
      "notl	%%ecx\n\t"
      "decl	%%ecx\n\t"
@@ -595,14 +613,14 @@ strspn (__const char *__s, __const char *__accept)
      "lodsb\n\t"
      "testb	%%al,%%al\n\t"
      "je	2f\n\t"
-     "movl	%4,%%edi\n\t"
+     "movl	%5,%%edi\n\t"
      "movl	%%edx,%%ecx\n\t"
      "repne; scasb\n\t"
      "je	1b\n"
      "2:"
-     : "=S" (__res)
-     : "a" (0), "c" (0xffffffff), "0" (__s), "g" (__accept)
-     : "ax", "cx", "dx", "di", "cc");
+     : "=&S" (__res), "=&a" (__d0), "=&c" (__d1), "=&d" (__d2), "=&D" (__d3)
+     : "g" (__accept), "0" (__s), "a" (0), "c" (0xffffffff)
+     : "cc");
   return (__res - 1) - __s;
 }
 #endif
@@ -614,6 +632,7 @@ strspn (__const char *__s, __const char *__accept)
 __STRING_INLINE char *
 strpbrk (__const char *__s, __const char *__accept)
 {
+  unsigned long int __d0, __d1, __d2;
   register char *__res;
   __asm__ __volatile__
     ("pushl	%%ebx\n\t"
@@ -637,15 +656,16 @@ strpbrk (__const char *__s, __const char *__accept)
      "xorl	%0,%0\n"
      "3:\n\t"
      "popl	%%ebx"
-     : "=S" (__res)
-     : "a" (0), "c" (0xffffffff), "0" (__s), "r" (__accept)
-     : "ax", "cx", "di", "cc");
+     : "=&S" (__res), "=&a" (__d0), "=&c" (__d1), "=&D" (__d2)
+     : "r" (__accept), "0" (__s), "1" (0), "2" (0xffffffff)
+     : "cc");
   return __res;
 }
 #else
 __STRING_INLINE char *
 strpbrk (__const char *__s, __const char *__accept)
 {
+  unsigned long int __d0, __d1, __d2, __d3;
   register char *__res;
   __asm__ __volatile__
     ("cld\n\t"
@@ -667,9 +687,9 @@ strpbrk (__const char *__s, __const char *__accept)
      "2:\n\t"
      "xorl	%0,%0\n"
      "3:"
-     : "=S" (__res)
-     : "a" (0), "c" (0xffffffff), "0" (__s), "g" (__accept)
-     : "ax", "cx", "dx", "di", "cc");
+     : "=&S" (__res), "=&a" (__d0), "=&c" (__d1), "=&d" (__d2), "=&D" (__d3)
+     : "g" (__accept), "0" (__s), "1" (0), "2" (0xffffffff)
+     : "cc");
   return __res;
 }
 #endif
@@ -681,6 +701,7 @@ strpbrk (__const char *__s, __const char *__accept)
 __STRING_INLINE char *
 strstr (__const char *__haystack, __const char *__needle)
 {
+  unsigned long int __d0, __d1, __d2, __d3;
   register char *__res;
   __asm__ __volatile__
     ("pushl	%%ebx\n\t"
@@ -703,25 +724,26 @@ strstr (__const char *__haystack, __const char *__needle)
      "xorl	%%eax,%%eax\n\t"
      "2:\n\t"
      "popl	%%ebx"
-     : "=a" (__res)
-     : "0" (0), "c" (0xffffffff), "S" (__haystack), "r" (__needle)
-     : "cx", "di", "si", "cc");
+     : "=&a" (__res), "=&c" (__d0), "=&S" (__d1), "=&D" (__d2)
+     : "r" (__needle), "0" (0), "1" (0xffffffff), "2" (__haystack)
+     : "cc");
   return __res;
 }
 #else
 __STRING_INLINE char *
 strstr (__const char *__haystack, __const char *__needle)
 {
+  unsigned long int __d0, __d1, __d2, __d3;
   register char *__res;
   __asm__ __volatile__
     ("cld\n\t" \
-     "movl	%4,%%edi\n\t"
+     "movl	%5,%%edi\n\t"
      "repne; scasb\n\t"
      "notl	%%ecx\n\t"
      "decl	%%ecx\n\t"	/* NOTE! This also sets Z if searchstring='' */
      "movl	%%ecx,%%edx\n"
      "1:\n\t"
-     "movl	%4,%%edi\n\t"
+     "movl	%5,%%edi\n\t"
      "movl	%%esi,%%eax\n\t"
      "movl	%%edx,%%ecx\n\t"
      "repe; cmpsb\n\t"
@@ -732,9 +754,9 @@ strstr (__const char *__haystack, __const char *__needle)
      "jne	1b\n\t"
      "xorl	%%eax,%%eax\n\t"
      "2:"
-     : "=a" (__res)
-     : "0" (0), "c" (0xffffffff), "S" (__haystack), "g" (__needle)
-     : "cx", "dx", "di", "si", "cc");
+     : "=&a" (__res), "=&c" (__d0), "=&S" (__d1), "=&d" (__d2), "=&D" (__d3)
+     : "g" (__needle), "0" (0), "1" (0xffffffff), "2" (__haystack)
+     : "cc");
   return __res;
 }
 #endif
diff --git a/sysdeps/unix/sysv/linux/adjtime.c b/sysdeps/unix/sysv/linux/adjtime.c
index 7e8d90b71e..c294ecd6b0 100644
--- a/sysdeps/unix/sysv/linux/adjtime.c
+++ b/sysdeps/unix/sysv/linux/adjtime.c
@@ -41,6 +41,7 @@
 #endif
 
 #ifndef ADJTIMEX
+#define NO_LOCAL_ADJTIME
 #define ADJTIMEX(x) __adjtimex (x)
 #endif
 
@@ -91,6 +92,6 @@ ADJTIME (itv, otv)
   return 0;
 }
 
-#ifndef ADJTIME
+#ifdef NO_LOCAL_ADJTIME
 weak_alias (__adjtime, adjtime)
 #endif