diff options
-rw-r--r-- | ChangeLog | 34 | ||||
-rw-r--r-- | FAQ | 195 | ||||
-rw-r--r-- | Makeconfig | 15 | ||||
-rw-r--r-- | Makefile | 3 | ||||
-rw-r--r-- | aclocal.m4 | 11 | ||||
-rw-r--r-- | bits/byteswap.h | 6 | ||||
-rwxr-xr-x | configure | 229 | ||||
-rw-r--r-- | configure.in | 2 | ||||
-rw-r--r-- | inet/gethstbyad_r.c | 9 | ||||
-rw-r--r-- | inet/gethstbynm_r.c | 6 | ||||
-rw-r--r-- | math/libm-test.c | 23 | ||||
-rw-r--r-- | nss/getXXbyYY_r.c | 10 | ||||
-rw-r--r-- | resolv/Makefile | 4 | ||||
-rw-r--r-- | resolv/res_hconf.c | 232 | ||||
-rw-r--r-- | resolv/res_hconf.h | 30 | ||||
-rw-r--r-- | sysdeps/generic/bits/byteswap.h | 6 | ||||
-rwxr-xr-x | sysdeps/generic/configure | 2 | ||||
-rwxr-xr-x | sysdeps/unix/common/configure | 6 | ||||
-rwxr-xr-x | sysdeps/unix/configure | 2 |
19 files changed, 447 insertions, 378 deletions
diff --git a/ChangeLog b/ChangeLog index feea31d2d0..8ea86268c4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,37 @@ +1998-11-20 Ulrich Drepper <drepper@cygnus.com> + + * aclocal.m4 (LIBC_PROG_BINUTILS): Also add AR and RANLIB using the + same method. + * configure.in: Don't define AR and RANLIB here. + + * inet/gethstbyad_r.c: Define NEED__RES_HCONV and POSTPROCESS for + host name res_hconf code. + * inet/gethstbynm_r.c: Likewise. + * nss/getXXbyYY_r.c: Include resolv/res_hconf.h if NEED__RES_HCONF + is defined. Call res_hconf_init if necessary. If POSTPROCESS is + defined execute the code. + * resolv/Makefile (routines): Add res_hconf. + (headers): Add res_hconf.h. + * resolv/res_hconf.c: Pretty print. + * resolv/res_hconf.h: Likewise. + +1998-11-20 Ulrich Drepper <drepper@cygnus.com> + + * sysdeps/generic/bits/byteswap.h: Fix typos in non-GCC + definitions. Reported by Scott Bambrough <scottb@corelcomputer.com>. + +1998-11-20 1998 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> + + * math/libm-test.c: Raise some epsilons a bit. + +1998-11-20 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> + + * Makeconfig ($(common-objpfx)sysd-sorted): Fix portability problems. + +1998-11-20 Ulrich Drepper <drepper@cygnus.com> + + * Makefile (distribute): Add scripts/gen-sorted.awk. + 1998-11-19 Ulrich Drepper <drepper@cygnus.com> * posix/regex.c (regex_compile): Handle extra long class names diff --git a/FAQ b/FAQ index 73385871e8..6491b389ad 100644 --- a/FAQ +++ b/FAQ @@ -22,9 +22,9 @@ please let me know. 1.2. What compiler do I need to build GNU libc? 1.3. When I try to compile glibc I get only error messages. What's wrong? -1.4. Do I need a special linker or archiver? +1.4. Do I need a special linker or assembler? 1.5. Which compiler should I use for powerpc? -1.6. Do I need some more things to compile GNU C Library? +1.6. Do I need some more things to compile the GNU C Library? 1.7. What version of the Linux kernel headers should be used? 1.8. The compiler hangs while building iconvdata modules. What's wrong? @@ -58,38 +58,41 @@ please let me know. functions `stat', `lstat', `fstat', and `mknod' and while linking on my Linux system I get error messages. How is this supposed to work? -2.8. How can I compile gcc 2.7.2.1 from the gcc source code using +2.8. When I run an executable on one system which I compiled on + another, I get dynamic linker errors. Both systems have the same + version of glibc installed. What's wrong? +2.9. How can I compile gcc 2.7.2.1 from the gcc source code using glibc 2.x? -2.9. The `gencat' utility cannot process the catalog sources which +2.10. The `gencat' utility cannot process the catalog sources which were used on my Linux libc5 based system. Why? -2.10. Programs using libc have their messages translated, but other +2.11. Programs using libc have their messages translated, but other behavior is not localized (e.g. collating order); why? -2.11. I have set up /etc/nis.conf, and the Linux libc 5 with NYS +2.12. I have set up /etc/nis.conf, and the Linux libc 5 with NYS works great. But the glibc NIS+ doesn't seem to work. -2.12. I have killed ypbind to stop using NIS, but glibc +2.13. I have killed ypbind to stop using NIS, but glibc continues using NIS. -2.13. Under Linux/Alpha, I always get "do_ypcall: clnt_call: +2.14. Under Linux/Alpha, I always get "do_ypcall: clnt_call: RPC: Unable to receive; errno = Connection refused" when using NIS. -2.14. After installing glibc name resolving doesn't work properly. -2.15. How do I create the databases for NSS? -2.16. I have /usr/include/net and /usr/include/scsi as symlinks +2.15. After installing glibc name resolving doesn't work properly. +2.16. How do I create the databases for NSS? +2.17. I have /usr/include/net and /usr/include/scsi as symlinks into my Linux source tree. Is that wrong? -2.17. Programs like `logname', `top', `uptime' `users', `w' and +2.18. Programs like `logname', `top', `uptime' `users', `w' and `who', show incorrect information about the (number of) users on my system. Why? -2.18. After upgrading to glibc 2.1 with symbol versioning I get +2.19. After upgrading to glibc 2.1 with symbol versioning I get errors about undefined symbols. What went wrong? -2.19. When I start the program XXX after upgrading the library +2.20. When I start the program XXX after upgrading the library I get XXX: Symbol `_sys_errlist' has different size in shared object, consider re-linking Why? What should I do? -2.20. What do I need for C++ development? -2.21. Even statically linked programs need some shared libraries +2.21. What do I need for C++ development? +2.22. Even statically linked programs need some shared libraries which is not acceptable for me. What can I do? -2.22. I just upgraded my Linux system to glibc and now I get +2.23. I just upgraded my Linux system to glibc and now I get errors whenever I try to link any program. -2.23. When I use nscd the machine freezes. +2.24. When I use nscd the machine freezes. 3. Source and binary incompatibilities, and what to do about them @@ -188,6 +191,9 @@ may not have all the features GNU libc requires. The current releases of egcs (1.0.3 and 1.1) and GNU CC (2.8.1) should work with the GNU C library (for powerpc see question question 1.5). +{ZW} You may have problems if you try to mix code compiled with +EGCS and with GCC 2.8.1. See question 2.8 for details. + 1.3. When I try to compile glibc I get only error messages. What's wrong? @@ -195,32 +201,27 @@ egcs (1.0.3 and 1.1) and GNU CC (2.8.1) should work with the GNU C library {UD} You definitely need GNU make to translate GNU libc. No other make program has the needed functionality. -We recommend version GNU make version 3.75. Versions 3.76 and 3.76.1 have -bugs which appear when building big projects like GNU libc. Versions before -3.74 have bugs and/or are missing features. - - -1.4. Do I need a special linker or archiver? +We recommend version GNU make version 3.75 or 3.77. Versions before 3.75 +have bugs and/or are missing features. Version 3.76 has bugs which +appear when building big projects like GNU libc. 3.76.1 appears to work but +some people have reported problems. -{UD} You may be able to use your system linker, but GNU libc works best with -GNU binutils. -On systems where the native linker does not support weak symbols you will -not get a fully ISO C compliant C library. Generally speaking you should -use the GNU binutils if they provide at least the same functionality as your -system's tools. +1.4. Do I need a special linker or assembler? -Always get the newest release of GNU binutils available. Older releases are -known to have bugs that prevent a successful compilation. +{ZW} If you want a shared library, you need a linker and assembler that +understand all the features of ELF, including weak and versioned symbols. +The static library can be compiled with less featureful tools, but lacks key +features such as NSS. -{AJ} Please don't use binutils 2.7. That release contains some bugs which -might make it necessary that you've got to recompile all your glibc2 -binaries when upgrading the GNU C library. +For Linux or Hurd, you want binutils 2.8.1.0.23, 2.9.1, or 2.9.1.0.15 or +higher. These are the only versions we've tested and found reliable. Other +versions after 2.8.1.0.23 may work but we don't recommend them, especially +not when C++ is involved. Earlier versions do not work at all. -{ZW} As of release 2.1 a linker supporting symbol versions is required. For -Linux, get binutils-2.8.1.0.23 or later. Other systems may have native -linker support, but it's moot right now, because glibc has not been ported -to them. +Other operating systems may come with system tools that have all the +necessary features, but this is moot because glibc hasn't been ported to +them. 1.5. Which compiler should I use for powerpc? @@ -237,7 +238,7 @@ variables. There is a temporary patch at: Later versions of egcs may fix this problem. -1.6. Do I need some more things to compile GNU C Library? +1.6. Do I need some more things to compile the GNU C Library? {UD} Yes, there are some more :-). @@ -247,15 +248,15 @@ Later versions of egcs may fix this problem. site. (We distribute compiled message catalogs, but they may not be updated in patches.) -* Some files depend on special tools. E.g., files ending in .gperf - need a `gperf' program. The GNU version (part of libg++) is known - to work while some vendor versions do not. +* Some files are built with special tools. E.g., files ending in .gperf + need a `gperf' program. The GNU version (now available in a separate + package, formerly only as part of libg++) is known to work while some + vendor versions do not. 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 - be created). +* Perl 5 is needed if you wish to test an installation of GNU libc + as the primary C library. * When compiling for Linux, the header files of the Linux kernel must be available to the compiler as <linux/*.h> and <asm/*.h>. @@ -298,7 +299,7 @@ recompile libc if you ever upgrade to kernel 2.1 or 2.2. To tell libc which headers to use, give configure the --with-headers switch (e.g. --with-headers=/usr/src/linux-2.1.107/include). -Note that you must configure the 2.1 kernel if you do this; otherwise libc +Note that you must configure the 2.1 kernel if you do this, otherwise libc will be unable to find <linux/version.h>. Just copy .config from your 2.0 kernel sources to the 2.1 tree, do `make oldconfig', and say no to all the new options. @@ -307,8 +308,9 @@ new options. 1.8. The compiler hangs while building iconvdata modules. What's wrong? -{ZW} This is a problem of older GCC. Initialization of large static arrays -is very slow. The compiler will eventually finish; give it time. +{ZW} This is a problem with old versions of GCC. Initialization of large +static arrays is very slow. The compiler will eventually finish; give it +time. The problem is fixed in egcs 1.1 but not in earlier releases. @@ -675,7 +677,36 @@ not a symlink to libc.so.6. It should look something like this: GROUP ( libc.so.6 libc_nonshared.a ) -2.8. How can I compile gcc 2.7.2.1 from the gcc source code using +2.8. When I run an executable on one system which I compiled on + another, I get dynamic linker errors. Both systems have the same + version of glibc installed. What's wrong? + +{ZW} Glibc on one of these systems was compiled with gcc 2.7 or 2.8, the +other with egcs (any version). Egcs has functions in its internal +`libgcc.a' to support exception handling with C++. They are linked into +any program or dynamic library compiled with egcs, whether it needs them or +not. Dynamic libraries then turn around and export those functions again +unless special steps are taken to prevent them. + +When you link your program, it resolves its references to the exception +functions to the ones exported accidentally by libc.so. That works fine as +long as libc has those functions. On the other system, libc doesn't have +those functions because it was compiled by gcc 2.8, and you get undefined +symbol errors. The symbols in question are named things like +`__register_frame_info'. + +For glibc 2.0, the workaround is to not compile libc with egcs. We've also +incorporated a patch which should prevent the EH functions sneaking into +libc. It doesn't matter what compiler you use to compile your program. + +For glibc 2.1, we've chosen to do it the other way around: libc.so +explicitly provides the EH functions. This is to prevent other shared +libraries from doing it. You must therefore compile glibc 2.1 with EGCS +unless you don't care about ever importing binaries from other systems. +Again, it doesn't matter what compiler you use for your programs. + + +2.9. How can I compile gcc 2.7.2.1 from the gcc source code using glibc 2.x? {AJ} There's only correct support for glibc 2.0.x in gcc 2.7.2.3 or later. @@ -683,7 +714,7 @@ But you should get at least gcc 2.8.1 or egcs 1.0.2 (or later versions) instead. -2.9. The `gencat' utility cannot process the catalog sources which +2.10. The `gencat' utility cannot process the catalog sources which were used on my Linux libc5 based system. Why? {UD} The `gencat' utility provided with glibc complies to the XPG standard. @@ -718,7 +749,7 @@ files to the XPG4 form: ----------------------------------------------------------------------- -2.10. Programs using libc have their messages translated, but other +2.11. Programs using libc have their messages translated, but other behavior is not localized (e.g. collating order); why? {ZW} Translated messages are automatically installed, but the locale @@ -731,7 +762,7 @@ set up the French Canadian locale, simply issue the command Please see localedata/README in the source tree for further details. -2.11. I have set up /etc/nis.conf, and the Linux libc 5 with NYS +2.12. I have set up /etc/nis.conf, and the Linux libc 5 with NYS works great. But the glibc NIS+ doesn't seem to work. {TK} The glibc NIS+ implementation uses a /var/nis/NIS_COLD_START file for @@ -744,7 +775,7 @@ package; available at http://www-vt.uni-paderborn.de/~kukuk/linux/nisplus.html -2.12. I have killed ypbind to stop using NIS, but glibc +2.13. I have killed ypbind to stop using NIS, but glibc continues using NIS. {TK} For faster NIS lookups, glibc uses the /var/yp/binding/ files from @@ -755,7 +786,7 @@ Until ypbind 3.4 is released, you can find a patch at ftp://ftp.kernel.org/pub/linux/utils/net/NIS/ypbind-3.3-glibc4.diff.gz -2.13. Under Linux/Alpha, I always get "do_ypcall: clnt_call: +2.14. Under Linux/Alpha, I always get "do_ypcall: clnt_call: RPC: Unable to receive; errno = Connection refused" when using NIS. {TK} You need a ypbind version which is 64bit clean. Some versions are not @@ -764,14 +795,14 @@ you need the patch from ftp.kernel.org (See the previous question). I don't know about other versions. -2.14. After installing glibc name resolving doesn't work properly. +2.15. After installing glibc name resolving doesn't work properly. {AJ} You probably should read the manual section describing nsswitch.conf (just type `info libc "NSS Configuration File"'). The NSS configuration file is usually the culprit. -2.15. How do I create the databases for NSS? +2.16. How do I create the databases for NSS? {AJ} If you have an entry "db" in /etc/nsswitch.conf you should also create the database files. The glibc sources contain a Makefile which does the @@ -782,7 +813,7 @@ database. Currently passwd, group, ethers, protocol, rpc, services shadow and netgroup are implemented. -2.16. I have /usr/include/net and /usr/include/scsi as symlinks +2.17. I have /usr/include/net and /usr/include/scsi as symlinks into my Linux source tree. Is that wrong? {PB} This was necessary for libc5, but is not correct when using glibc. @@ -793,14 +824,14 @@ in place before you install glibc. However, /usr/include/asm and /usr/include/linux should remain as they were. -2.17. Programs like `logname', `top', `uptime' `users', `w' and +2.18. Programs like `logname', `top', `uptime' `users', `w' and `who', show incorrect information about the (number of) users on my system. Why? {MK} See question 3.2. -2.18. After upgrading to glibc 2.1 with symbol versioning I get +2.19. After upgrading to glibc 2.1 with symbol versioning I get errors about undefined symbols. What went wrong? {AJ} The problem is caused either by wrong program code or tools. In the @@ -814,7 +845,7 @@ price you might have to pay once for quite a number of advantages with symbol versioning. -2.19. When I start the program XXX after upgrading the library +2.20. When I start the program XXX after upgrading the library I get XXX: Symbol `_sys_errlist' has different size in shared object, consider re-linking @@ -836,26 +867,26 @@ be possible that a symbol changed size when that should not have happened. So in case of doubt report such a warning message as a problem. -2.20. What do I need for C++ development? +2.21. What do I need for C++ development? + +{HJ,AJ} You need either egcs 1.1 which comes directly with libstdc++ or +gcc-2.8.1 together with libstdc++ 2.8.1.1. egcs 1.1 has the better C++ +support and works directly with glibc 2.1. If you use gcc-2.8.1 with +libstdc++ 2.8.1.1, you need to modify libstdc++ a bit. A patch is available +as: + ftp://alpha.gnu.org/gnu/libstdc++-2.8.1.1-glibc2.1-diff.gz -{HJ,AJ} You need either egcs 1.1 which comes directly with libstdc++ or -gcc-2.8.1 together with libstdc++ 2.8.1.1. egcs 1.1 has the better C++ -support and works directly with glibc 2.1. If you use gcc-2.8.1 with -libstdc++ 2.8.1.1, you need to modify libstdc++ a bit. A patch is available -as: - ftp://alpha.gnu.org/gnu/libstdc++-2.8.1.1-glibc2.1-diff.gz - -Please note that libg++ 2.7.2 (and the Linux Versions 2.7.2.x) doesn't work -very well with the GNU C library due to vtable thunks. If you're upgrading -from glibc 2.0.x to 2.1 you have to recompile libstdc++ since the library -compiled for 2.0 is not compatible due to the new Large File Support (LFS) -in version 2.1. +Please note that libg++ 2.7.2 (and the Linux Versions 2.7.2.x) doesn't work +very well with the GNU C library due to vtable thunks. If you're upgrading +from glibc 2.0.x to 2.1 you have to recompile libstdc++ since the library +compiled for 2.0 is not compatible due to the new Large File Support (LFS) +in version 2.1. {UD} But since in the case of a shared libstdc++ the version numbers should be different existing programs will continue to work. -2.21. Even statically linked programs need some shared libraries +2.22. Even statically linked programs need some shared libraries which is not acceptable for me. What can I do? {AJ} NSS (for details just type `info libc "Name Service Switch"') won't @@ -882,7 +913,7 @@ option is using NSS. There is no switch anymore. Therefore it is the behaviour of the programs on the system inconsistent. -2.22. I just upgraded my Linux system to glibc and now I get +2.23. I just upgraded my Linux system to glibc and now I get errors whenever I try to link any program. {ZW} This happens when you have installed glibc as the primary C library but @@ -901,15 +932,13 @@ detect these situations. If the script reports problems, something is really screwed up. -2.23. When I use nscd the machine freezes. +2.24. When I use nscd the machine freezes. -{UD} It is well known that you cannot use nscd with Linux 2.0.*. There -is functionality missing in the kernel and work-arounds are not suitable. -Beside this some parts of the kernel are too buggy when it comes to using -threads. +{UD} You cannot use nscd with Linux 2.0.*. There is functionality missing +in the kernel and work-arounds are not suitable. Besides, some parts of the +kernel are too buggy when it comes to using threads. -So you have the possibilities to run Linux 2.0.* or update to a higher -version and start using nscd. +If you need nscd, you have to use a 2.1 kernel. Note that I have at this point no information about any other platform. diff --git a/Makeconfig b/Makeconfig index 99389276f9..20fa1b01ef 100644 --- a/Makeconfig +++ b/Makeconfig @@ -789,14 +789,13 @@ $(common-objpfx)sysd-dirs: $(common-objpfx)config.make $(all-Subdirs-files) all-Depend-files = $(wildcard $(..)*/Depend) $(common-objpfx)sysd-sorted: $(..)scripts/gen-sorted.awk $(all-Depend-files) \ $(common-objpfx)sysd-dirs $(..)Makeconfig - (if test "$(all-Depend-files)"; then \ - for f in $(all-Depend-files); do \ - dir=$${f%%/*}; \ - while read on; do \ - echo "depend $$dir $$on"; \ - done < $$f; \ - done; \ - fi; \ + (files="$(all-Depend-files)"; \ + for f in $$files; do \ + dir=`echo $$f | sed 's/^$(..)\(.*\)\/[^/]*$$/\1/'`; \ + while read on; do \ + echo "depend $$dir $$on"; \ + done < $$f; \ + done; \ for f in $(all-subdirs); do \ echo $$f; \ done \ diff --git a/Makefile b/Makefile index c439a29d06..e7fb520e3b 100644 --- a/Makefile +++ b/Makefile @@ -253,7 +253,8 @@ distribute := README README.libm INSTALL FAQ FAQ.in NOTES NEWS BUGS \ $(addprefix scripts/, \ rellns-sh config.sub config.guess \ mkinstalldirs move-if-change install-sh \ - test-installation.pl gen-FAQ.pl versions.awk) + test-installation.pl gen-FAQ.pl versions.awk\ + gen-sorted.awk) distribute := $(strip $(distribute)) generated := $(generated) stubs.h diff --git a/aclocal.m4 b/aclocal.m4 index 4da7ef89b4..8a1819d6f9 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -116,6 +116,17 @@ if test -n "$path_binutils"; then fi AS=`$CC -print-prog-name=as` LD=`$CC -print-prog-name=ld` +AR=`$CC -print-prog-name=ar` +AC_SUBST(AR) + +# ranlib has to be treated a bit differently since it might not exist at all. +RANLIB=`$CC -print-prog-name=ranlib` +if test $RANLIB = ranlib; then +# This extra check has to happen since gcc simply echos the parameter in +# case it cannot find the value in its own directories. +AC_CHECK_TOOL(RANLIB, ranlib, :) +fi +AC_SUBST(RANLIB) # Determine whether we are using GNU binutils. AC_CACHE_CHECK(whether $AS is GNU as, libc_cv_prog_as_gnu, diff --git a/bits/byteswap.h b/bits/byteswap.h index 73189cfe5c..6b5115658b 100644 --- a/bits/byteswap.h +++ b/bits/byteswap.h @@ -29,9 +29,9 @@ ((((__bsx) >> 8) & 0xff) | (((__bsx) & 0xff) << 8)); })) #else static __inline unsigned short int -__bswap16 (unsigned short int x) +__bswap_16 (unsigned short int __bsx) { - return ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)); + return ((((__bsx) >> 8) & 0xff) | (((__bsx) & 0xff) << 8)); } #endif @@ -44,7 +44,7 @@ __bswap16 (unsigned short int x) (((__bsx) & 0x0000ff00) << 8) | (((__bsx) & 0x000000ff) << 24)); })) #else static __inline unsigned int -__bswap32 (unsigned int x) +__bswap_32 (unsigned int __bsx) { return ((((__bsx) & 0xff000000) >> 24) | (((__bsx) & 0x00ff0000) >> 8) | (((__bsx) & 0x0000ff00) << 8) | (((__bsx) & 0x000000ff) << 24)); diff --git a/configure b/configure index 2281a6a7eb..c5c29d5cd2 100755 --- a/configure +++ b/configure @@ -1655,80 +1655,18 @@ if test -n "$path_binutils"; then fi AS=`$CC -print-prog-name=as` LD=`$CC -print-prog-name=ld` - -# Determine whether we are using GNU binutils. -echo $ac_n "checking whether $AS is GNU as""... $ac_c" 1>&6 -echo "configure:1662: 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 - # Most GNU programs take a -v and spit out some text including -# the word 'GNU'. Some try to read stdin, so give them /dev/null. -if $AS -o conftest -v </dev/null 2>&1 | grep GNU > /dev/null 2>&1; then - libc_cv_prog_as_gnu=yes -else - libc_cv_prog_as_gnu=no -fi -rm -fr contest* -fi - -echo "$ac_t""$libc_cv_prog_as_gnu" 1>&6 -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:1681: 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 - # Most GNU programs take a -v and spit out some text including -# the word 'GNU'. Some try to read stdin, so give them /dev/null. -if $LD -o conftest -v </dev/null 2>&1 | grep GNU > /dev/null 2>&1; then - libc_cv_prog_ld_gnu=yes -else - libc_cv_prog_ld_gnu=no -fi -rm -fr contest* -fi - -echo "$ac_t""$libc_cv_prog_ld_gnu" 1>&6 -gnu_ld=$libc_cv_prog_ld_gnu - -# 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:1701: 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 - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_AR="${ac_tool_prefix}ar" - break - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_prog_AR" && ac_cv_prog_AR="ar" -fi -fi -AR="$ac_cv_prog_AR" -if test -n "$AR"; then - echo "$ac_t""$AR" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - +AR=`$CC -print-prog-name=ar` +# ranlib has to be treated a bit differently since it might not exist at all. +RANLIB=`$CC -print-prog-name=ranlib` +if test $RANLIB = ranlib; then +# This extra check has to happen since gcc simply echos the parameter in +# case it cannot find the value in its own directories. # 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:1732: checking for $ac_word" >&5 +echo "configure:1670: 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 @@ -1759,7 +1697,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:1763: checking for $ac_word" >&5 +echo "configure:1701: 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 @@ -1790,10 +1728,51 @@ else fi fi +fi + + +# Determine whether we are using GNU binutils. +echo $ac_n "checking whether $AS is GNU as""... $ac_c" 1>&6 +echo "configure:1737: 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 + # Most GNU programs take a -v and spit out some text including +# the word 'GNU'. Some try to read stdin, so give them /dev/null. +if $AS -o conftest -v </dev/null 2>&1 | grep GNU > /dev/null 2>&1; then + libc_cv_prog_as_gnu=yes +else + libc_cv_prog_as_gnu=no +fi +rm -fr contest* +fi + +echo "$ac_t""$libc_cv_prog_as_gnu" 1>&6 +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:1756: 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 + # Most GNU programs take a -v and spit out some text including +# the word 'GNU'. Some try to read stdin, so give them /dev/null. +if $LD -o conftest -v </dev/null 2>&1 | grep GNU > /dev/null 2>&1; then + libc_cv_prog_ld_gnu=yes +else + libc_cv_prog_ld_gnu=no +fi +rm -fr contest* +fi + +echo "$ac_t""$libc_cv_prog_ld_gnu" 1>&6 +gnu_ld=$libc_cv_prog_ld_gnu + # Extract the first word of "${ac_tool_prefix}mig", so it can be a program name with args. set dummy ${ac_tool_prefix}mig; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1797: checking for $ac_word" >&5 +echo "configure:1776: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1833,7 +1812,7 @@ fi # check if ranlib is necessary echo $ac_n "checking whether ranlib is necessary""... $ac_c" 1>&6 -echo "configure:1837: checking whether ranlib is necessary" >&5 +echo "configure:1816: checking whether ranlib is necessary" >&5 if eval "test \"`echo '$''{'libc_cv_ranlib_necessary'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1867,7 +1846,7 @@ fi # - two terminals occur directly after each other # - the path contains an element with a dot in it echo $ac_n "checking LD_LIBRARY_PATH variable""... $ac_c" 1>&6 -echo "configure:1871: checking LD_LIBRARY_PATH variable" >&5 +echo "configure:1850: checking LD_LIBRARY_PATH variable" >&5 case ${LD_LIBRARY_PATH} in [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* ) ld_library_path_setting="contains current directory" @@ -1887,7 +1866,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:1891: checking for $ac_word" >&5 +echo "configure:1870: 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 @@ -1929,7 +1908,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:1933: checking for $ac_word" >&5 +echo "configure:1912: 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 @@ -1975,7 +1954,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:1979: checking for $ac_word" >&5 +echo "configure:1958: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2006,7 +1985,7 @@ done # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2010: checking for $ac_word" >&5 +echo "configure:1989: 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 @@ -2040,7 +2019,7 @@ install_info_path=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin # Extract the first word of "install-info", so it can be a program name with args. set dummy install-info; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2044: checking for $ac_word" >&5 +echo "configure:2023: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_INSTALL_INFO'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2072,7 +2051,7 @@ fi if test "$INSTALL_INFO" != "no"; then echo $ac_n "checking for old Debian install-info""... $ac_c" 1>&6 -echo "configure:2076: checking for old Debian install-info" >&5 +echo "configure:2055: checking for old Debian install-info" >&5 if eval "test \"`echo '$''{'libc_cv_old_debian_install_info'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2105,7 +2084,7 @@ fi echo $ac_n "checking for signed size_t type""... $ac_c" 1>&6 -echo "configure:2109: checking for signed size_t type" >&5 +echo "configure:2088: 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 @@ -2129,12 +2108,12 @@ EOF fi echo $ac_n "checking for libc-friendly stddef.h""... $ac_c" 1>&6 -echo "configure:2133: checking for libc-friendly stddef.h" >&5 +echo "configure:2112: 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 2138 "configure" +#line 2117 "configure" #include "confdefs.h" #define __need_size_t #define __need_wchar_t @@ -2149,7 +2128,7 @@ size_t size; wchar_t wchar; if (&size == NULL || &wchar == NULL) abort (); ; return 0; } EOF -if { (eval echo configure:2153: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2132: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* libc_cv_friendly_stddef=yes else @@ -2168,7 +2147,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:2172: checking whether we need to use -P to assemble .S files" >&5 +echo "configure:2151: 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 @@ -2191,7 +2170,7 @@ asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives." fi echo $ac_n "checking for assembler global-symbol directive""... $ac_c" 1>&6 -echo "configure:2195: checking for assembler global-symbol directive" >&5 +echo "configure:2174: 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 @@ -2221,7 +2200,7 @@ EOF fi echo $ac_n "checking for .set assembler directive""... $ac_c" 1>&6 -echo "configure:2225: checking for .set assembler directive" >&5 +echo "configure:2204: 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 @@ -2255,7 +2234,7 @@ EOF fi echo $ac_n "checking for .symver assembler directive""... $ac_c" 1>&6 -echo "configure:2259: checking for .symver assembler directive" >&5 +echo "configure:2238: 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 @@ -2274,7 +2253,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:2278: checking for ld --version-script" >&5 +echo "configure:2257: 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 @@ -2297,7 +2276,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:2301: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; + 1>&5'; { (eval echo configure:2280: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_ld_version_script_option=yes else @@ -2335,7 +2314,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:2339: checking for .previous assembler directive" >&5 +echo "configure:2318: 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 @@ -2343,7 +2322,7 @@ else .section foo_section .previous EOF - if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2347: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then + if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2326: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_asm_previous_directive=yes else libc_cv_asm_previous_directive=no @@ -2359,7 +2338,7 @@ EOF else echo $ac_n "checking for .popsection assembler directive""... $ac_c" 1>&6 -echo "configure:2363: checking for .popsection assembler directive" >&5 +echo "configure:2342: 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 @@ -2367,7 +2346,7 @@ else .pushsection foo_section .popsection EOF - if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2371: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then + if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2350: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_asm_popsection_directive=yes else libc_cv_asm_popsection_directive=no @@ -2387,12 +2366,12 @@ fi if test $elf != yes; then echo $ac_n "checking for .init and .fini sections""... $ac_c" 1>&6 -echo "configure:2391: checking for .init and .fini sections" >&5 +echo "configure:2370: 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 2396 "configure" +#line 2375 "configure" #include "confdefs.h" int main() { @@ -2401,7 +2380,7 @@ asm (".section .init"); asm (".text"); ; return 0; } EOF -if { (eval echo configure:2405: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2384: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* libc_cv_have_initfini=yes else @@ -2429,19 +2408,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:2433: checking for _ prefix on C symbol names" >&5 +echo "configure:2412: 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 2438 "configure" +#line 2417 "configure" #include "confdefs.h" asm ("_glibc_foobar:"); int main() { glibc_foobar (); ; return 0; } EOF -if { (eval echo configure:2445: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2424: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* libc_cv_asm_underscores=yes else @@ -2456,17 +2435,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:2460: checking for _ prefix on C symbol names" >&5 +echo "configure:2439: 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 2465 "configure" +#line 2444 "configure" #include "confdefs.h" void underscore_test(void) { return; } EOF -if { (eval echo configure:2470: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2449: \"$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 @@ -2498,7 +2477,7 @@ if test $elf = yes; then fi echo $ac_n "checking for assembler .weak directive""... $ac_c" 1>&6 -echo "configure:2502: checking for assembler .weak directive" >&5 +echo "configure:2481: 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 @@ -2521,7 +2500,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:2525: checking for assembler .weakext directive" >&5 +echo "configure:2504: 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 @@ -2559,7 +2538,7 @@ EOF fi echo $ac_n "checking for ld --no-whole-archive""... $ac_c" 1>&6 -echo "configure:2563: checking for ld --no-whole-archive" >&5 +echo "configure:2542: 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 @@ -2570,7 +2549,7 @@ __throw () {} EOF if { ac_try='${CC-cc} $CFLAGS -nostdlib -nostartfiles -Wl,--no-whole-archive - -o conftest conftest.c 1>&5'; { (eval echo configure:2574: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then + -o conftest conftest.c 1>&5'; { (eval echo configure:2553: \"$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 @@ -2584,7 +2563,7 @@ if test $libc_cv_ld_no_whole_archive = yes; then fi echo $ac_n "checking for gcc -fexceptions""... $ac_c" 1>&6 -echo "configure:2588: checking for gcc -fexceptions" >&5 +echo "configure:2567: checking for gcc -fexceptions" >&5 if eval "test \"`echo '$''{'libc_cv_gcc_exceptions'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2595,7 +2574,7 @@ __throw () {} EOF if { ac_try='${CC-cc} $CFLAGS -nostdlib -nostartfiles -fexceptions - -o conftest conftest.c 1>&5'; { (eval echo configure:2599: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then + -o conftest conftest.c 1>&5'; { (eval echo configure:2578: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_gcc_exceptions=yes else libc_cv_gcc_exceptions=no @@ -2610,14 +2589,14 @@ fi if test "$base_machine" = alpha ; then echo $ac_n "checking for function ..ng prefix""... $ac_c" 1>&6 -echo "configure:2614: checking for function ..ng prefix" >&5 +echo "configure:2593: 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:2621: \"$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:2600: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_gcc_alpha_ng_prefix=yes else @@ -2644,19 +2623,19 @@ if test "$host_cpu" = powerpc ; then # Check for a bug present in at least versions 2.8.x of GCC # and versions 1.0.x of EGCS. echo $ac_n "checking whether clobbering cr0 causes problems""... $ac_c" 1>&6 -echo "configure:2648: checking whether clobbering cr0 causes problems" >&5 +echo "configure:2627: checking whether clobbering cr0 causes problems" >&5 if eval "test \"`echo '$''{'libc_cv_c_asmcr0_bug'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 2653 "configure" +#line 2632 "configure" #include "confdefs.h" int tester(int x) { asm ("" : : : "cc"); return x & 123; } int main() { ; return 0; } EOF -if { (eval echo configure:2660: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2639: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* libc_cv_c_asmcr0_bug='no' else @@ -2678,12 +2657,12 @@ fi fi echo $ac_n "checking for DWARF2 unwind info support""... $ac_c" 1>&6 -echo "configure:2682: checking for DWARF2 unwind info support" >&5 +echo "configure:2661: 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 2687 "configure" +#line 2666 "configure" static char __EH_FRAME_BEGIN__; _start () { @@ -2710,7 +2689,7 @@ __bzero () {} EOF if { ac_try='${CC-cc} $CFLAGS -DCHECK__register_frame_info -nostdlib -nostartfiles - -o conftest conftest.c -lgcc >&5'; { (eval echo configure:2714: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then + -o conftest conftest.c -lgcc >&5'; { (eval echo configure:2693: \"$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 @@ -2718,7 +2697,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:2722: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then + -o conftest conftest.c -lgcc >&5'; { (eval echo configure:2701: \"$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 @@ -2748,12 +2727,12 @@ EOF esac echo $ac_n "checking for __builtin_expect""... $ac_c" 1>&6 -echo "configure:2752: checking for __builtin_expect" >&5 +echo "configure:2731: checking for __builtin_expect" >&5 if eval "test \"`echo '$''{'libc_cv_gcc_builtin_expect'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.c <<EOF -#line 2757 "configure" +#line 2736 "configure" int foo (int a) { a = __builtin_expect (a, 10); @@ -2761,7 +2740,7 @@ int foo (int a) } EOF if { ac_try='${CC-cc} $CFLAGS -nostdlib -nostartfiles - -o conftest conftest.c -lgcc >&5'; { (eval echo configure:2765: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then + -o conftest conftest.c -lgcc >&5'; { (eval echo configure:2744: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_gcc_builtin_expect=yes else libc_cv_gcc_builtin_expect=no @@ -2822,7 +2801,7 @@ if test "$uname" = "sysdeps/generic"; then fi echo $ac_n "checking OS release for uname""... $ac_c" 1>&6 -echo "configure:2826: checking OS release for uname" >&5 +echo "configure:2805: 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 @@ -2844,7 +2823,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:2848: checking OS version for uname" >&5 +echo "configure:2827: 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 @@ -2866,7 +2845,7 @@ else fi echo $ac_n "checking stdio selection""... $ac_c" 1>&6 -echo "configure:2870: checking stdio selection" >&5 +echo "configure:2849: checking stdio selection" >&5 case $stdio in libio) cat >> confdefs.h <<\EOF @@ -2880,7 +2859,7 @@ echo "$ac_t""$stdio" 1>&6 # Test for old glibc 2.0.x headers so that they can be removed properly # Search only in includedir. echo $ac_n "checking for old glibc 2.0.x headers""... $ac_c" 1>&6 -echo "configure:2884: checking for old glibc 2.0.x headers" >&5 +echo "configure:2863: checking for old glibc 2.0.x headers" >&5 if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h" then old_glibc_headers=yes @@ -2934,7 +2913,7 @@ if test $shared = default; then fi echo $ac_n "checking whether -fPIC is default""... $ac_c" 1>&6 -echo "configure:2938: checking whether -fPIC is default" >&5 +echo "configure:2917: 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 a8dd26a1f4..5e37a1732e 100644 --- a/configure.in +++ b/configure.in @@ -472,8 +472,6 @@ fi AC_SUBST(cross_compiling) AC_PROG_CPP LIBC_PROG_BINUTILS -AC_CHECK_TOOL(AR, ar) -AC_CHECK_TOOL(RANLIB, ranlib, :) AC_CHECK_TOOL(MIG, mig) # if using special system headers, find out the compiler's sekrit diff --git a/inet/gethstbyad_r.c b/inet/gethstbyad_r.c index 33b6c7c71f..175253d9ab 100644 --- a/inet/gethstbyad_r.c +++ b/inet/gethstbyad_r.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. @@ -27,5 +27,12 @@ #define ADD_VARIABLES addr, len, type #define NEED_H_ERRNO 1 #define NEED__RES 1 +#define NEED__RES_HCONF 1 +#define POSTPROCESS \ + if (status == NSS_STATUS_SUCCESS) \ + { \ + _res_hconf_reorder_addrs (resbuf); \ + _res_hconf_trim_domains (resbuf); \ + } #include "../nss/getXXbyYY_r.c" diff --git a/inet/gethstbynm_r.c b/inet/gethstbynm_r.c index dbc063cc97..c9262a7bb0 100644 --- a/inet/gethstbynm_r.c +++ b/inet/gethstbynm_r.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. @@ -32,6 +32,10 @@ #define ADD_VARIABLES name #define NEED_H_ERRNO 1 #define NEED__RES 1 +#define NEED__RES_HCONF 1 +#define POSTPROCESS \ + if (status == NSS_STATUS_SUCCESS) \ + _res_hconf_reorder_addrs (resbuf); #define HANDLE_DIGITS_DOTS 1 #define HAVE_LOOKUP_BUFFER 1 diff --git a/math/libm-test.c b/math/libm-test.c index 2cd90757a4..86616a4404 100644 --- a/math/libm-test.c +++ b/math/libm-test.c @@ -1020,7 +1020,7 @@ atan2_test (void) check_eps ("atan2 (0.7,1) == 0.61072...", FUNC(atan2) (0.7,1), 0.6107259643892086165L, CHOOSE(3e-17L, 0, 0)); check_eps ("atan2 (0.4,0.0003) == 1.57004...", FUNC(atan2) (0.4, 0.0003), - 1.5700463269355215718L, CHOOSE(2e-19L, 0, 0)); + 1.5700463269355215718L, CHOOSE(2e-19L, 0, 1.2e-7)); } @@ -1601,7 +1601,8 @@ log_test (void) check_eps ("log (e) == 1", FUNC(log) (M_El), 1, CHOOSE (1e-18L, 0, 9e-8L)); check_eps ("log (1/e) == -1", FUNC(log) (1.0 / M_El), -1, CHOOSE (2e-18L, 0, 0)); - check ("log (2) == M_LN2", FUNC(log) (2), M_LN2l); + check_eps ("log (2) == M_LN2", FUNC(log) (2), M_LN2l, + CHOOSE (6e-20L, 0, 0)); check_eps ("log (10) == M_LN10", FUNC(log) (10), M_LN10l, CHOOSE (1e-18L, 0, 0)); check_eps ("log (0.7) == -0.3566749439...", FUNC(log) (0.7), @@ -2743,11 +2744,11 @@ cexp_test (void) check_eps ("real(cexp(0.7 + i 1.2)) == 0.72969...", __real__ result, 0.7296989091503236012L, CHOOSE(6e-17L, 2e-16, 2e-7)); check_eps ("imag(cexp(0.7 + i 1.2)) == 1.87689...", __imag__ result, - 1.8768962328348102821L, CHOOSE(2e-16L, 0, 3e-7)); + 1.8768962328348102821L, CHOOSE(2e-16L, 2.5e-16, 3e-7)); result = FUNC(cexp) (BUILD_COMPLEX (-2, -3)); check_eps ("real(cexp(-2 - i 3)) == -0.13398...", __real__ result, - -0.1339809149295426134L, CHOOSE(6e-20L, 0, 2e-8)); + -0.1339809149295426134L, CHOOSE(6.8e-20L, 0, 2e-8)); check_eps ("imag(cexp(-2 - i 3)) == -0.01909...", __imag__ result, -0.0190985162611351964L, CHOOSE(4e-20L, 0, 2e-9)); } @@ -3745,13 +3746,13 @@ cacosh_test (void) check_eps ("real(cacosh(0.7 + i 1.2)) == 1.09276...", __real__ result, 1.0927647857577371459L, CHOOSE(4e-17L, 3e-16, 2e-7)); check_eps ("imag(cacosh(0.7 + i 1.2)) == 1.13518...", __imag__ result, - 1.1351827477151551089L, CHOOSE(2e-17L, 0, 0)); + 1.1351827477151551089L, CHOOSE(2e-17L, 0, 1.2e-7)); result = FUNC(cacosh) (BUILD_COMPLEX (-2, -3)); check_eps ("real(cacosh(-2 - i 3)) == -1.98338...", __real__ result, -1.9833870299165354323L, CHOOSE (2e-18L, 3e-16, 9e-7)); check_eps ("imag(cacosh(-2 - i 3)) == 2.14144...", __imag__ result, - 2.1414491111159960199L, CHOOSE (3e-19, 5e-16, 1e-6)); + 2.1414491111159960199L, CHOOSE (4.5e-19, 5e-16, 1e-6)); } @@ -4041,7 +4042,7 @@ casinh_test (void) check_eps ("real(casinh(-2 - i 3)) == -1.96863...", __real__ result, -1.9686379257930962917L, CHOOSE(7e-19L, 2e-15, 3e-6)); check_eps ("imag(casinh(-2 - i 3)) == -0.96465...", __imag__ result, - -0.9646585044076027920L, CHOOSE(4e-19L, 2e-15, 4e-7)); + -0.9646585044076027920L, CHOOSE(4e-19L, 2e-15, 4.5e-7)); } @@ -4333,7 +4334,7 @@ catanh_test (void) result = FUNC(catanh) (BUILD_COMPLEX (0.7, 1.2)); check_eps ("real(catanh(0.7 + i 1.2)) == 0.26007...", __real__ result, - 0.2600749516525135959L, CHOOSE (2e-18, 6e-17, 0)); + 0.2600749516525135959L, CHOOSE (2e-18, 6e-17, 3e-8)); check_eps ("imag(catanh(0.7 + i 1.2)) == 0.97024...", __imag__ result, 0.9702403077950989849L, CHOOSE (3e-17, 2e-16, 4e-7)); @@ -4806,7 +4807,7 @@ clog_test (void) check_eps ("real(clog(0.7 + i 1.2)) == 0.32876...", __real__ result, 0.3287600014583970919L, CHOOSE(5e-17L, 6e-17, 3e-8)); check_eps ("imag(clog(0.7 + i 1.2)) == 1.04272...", __imag__ result, - 1.0427218783685369524L, CHOOSE(2e-17L, 0, 0)); + 1.0427218783685369524L, CHOOSE(2e-17L, 2.5e-16, 1.2e-7)); result = FUNC(clog) (BUILD_COMPLEX (-2, -3)); check_eps ("real(clog(-2 - i 3)) == 1.28247...", __real__ result, @@ -4988,7 +4989,7 @@ clog10_test (void) check_eps ("real(clog10(0.7 + i 1.2)) == 0.14277...", __real__ result, 0.1427786545038868803L, CHOOSE(2e-17L, 6e-17, 2e-8)); check_eps ("imag(clog10(0.7 + i 1.2)) == 0.45284...", __imag__ result, - 0.4528483579352493248L, CHOOSE(6e-18, 6e-17, 3e-8)); + 0.4528483579352493248L, CHOOSE(6e-18, 6e-17, 6e-8)); result = FUNC(clog10) (BUILD_COMPLEX (-2, -3)); check_eps ("real(clog10(-2 - i 3)) == 0.55697...", __real__ result, @@ -5181,7 +5182,7 @@ cpow_test (void) result = FUNC (cpow) (BUILD_COMPLEX (2, 0), BUILD_COMPLEX (10, 0)); check_eps ("real(cpow (2 + i0), (10 + i0)) == 1024", __real__ result, 1024, - CHOOSE (2e-16L, 0, 0)); + CHOOSE (6e-16L, 0, 0)); check ("imag(cpow (2 + i0), (10 + i0)) == 0", __imag__ result, 0); result = FUNC (cpow) (BUILD_COMPLEX (M_El, 0), BUILD_COMPLEX (0, 2 * M_PIl)); diff --git a/nss/getXXbyYY_r.c b/nss/getXXbyYY_r.c index 3befede20f..7e567a1325 100644 --- a/nss/getXXbyYY_r.c +++ b/nss/getXXbyYY_r.c @@ -22,6 +22,9 @@ #ifdef USE_NSCD # include <nscd/nscd_proto.h> #endif +#ifdef NEED__RES_HCONF +# include <resolv/res_hconf.h> +#endif /*******************************************************************\ |* Here we assume several symbols to be defined: *| @@ -153,6 +156,10 @@ INTERNAL (REENTRANT_NAME) (ADD_PARAMS, LOOKUP_TYPE *resbuf, char *buffer, return -1; } #endif /* need _res */ +#ifdef NEED__RES_HCONF + if (!_res_hconf.initialized) + _res_hconf_init (); +#endif /* need _res_hconf */ } } else @@ -186,6 +193,9 @@ INTERNAL (REENTRANT_NAME) (ADD_PARAMS, LOOKUP_TYPE *resbuf, char *buffer, done: #endif *result = status == NSS_STATUS_SUCCESS ? resbuf : NULL; +#ifdef POSTPROCESS + POSTPROCESS; +#endif return status == NSS_STATUS_SUCCESS ? 0 : -1; } diff --git a/resolv/Makefile b/resolv/Makefile index fe5a0f16c1..71a66fe0f0 100644 --- a/resolv/Makefile +++ b/resolv/Makefile @@ -23,9 +23,9 @@ subdir := resolv headers := resolv.h netdb.h arpa/nameser.h sys/bitypes.h distribute := ../conf/portability.h mapv4v6addr.h mapv4v6hostent.h \ - Banner + Banner res_hconf.h -routines := herror inet_addr inet_ntop inet_pton nsap_addr res_init +routines := herror inet_addr inet_ntop inet_pton nsap_addr res_init res_hconf tests = tst-aton diff --git a/resolv/res_hconf.c b/resolv/res_hconf.c index 642cada678..c7aee65e59 100644 --- a/resolv/res_hconf.c +++ b/resolv/res_hconf.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1993, 1995, 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1995, 1996, 1997, 1998 Free Software Foundation, Inc. Contributed by David Mosberger (davidm@azstarnet.com). The GNU C Library is free software; you can redistribute it and/or @@ -32,6 +32,7 @@ to the original implementation: #include <stdio.h> #include <stdlib.h> #include <string.h> +#include <net/if.h> #include "res_hconf.h" @@ -46,19 +47,21 @@ to the original implementation: #define ENV_MULTI "RESOLV_MULTI" #define ENV_REORDER "RESOLV_REORDER" -static const char * arg_service_list (const char *, int, const char *, - unsigned); -static const char * arg_trimdomain_list (const char *, int, const char *, - unsigned); -static const char * arg_spoof (const char *, int, const char *, unsigned); -static const char * arg_bool (const char *, int, const char *, unsigned); - -static struct cmd { - const char * name; - const char * (*parse_args)(const char * filename, int line_num, - const char * args, unsigned arg); - unsigned arg;; -} cmd[] = { +static const char *arg_service_list (const char *, int, const char *, + unsigned int); +static const char *arg_trimdomain_list (const char *, int, const char *, + unsigned int); +static const char *arg_spoof (const char *, int, const char *, unsigned int); +static const char *arg_bool (const char *, int, const char *, unsigned int); + +static struct cmd +{ + const char *name; + const char *(*parse_args) (const char * filename, int line_num, + const char * args, unsigned int arg); + unsigned int arg; +} cmd[] = +{ {"order", arg_service_list, 0}, {"trim", arg_trimdomain_list, 0}, {"spoof", arg_spoof, 0}, @@ -68,10 +71,12 @@ static struct cmd { {"reorder", arg_bool, HCONF_FLAG_REORDER} }; +/* Structure containing the state. */ +struct hconf _res_hconf; /* Skip white space. */ static const char * -skip_ws (const char * str) +skip_ws (const char *str) { while (isspace (*str)) ++str; return str; @@ -80,29 +85,32 @@ skip_ws (const char * str) /* Skip until whitespace, comma, end of line, or comment character. */ static const char * -skip_string (const char * str) +skip_string (const char *str) { - while (*str && !isspace (*str) && *str != '#' && *str != ',') ++str; + while (*str && !isspace (*str) && *str != '#' && *str != ',') + ++str; return str; } static const char * -arg_service_list (const char * fname, int line_num, const char * args, - unsigned arg) +arg_service_list (const char *fname, int line_num, const char *args, + unsigned int arg) { enum Name_Service service; - const char * start; + const char *start; size_t len; int i; - static struct { - const char * name; - enum Name_Service service; - } svcs[] = { - {"bind", SERVICE_BIND}, - {"hosts", SERVICE_HOSTS}, - {"nis", SERVICE_NIS}, - }; + static struct + { + const char * name; + enum Name_Service service; + } svcs[] = + { + {"bind", SERVICE_BIND}, + {"hosts", SERVICE_HOSTS}, + {"nis", SERVICE_NIS}, + }; do { @@ -113,7 +121,7 @@ arg_service_list (const char * fname, int line_num, const char * args, service = SERVICE_NONE; for (i = 0; i < sizeof (svcs) / sizeof (svcs[0]); ++i) { - if (strncasecmp (start, svcs[i].name, len) == 0 + if (__strncasecmp (start, svcs[i].name, len) == 0 && len == strlen (svcs[i].name)) { service = svcs[i].service; @@ -137,7 +145,9 @@ arg_service_list (const char * fname, int line_num, const char * args, args = skip_ws (args); switch (*args) { - case ',': case ';': case ':': + case ',': + case ';': + case ':': args = skip_ws (++args); if (!*args || *args == '#') { @@ -156,8 +166,8 @@ arg_service_list (const char * fname, int line_num, const char * args, static const char * -arg_trimdomain_list (const char * fname, int line_num, const char * args, - unsigned flag) +arg_trimdomain_list (const char *fname, int line_num, const char *args, + unsigned int flag) { const char * start; size_t len; @@ -176,7 +186,7 @@ arg_trimdomain_list (const char * fname, int line_num, const char * args, return 0; } _res_hconf.trimdomain[_res_hconf.num_trimdomains++] = - strndup (start, len); + __strndup (start, len); args = skip_ws (args); switch (*args) { @@ -199,21 +209,21 @@ arg_trimdomain_list (const char * fname, int line_num, const char * args, static const char * -arg_spoof (const char * fname, int line_num, const char * args, unsigned flag) +arg_spoof (const char *fname, int line_num, const char *args, unsigned flag) { - const char * start = args; + const char *start = args; size_t len; args = skip_string (args); len = args - start; - if (len == 3 && strncasecmp (start, "off", len) == 0) + if (len == 3 && __strncasecmp (start, "off", len) == 0) _res_hconf.flags &= ~(HCONF_FLAG_SPOOF | HCONF_FLAG_SPOOFALERT); else { _res_hconf.flags |= (HCONF_FLAG_SPOOF | HCONF_FLAG_SPOOFALERT); - if ((len == 6 && strncasecmp (start, "nowarn", len) == 0) - || !(len == 4 && strncasecmp (start, "warn", len) == 0)) + if ((len == 6 && __strncasecmp (start, "nowarn", len) == 0) + || !(len == 4 && __strncasecmp (start, "warn", len) == 0)) _res_hconf.flags &= ~HCONF_FLAG_SPOOFALERT; } return args; @@ -221,14 +231,14 @@ arg_spoof (const char * fname, int line_num, const char * args, unsigned flag) static const char * -arg_bool (const char * fname, int line_num, const char * args, unsigned flag) +arg_bool (const char *fname, int line_num, const char *args, unsigned flag) { - if (strncasecmp (args, "on", 2) == 0) + if (__strncasecmp (args, "on", 2) == 0) { args += 2; _res_hconf.flags |= flag; } - else if (strncasecmp (args, "off", 3) == 0) + else if (__strncasecmp (args, "off", 3) == 0) { args += 3; _res_hconf.flags &= ~flag; @@ -244,10 +254,10 @@ arg_bool (const char * fname, int line_num, const char * args, unsigned flag) static void -parse_line (const char * fname, int line_num, const char * str) +parse_line (const char *fname, int line_num, const char *str) { - const char * start; - struct cmd * c = 0; + const char *start; + struct cmd *c = 0; size_t len; int i; @@ -268,7 +278,7 @@ parse_line (const char * fname, int line_num, const char * str) break; } } - if (!c) + if (c == NULL) { fprintf (stderr, "%s: line %d: bad command `%s'\n", fname, line_num, start); @@ -300,15 +310,18 @@ parse_line (const char * fname, int line_num, const char * str) void _res_hconf_init (void) { - const char * hconf_name; + const char *hconf_name; int line_num = 0; - char buf[256], * end, * envval; - FILE * fp; + char buf[256], *end, *envval; + FILE *fp; - memset (&_res_hconf, 0, sizeof (_res_hconf)); + if (_res_hconf.initialized) + return; + + memset (&_res_hconf, '\0', sizeof (_res_hconf)); hconf_name = getenv (ENV_HOSTCONF); - if (!hconf_name) + if (hconf_name == NULL) hconf_name = _PATH_HOSTCONF; fp = fopen (hconf_name, "r"); @@ -317,7 +330,7 @@ _res_hconf_init (void) _res_hconf.service[_res_hconf.num_services++] = SERVICE_BIND; else { - while (fgets (buf, sizeof (buf), fp)) + while (fgets_unlocked (buf, sizeof (buf), fp)) { ++line_num; end = strchr (buf, '\n'); @@ -357,6 +370,8 @@ _res_hconf_init (void) _res_hconf.num_trimdomains = 0; arg_trimdomain_list (ENV_TRIM_OVERR, 1, envval, 0); } + + _res_hconf.initialized = 1; } @@ -365,19 +380,22 @@ _res_hconf_init (void) Otherwise, nothing is changed. */ void -_res_hconf_reorder_addrs (struct hostent * hp) +_res_hconf_reorder_addrs (struct hostent *hp) { -#if defined (SIOCGIFCONF) && defined (SIOCGIFNETMASK) +#if defined SIOCGIFCONF && defined SIOCGIFNETMASK static int num_ifs = -1; /* number of interfaces */ - static struct netaddr { + static struct netaddr + { int addrtype; - union { - struct { + union + { + struct + { u_int32_t addr; u_int32_t mask; } ipv4 } u; - } * ifaddrs; + } *ifaddrs; if (hp->h_addrtype != AF_INET) return; /* can't deal with anything but IPv4 for now... */ @@ -385,7 +403,7 @@ _res_hconf_reorder_addrs (struct hostent * hp) if (num_ifs <= 0) { struct ifconf ifs; - struct ifreq * ifr; + struct ifreq *ifr; size_t size, num; int sd; @@ -393,7 +411,7 @@ _res_hconf_reorder_addrs (struct hostent * hp) num_ifs = 0; - sd = socket (AF_INET, SOCK_DGRAM, 0); + sd = __socket (AF_INET, SOCK_DGRAM, 0); if (sd < 0) return; @@ -404,18 +422,20 @@ _res_hconf_reorder_addrs (struct hostent * hp) interfaces, not memory */ size = 0; ifs.ifc_buf = 0; - do { - size += 4 * sizeof (struct ifreq); - ifs.ifc_buf = realloc (ifs.ifs_buf, size); - if (!ifs.ifc_buf) - { - close (sd); - return; - } - ifs.ifc_len = size; - if (ioctl (sd, SIOCGIFCONF, &ifs) < 0) - goto cleanup; - } while (size - ifs.ifc_len < sizeof (struct ifreq)); + do + { + size += 4 * sizeof (struct ifreq); + ifs.ifc_buf = realloc (ifs.ifs_buf, size); + if (ifs.ifc_buf == NULL) + { + close (sd); + return; + } + ifs.ifc_len = size; + if (__ioctl (sd, SIOCGIFCONF, &ifs) < 0) + goto cleanup; + } + while (size - ifs.ifc_len < sizeof (struct ifreq)); num = ifs.ifc_len / sizeof (struct ifreq); @@ -424,21 +444,22 @@ _res_hconf_reorder_addrs (struct hostent * hp) goto cleanup; ifr = ifs.ifc_req; - for (i = 0; i < num; ++i) { - if (ifr->ifr_addr.sa_family != AF_INET) - continue; - ifaddrs[num_ifs].addrtype = AF_INET; + for (i = 0; i < num; ++i) + { + if (ifr->ifr_addr.sa_family != AF_INET) + continue; + ifaddrs[num_ifs].addrtype = AF_INET; - memcpy (&ifaddrs[num_ifs].u.ipv4.addr, - &((struct sockaddr_in *)ifr->ifr_addr)->sin_addr, 4); + memcpy (&ifaddrs[num_ifs].u.ipv4.addr, + &((struct sockaddr_in *)ifr->ifr_addr)->sin_addr, 4); - if (ioctl (sd, SIOCGIFNETMASK, if) < 0) - continue; - memcpy (&ifaddrs[num_ifs].u.ipv4.mask, - ((struct sockaddr_in *)ifr->ifr_mask)->sin_addr, 4); + if (__ioctl (sd, SIOCGIFNETMASK, if) < 0) + continue; + memcpy (&ifaddrs[num_ifs].u.ipv4.mask, + ((struct sockaddr_in *)ifr->ifr_mask)->sin_addr, 4); - ++num_ifs; /* now we're committed to this entry */ - } + ++num_ifs; /* now we're committed to this entry */ + } /* just keep enough memory to hold all the interfaces we want: */ ifaddrs = realloc (ifaddrs, num_ifs * sizeof (ifaddrs[0])); @@ -462,9 +483,9 @@ _res_hconf_reorder_addrs (struct hostent * hp) if (((h_addr->s_addr ^ if_addr) & if_netmask) == 0) { - void * tmp; + void *tmp; - tmp = hp->h_addr_list[i]; + tmp = hp->h_addr_list[i]; hp->h_addr_list[i] = hp->h_addr_list[0]; hp->h_addr_list[0] = tmp; return; @@ -481,20 +502,20 @@ _res_hconf_reorder_addrs (struct hostent * hp) same domainname could be trimmed multiple times. I believe this was unintentional. */ void -_res_hconf_trim_domain (char * hostname) +_res_hconf_trim_domain (char *hostname) { size_t hostname_len, trim_len; int i; - hostname_len = strlen(hostname); + hostname_len = strlen (hostname); for (i = 0; i < _res_hconf.num_trimdomains; ++i) { - const char * trim = _res_hconf.trimdomain[i]; + const char *trim = _res_hconf.trimdomain[i]; - trim_len = strlen(trim); + trim_len = strlen (trim); if (hostname_len > trim_len - && strcasecmp(&hostname[hostname_len - trim_len], trim) == 0) + && __strcasecmp (&hostname[hostname_len - trim_len], trim) == 0) { hostname[hostname_len - trim_len] = '\0'; break; @@ -506,7 +527,7 @@ _res_hconf_trim_domain (char * hostname) /* Trim all hostnames/aliases in HP according to the trimdomain list. Notice that HP is modified inplace! */ void -_res_hconf_trim_domains (struct hostent * hp) +_res_hconf_trim_domains (struct hostent *hp) { int i; @@ -517,32 +538,3 @@ _res_hconf_trim_domains (struct hostent * hp) for (i = 0; hp->h_aliases[i]; ++i) _res_hconf_trim_domain (hp->h_aliases[i]); } - - -#if 0 - -struct hostent * -_hconf_gethostent (void) -{ -} - - -struct hostent * -_hconf_gethostbyname (const char * name) -{ - -} - - -struct hostent * -_hconf_gethostbyaddr (const char * addr, int len, int type) -{ -} - - -struct hostent * -_hconf_gethtbyname (const char * name) -{ -} - -#endif diff --git a/resolv/res_hconf.h b/resolv/res_hconf.h index c2aeefbcd5..80c0828d4e 100644 --- a/resolv/res_hconf.h +++ b/resolv/res_hconf.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1993, 1995, 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1995, 1996, 1997, 1998 Free Software Foundation, Inc. Contributed by David Mosberger (davidm@azstarnet.com). The GNU C Library is free software; you can redistribute it and/or @@ -23,28 +23,32 @@ #define TRIMDOMAINS_MAX 4 -enum Name_Service { +enum Name_Service +{ SERVICE_NONE = 0, SERVICE_BIND, SERVICE_HOSTS, SERVICE_NIS, SERVICE_MAX }; -struct hconf { - int num_services; - enum Name_Service service[SERVICE_MAX]; - int num_trimdomains; - const char * trimdomain[TRIMDOMAINS_MAX]; - unsigned flags; +struct hconf +{ + int initialized; + int num_services; + enum Name_Service service[SERVICE_MAX]; + int num_trimdomains; + const char *trimdomain[TRIMDOMAINS_MAX]; + unsigned int flags; # define HCONF_FLAG_INITED (1 << 0) /* initialized? */ # define HCONF_FLAG_SPOOF (1 << 1) /* refuse spoofed addresses */ # define HCONF_FLAG_SPOOFALERT (1 << 2) /* syslog warning of spoofed */ # define HCONF_FLAG_REORDER (1 << 3) /* list best address first */ # define HCONF_FLAG_MULTI (1 << 4) /* see comments for gethtbyname() */ -} _res_hconf; +}; +extern struct hconf _res_hconf; -extern void _res_hconf_init (void); -extern void _res_hconf_trim_domain (char * domain); -extern void _res_hconf_trim_domains (struct hostent * hp); -extern void _res_hconf_reorder_addrs (struct hostent * hp); +extern void _res_hconf_init (void); +extern void _res_hconf_trim_domain (char *domain); +extern void _res_hconf_trim_domains (struct hostent *hp); +extern void _res_hconf_reorder_addrs (struct hostent *hp); #endif /* _RES_HCONF_H_ */ diff --git a/sysdeps/generic/bits/byteswap.h b/sysdeps/generic/bits/byteswap.h index 73189cfe5c..6b5115658b 100644 --- a/sysdeps/generic/bits/byteswap.h +++ b/sysdeps/generic/bits/byteswap.h @@ -29,9 +29,9 @@ ((((__bsx) >> 8) & 0xff) | (((__bsx) & 0xff) << 8)); })) #else static __inline unsigned short int -__bswap16 (unsigned short int x) +__bswap_16 (unsigned short int __bsx) { - return ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)); + return ((((__bsx) >> 8) & 0xff) | (((__bsx) & 0xff) << 8)); } #endif @@ -44,7 +44,7 @@ __bswap16 (unsigned short int x) (((__bsx) & 0x0000ff00) << 8) | (((__bsx) & 0x000000ff) << 24)); })) #else static __inline unsigned int -__bswap32 (unsigned int x) +__bswap_32 (unsigned int __bsx) { return ((((__bsx) & 0xff000000) >> 24) | (((__bsx) & 0x00ff0000) >> 8) | (((__bsx) & 0x0000ff00) << 8) | (((__bsx) & 0x000000ff) << 24)); diff --git a/sysdeps/generic/configure b/sysdeps/generic/configure index 574808f5e8..ddfa2cff80 100755 --- a/sysdeps/generic/configure +++ b/sysdeps/generic/configure @@ -32,7 +32,7 @@ $ac_func(); ; return 0; } EOF -if { (eval echo configure:36: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:36: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else diff --git a/sysdeps/unix/common/configure b/sysdeps/unix/common/configure index acd4ef23fe..9e26b276f2 100755 --- a/sysdeps/unix/common/configure +++ b/sysdeps/unix/common/configure @@ -15,7 +15,7 @@ int main() { extern char *sys_siglist[]; puts(*sys_siglist); ; return 0; } EOF -if { (eval echo configure:19: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:19: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* ac_cv_check_symbol_sys_siglist=yes else @@ -48,7 +48,7 @@ int main() { extern char *_sys_siglist[]; puts(*_sys_siglist); ; return 0; } EOF -if { (eval echo configure:52: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:52: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* ac_cv_check_symbol__sys_siglist=yes else @@ -85,7 +85,7 @@ int main() { $ctype[13]; ; return 0; } EOF -if { (eval echo configure:89: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:89: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* libc_cv_ctype_glue="$ctype"; break else diff --git a/sysdeps/unix/configure b/sysdeps/unix/configure index b7eff0368d..6398735140 100755 --- a/sysdeps/unix/configure +++ b/sysdeps/unix/configure @@ -33,7 +33,7 @@ $ac_func(); ; return 0; } EOF -if { (eval echo configure:37: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:37: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else |