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.
This commit is contained in:
Ulrich Drepper 1998-11-20 17:27:07 +00:00
parent bece5ca7c1
commit 5edb938769
19 changed files with 446 additions and 377 deletions

View File

@ -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> 1998-11-19 Ulrich Drepper <drepper@cygnus.com>
* posix/regex.c (regex_compile): Handle extra long class names * posix/regex.c (regex_compile): Handle extra long class names

195
FAQ
View File

@ -22,9 +22,9 @@ please let me know.
1.2. What compiler do I need to build GNU libc? 1.2. What compiler do I need to build GNU libc?
1.3. When I try to compile glibc I get only error messages. 1.3. When I try to compile glibc I get only error messages.
What's wrong? 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.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.7. What version of the Linux kernel headers should be used?
1.8. The compiler hangs while building iconvdata modules. What's 1.8. The compiler hangs while building iconvdata modules. What's
wrong? wrong?
@ -58,38 +58,41 @@ please let me know.
functions `stat', `lstat', `fstat', and `mknod' and while functions `stat', `lstat', `fstat', and `mknod' and while
linking on my Linux system I get error messages. How is linking on my Linux system I get error messages. How is
this supposed to work? 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? 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? 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? 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. 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. 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. RPC: Unable to receive; errno = Connection refused" when using NIS.
2.14. After installing glibc name resolving doesn't work properly. 2.15. After installing glibc name resolving doesn't work properly.
2.15. How do I create the databases for NSS? 2.16. How do I create the databases for NSS?
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? 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) `who', show incorrect information about the (number of)
users on my system. Why? 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? 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 I get
XXX: Symbol `_sys_errlist' has different size in shared XXX: Symbol `_sys_errlist' has different size in shared
object, consider re-linking object, consider re-linking
Why? What should I do? Why? What should I do?
2.20. What do I need for C++ development? 2.21. What do I need for C++ development?
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? 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. 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 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 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). (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. 1.3. When I try to compile glibc I get only error messages.
What's wrong? 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 {UD} You definitely need GNU make to translate GNU libc. No other make
program has the needed functionality. program has the needed functionality.
We recommend version GNU make version 3.75. Versions 3.76 and 3.76.1 have We recommend version GNU make version 3.75 or 3.77. Versions before 3.75
bugs which appear when building big projects like GNU libc. Versions before have bugs and/or are missing features. Version 3.76 has bugs which
3.74 have bugs and/or are missing features. appear when building big projects like GNU libc. 3.76.1 appears to work but
some people have reported problems.
1.4. Do I need a special linker or archiver? 1.4. Do I need a special linker or assembler?
{UD} You may be able to use your system linker, but GNU libc works best with {ZW} If you want a shared library, you need a linker and assembler that
GNU binutils. 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.
On systems where the native linker does not support weak symbols you will For Linux or Hurd, you want binutils 2.8.1.0.23, 2.9.1, or 2.9.1.0.15 or
not get a fully ISO C compliant C library. Generally speaking you should higher. These are the only versions we've tested and found reliable. Other
use the GNU binutils if they provide at least the same functionality as your versions after 2.8.1.0.23 may work but we don't recommend them, especially
system's tools. not when C++ is involved. Earlier versions do not work at all.
Always get the newest release of GNU binutils available. Older releases are Other operating systems may come with system tools that have all the
known to have bugs that prevent a successful compilation. necessary features, but this is moot because glibc hasn't been ported to
them.
{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.
{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.
1.5. Which compiler should I use for powerpc? 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. 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 :-). {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 site. (We distribute compiled message catalogs, but they may not be
updated in patches.) updated in patches.)
* Some files depend on special tools. E.g., files ending in .gperf * Some files are built with special tools. E.g., files ending in .gperf
need a `gperf' program. The GNU version (part of libg++) is known need a `gperf' program. The GNU version (now available in a separate
to work while some vendor versions do not. 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. You should not need these tools unless you change the source files.
* Some scripts need perl5 - but at the moment those scripts are not * Perl 5 is needed if you wish to test an installation of GNU libc
vital for building and installing GNU libc (some data files will not as the primary C library.
be created).
* When compiling for Linux, the header files of the Linux kernel must * When compiling for Linux, the header files of the Linux kernel must
be available to the compiler as <linux/*.h> and <asm/*.h>. 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 headers to use, give configure the --with-headers switch
(e.g. --with-headers=/usr/src/linux-2.1.107/include). (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 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 kernel sources to the 2.1 tree, do `make oldconfig', and say no to all the
new options. new options.
@ -307,8 +308,9 @@ new options.
1.8. The compiler hangs while building iconvdata modules. What's 1.8. The compiler hangs while building iconvdata modules. What's
wrong? wrong?
{ZW} This is a problem of older GCC. Initialization of large static arrays {ZW} This is a problem with old versions of GCC. Initialization of large
is very slow. The compiler will eventually finish; give it time. 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. 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 ) 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? glibc 2.x?
{AJ} There's only correct support for glibc 2.0.x in gcc 2.7.2.3 or later. {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. 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? were used on my Linux libc5 based system. Why?
{UD} The `gencat' utility provided with glibc complies to the XPG standard. {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? behavior is not localized (e.g. collating order); why?
{ZW} Translated messages are automatically installed, but the locale {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. 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. 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 {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 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. continues using NIS.
{TK} For faster NIS lookups, glibc uses the /var/yp/binding/ files from {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 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. RPC: Unable to receive; errno = Connection refused" when using NIS.
{TK} You need a ypbind version which is 64bit clean. Some versions are not {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. 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 {AJ} You probably should read the manual section describing nsswitch.conf
(just type `info libc "NSS Configuration File"'). The NSS configuration (just type `info libc "NSS Configuration File"'). The NSS configuration
file is usually the culprit. 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 {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 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. 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? into my Linux source tree. Is that wrong?
{PB} This was necessary for libc5, but is not correct when using glibc. {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. /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) `who', show incorrect information about the (number of)
users on my system. Why? users on my system. Why?
{MK} See question 3.2. {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? errors about undefined symbols. What went wrong?
{AJ} The problem is caused either by wrong program code or tools. In the {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. 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 I get
XXX: Symbol `_sys_errlist' has different size in shared XXX: Symbol `_sys_errlist' has different size in shared
object, consider re-linking 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. 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 {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++ 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 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 libstdc++ 2.8.1.1, you need to modify libstdc++ a bit. A patch is available
as: as:
ftp://alpha.gnu.org/gnu/libstdc++-2.8.1.1-glibc2.1-diff.gz 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 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 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 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) compiled for 2.0 is not compatible due to the new Large File Support (LFS)
in version 2.1. in version 2.1.
{UD} But since in the case of a shared libstdc++ the version numbers should {UD} But since in the case of a shared libstdc++ the version numbers should
be different existing programs will continue to work. 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? which is not acceptable for me. What can I do?
{AJ} NSS (for details just type `info libc "Name Service Switch"') won't {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. 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. errors whenever I try to link any program.
{ZW} This happens when you have installed glibc as the primary C library but {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. 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 {UD} You cannot use nscd with Linux 2.0.*. There is functionality missing
is functionality missing in the kernel and work-arounds are not suitable. in the kernel and work-arounds are not suitable. Besides, some parts of the
Beside this some parts of the kernel are too buggy when it comes to using kernel are too buggy when it comes to using threads.
threads.
So you have the possibilities to run Linux 2.0.* or update to a higher If you need nscd, you have to use a 2.1 kernel.
version and start using nscd.
Note that I have at this point no information about any other platform. Note that I have at this point no information about any other platform.

View File

@ -789,14 +789,13 @@ $(common-objpfx)sysd-dirs: $(common-objpfx)config.make $(all-Subdirs-files)
all-Depend-files = $(wildcard $(..)*/Depend) all-Depend-files = $(wildcard $(..)*/Depend)
$(common-objpfx)sysd-sorted: $(..)scripts/gen-sorted.awk $(all-Depend-files) \ $(common-objpfx)sysd-sorted: $(..)scripts/gen-sorted.awk $(all-Depend-files) \
$(common-objpfx)sysd-dirs $(..)Makeconfig $(common-objpfx)sysd-dirs $(..)Makeconfig
(if test "$(all-Depend-files)"; then \ (files="$(all-Depend-files)"; \
for f in $(all-Depend-files); do \ for f in $$files; do \
dir=$${f%%/*}; \ dir=`echo $$f | sed 's/^$(..)\(.*\)\/[^/]*$$/\1/'`; \
while read on; do \ while read on; do \
echo "depend $$dir $$on"; \ echo "depend $$dir $$on"; \
done < $$f; \ done < $$f; \
done; \ done; \
fi; \
for f in $(all-subdirs); do \ for f in $(all-subdirs); do \
echo $$f; \ echo $$f; \
done \ done \

View File

@ -253,7 +253,8 @@ distribute := README README.libm INSTALL FAQ FAQ.in NOTES NEWS BUGS \
$(addprefix scripts/, \ $(addprefix scripts/, \
rellns-sh config.sub config.guess \ rellns-sh config.sub config.guess \
mkinstalldirs move-if-change install-sh \ 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)) distribute := $(strip $(distribute))
generated := $(generated) stubs.h generated := $(generated) stubs.h

11
aclocal.m4 vendored
View File

@ -116,6 +116,17 @@ if test -n "$path_binutils"; then
fi fi
AS=`$CC -print-prog-name=as` AS=`$CC -print-prog-name=as`
LD=`$CC -print-prog-name=ld` 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. # Determine whether we are using GNU binutils.
AC_CACHE_CHECK(whether $AS is GNU as, libc_cv_prog_as_gnu, AC_CACHE_CHECK(whether $AS is GNU as, libc_cv_prog_as_gnu,

View File

@ -29,9 +29,9 @@
((((__bsx) >> 8) & 0xff) | (((__bsx) & 0xff) << 8)); })) ((((__bsx) >> 8) & 0xff) | (((__bsx) & 0xff) << 8)); }))
#else #else
static __inline unsigned short int 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 #endif
@ -44,7 +44,7 @@ __bswap16 (unsigned short int x)
(((__bsx) & 0x0000ff00) << 8) | (((__bsx) & 0x000000ff) << 24)); })) (((__bsx) & 0x0000ff00) << 8) | (((__bsx) & 0x000000ff) << 24)); }))
#else #else
static __inline unsigned int static __inline unsigned int
__bswap32 (unsigned int x) __bswap_32 (unsigned int __bsx)
{ {
return ((((__bsx) & 0xff000000) >> 24) | (((__bsx) & 0x00ff0000) >> 8) | return ((((__bsx) & 0xff000000) >> 24) | (((__bsx) & 0x00ff0000) >> 8) |
(((__bsx) & 0x0000ff00) << 8) | (((__bsx) & 0x000000ff) << 24)); (((__bsx) & 0x0000ff00) << 8) | (((__bsx) & 0x000000ff) << 24));

229
configure vendored
View File

@ -1655,80 +1655,18 @@ if test -n "$path_binutils"; then
fi fi
AS=`$CC -print-prog-name=as` AS=`$CC -print-prog-name=as`
LD=`$CC -print-prog-name=ld` LD=`$CC -print-prog-name=ld`
AR=`$CC -print-prog-name=ar`
# 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
# 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. # 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 set dummy ${ac_tool_prefix}ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else 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. # Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2 set dummy ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1790,10 +1728,51 @@ else
fi fi
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. # 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 set dummy ${ac_tool_prefix}mig; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'ac_cv_prog_MIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1833,7 +1812,7 @@ fi
# check if ranlib is necessary # check if ranlib is necessary
echo $ac_n "checking whether ranlib is necessary""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_ranlib_necessary'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1867,7 +1846,7 @@ fi
# - two terminals occur directly after each other # - two terminals occur directly after each other
# - the path contains an element with a dot in it # - the path contains an element with a dot in it
echo $ac_n "checking LD_LIBRARY_PATH variable""... $ac_c" 1>&6 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 case ${LD_LIBRARY_PATH} in
[:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* ) [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
ld_library_path_setting="contains current directory" 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. # Extract the first word of "bash", so it can be a program name with args.
set dummy bash; ac_word=$2 set dummy bash; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'ac_cv_path_BASH'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else 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. # Extract the first word of "ksh", so it can be a program name with args.
set dummy ksh; ac_word=$2 set dummy ksh; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'ac_cv_path_KSH'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -1975,7 +1954,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args. # Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2 set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2006,7 +1985,7 @@ done
# Extract the first word of "perl", so it can be a program name with args. # Extract the first word of "perl", so it can be a program name with args.
set dummy perl; ac_word=$2 set dummy perl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else 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. # Extract the first word of "install-info", so it can be a program name with args.
set dummy install-info; ac_word=$2 set dummy install-info; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'ac_cv_path_INSTALL_INFO'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2072,7 +2051,7 @@ fi
if test "$INSTALL_INFO" != "no"; then if test "$INSTALL_INFO" != "no"; then
echo $ac_n "checking for old Debian install-info""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_old_debian_install_info'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2105,7 +2084,7 @@ fi
echo $ac_n "checking for signed size_t type""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_signed_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2129,12 +2108,12 @@ EOF
fi fi
echo $ac_n "checking for libc-friendly stddef.h""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_friendly_stddef'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 2138 "configure" #line 2117 "configure"
#include "confdefs.h" #include "confdefs.h"
#define __need_size_t #define __need_size_t
#define __need_wchar_t #define __need_wchar_t
@ -2149,7 +2128,7 @@ size_t size; wchar_t wchar;
if (&size == NULL || &wchar == NULL) abort (); if (&size == NULL || &wchar == NULL) abort ();
; return 0; } ; return 0; }
EOF 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* rm -rf conftest*
libc_cv_friendly_stddef=yes libc_cv_friendly_stddef=yes
else else
@ -2168,7 +2147,7 @@ override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
fi fi
echo $ac_n "checking whether we need to use -P to assemble .S files""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_need_minus_P'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2191,7 +2170,7 @@ asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
fi fi
echo $ac_n "checking for assembler global-symbol directive""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_asm_global_directive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2221,7 +2200,7 @@ EOF
fi fi
echo $ac_n "checking for .set assembler directive""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_asm_set_directive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2255,7 +2234,7 @@ EOF
fi fi
echo $ac_n "checking for .symver assembler directive""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_asm_symver_directive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2274,7 +2253,7 @@ fi
echo "$ac_t""$libc_cv_asm_symver_directive" 1>&6 echo "$ac_t""$libc_cv_asm_symver_directive" 1>&6
echo $ac_n "checking for ld --version-script""... $ac_c" 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 if eval "test \"`echo '$''{'libc_cv_ld_version_script_option'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2297,7 +2276,7 @@ EOF
if { ac_try='${CC-cc} $CFLAGS -shared -o conftest.so conftest.o if { ac_try='${CC-cc} $CFLAGS -shared -o conftest.so conftest.o
-nostartfiles -nostdlib -nostartfiles -nostdlib
-Wl,--version-script,conftest.map -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 then
libc_cv_ld_version_script_option=yes libc_cv_ld_version_script_option=yes
else else
@ -2335,7 +2314,7 @@ if test $VERSIONING = no; then
fi fi
if test $elf = yes; then if test $elf = yes; then
echo $ac_n "checking for .previous assembler directive""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_asm_previous_directive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2343,7 +2322,7 @@ else
.section foo_section .section foo_section
.previous .previous
EOF 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 libc_cv_asm_previous_directive=yes
else else
libc_cv_asm_previous_directive=no libc_cv_asm_previous_directive=no
@ -2359,7 +2338,7 @@ EOF
else else
echo $ac_n "checking for .popsection assembler directive""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_asm_popsection_directive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2367,7 +2346,7 @@ else
.pushsection foo_section .pushsection foo_section
.popsection .popsection
EOF 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 libc_cv_asm_popsection_directive=yes
else else
libc_cv_asm_popsection_directive=no libc_cv_asm_popsection_directive=no
@ -2387,12 +2366,12 @@ fi
if test $elf != yes; then if test $elf != yes; then
echo $ac_n "checking for .init and .fini sections""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_have_initfini'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 2396 "configure" #line 2375 "configure"
#include "confdefs.h" #include "confdefs.h"
int main() { int main() {
@ -2401,7 +2380,7 @@ asm (".section .init");
asm (".text"); asm (".text");
; return 0; } ; return 0; }
EOF 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* rm -rf conftest*
libc_cv_have_initfini=yes libc_cv_have_initfini=yes
else else
@ -2429,19 +2408,19 @@ if test $elf = yes; then
else else
if test $ac_cv_prog_cc_works = yes; then if test $ac_cv_prog_cc_works = yes; then
echo $ac_n "checking for _ prefix on C symbol names""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_asm_underscores'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 2438 "configure" #line 2417 "configure"
#include "confdefs.h" #include "confdefs.h"
asm ("_glibc_foobar:"); asm ("_glibc_foobar:");
int main() { int main() {
glibc_foobar (); glibc_foobar ();
; return 0; } ; return 0; }
EOF 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* rm -rf conftest*
libc_cv_asm_underscores=yes libc_cv_asm_underscores=yes
else else
@ -2456,17 +2435,17 @@ fi
echo "$ac_t""$libc_cv_asm_underscores" 1>&6 echo "$ac_t""$libc_cv_asm_underscores" 1>&6
else else
echo $ac_n "checking for _ prefix on C symbol names""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_asm_underscores'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 2465 "configure" #line 2444 "configure"
#include "confdefs.h" #include "confdefs.h"
void underscore_test(void) { void underscore_test(void) {
return; } return; }
EOF 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 if grep _underscore_test conftest* >/dev/null; then
rm -f conftest* rm -f conftest*
libc_cv_asm_underscores=yes libc_cv_asm_underscores=yes
@ -2498,7 +2477,7 @@ if test $elf = yes; then
fi fi
echo $ac_n "checking for assembler .weak directive""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_asm_weak_directive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2521,7 +2500,7 @@ echo "$ac_t""$libc_cv_asm_weak_directive" 1>&6
if test $libc_cv_asm_weak_directive = no; then if test $libc_cv_asm_weak_directive = no; then
echo $ac_n "checking for assembler .weakext directive""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_asm_weakext_directive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2559,7 +2538,7 @@ EOF
fi fi
echo $ac_n "checking for ld --no-whole-archive""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_ld_no_whole_archive'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2570,7 +2549,7 @@ __throw () {}
EOF EOF
if { ac_try='${CC-cc} $CFLAGS if { ac_try='${CC-cc} $CFLAGS
-nostdlib -nostartfiles -Wl,--no-whole-archive -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 libc_cv_ld_no_whole_archive=yes
else else
libc_cv_ld_no_whole_archive=no libc_cv_ld_no_whole_archive=no
@ -2584,7 +2563,7 @@ if test $libc_cv_ld_no_whole_archive = yes; then
fi fi
echo $ac_n "checking for gcc -fexceptions""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_gcc_exceptions'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2595,7 +2574,7 @@ __throw () {}
EOF EOF
if { ac_try='${CC-cc} $CFLAGS if { ac_try='${CC-cc} $CFLAGS
-nostdlib -nostartfiles -fexceptions -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 libc_cv_gcc_exceptions=yes
else else
libc_cv_gcc_exceptions=no libc_cv_gcc_exceptions=no
@ -2610,14 +2589,14 @@ fi
if test "$base_machine" = alpha ; then if test "$base_machine" = alpha ; then
echo $ac_n "checking for function ..ng prefix""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_gcc_alpha_ng_prefix'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.c <<\EOF cat > conftest.c <<\EOF
foo () { } foo () { }
EOF 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 then
libc_cv_gcc_alpha_ng_prefix=yes libc_cv_gcc_alpha_ng_prefix=yes
else 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 # Check for a bug present in at least versions 2.8.x of GCC
# and versions 1.0.x of EGCS. # and versions 1.0.x of EGCS.
echo $ac_n "checking whether clobbering cr0 causes problems""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_c_asmcr0_bug'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.$ac_ext <<EOF cat > conftest.$ac_ext <<EOF
#line 2653 "configure" #line 2632 "configure"
#include "confdefs.h" #include "confdefs.h"
int tester(int x) { asm ("" : : : "cc"); return x & 123; } int tester(int x) { asm ("" : : : "cc"); return x & 123; }
int main() { int main() {
; return 0; } ; return 0; }
EOF 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* rm -rf conftest*
libc_cv_c_asmcr0_bug='no' libc_cv_c_asmcr0_bug='no'
else else
@ -2678,12 +2657,12 @@ fi
fi fi
echo $ac_n "checking for DWARF2 unwind info support""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_gcc_dwarf2_unwind_info'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.c <<EOF cat > conftest.c <<EOF
#line 2687 "configure" #line 2666 "configure"
static char __EH_FRAME_BEGIN__; static char __EH_FRAME_BEGIN__;
_start () _start ()
{ {
@ -2710,7 +2689,7 @@ __bzero () {}
EOF EOF
if { ac_try='${CC-cc} $CFLAGS -DCHECK__register_frame_info if { ac_try='${CC-cc} $CFLAGS -DCHECK__register_frame_info
-nostdlib -nostartfiles -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 libc_cv_gcc_dwarf2_unwind_info=static
else else
libc_cv_gcc_dwarf2_unwind_info=no libc_cv_gcc_dwarf2_unwind_info=no
@ -2718,7 +2697,7 @@ fi
if test $libc_cv_gcc_dwarf2_unwind_info = no; then if test $libc_cv_gcc_dwarf2_unwind_info = no; then
if { ac_try='${CC-cc} $CFLAGS -DCHECK__register_frame if { ac_try='${CC-cc} $CFLAGS -DCHECK__register_frame
-nostdlib -nostartfiles -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 libc_cv_gcc_dwarf2_unwind_info=yes
else else
libc_cv_gcc_dwarf2_unwind_info=no libc_cv_gcc_dwarf2_unwind_info=no
@ -2748,12 +2727,12 @@ EOF
esac esac
echo $ac_n "checking for __builtin_expect""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_gcc_builtin_expect'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
cat > conftest.c <<EOF cat > conftest.c <<EOF
#line 2757 "configure" #line 2736 "configure"
int foo (int a) int foo (int a)
{ {
a = __builtin_expect (a, 10); a = __builtin_expect (a, 10);
@ -2761,7 +2740,7 @@ int foo (int a)
} }
EOF EOF
if { ac_try='${CC-cc} $CFLAGS -nostdlib -nostartfiles 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 libc_cv_gcc_builtin_expect=yes
else else
libc_cv_gcc_builtin_expect=no libc_cv_gcc_builtin_expect=no
@ -2822,7 +2801,7 @@ if test "$uname" = "sysdeps/generic"; then
fi fi
echo $ac_n "checking OS release for uname""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_uname_release'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2844,7 +2823,7 @@ echo "$ac_t""$libc_cv_uname_release" 1>&6
uname_release="$libc_cv_uname_release" uname_release="$libc_cv_uname_release"
echo $ac_n "checking OS version for uname""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'libc_cv_uname_version'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else
@ -2866,7 +2845,7 @@ else
fi fi
echo $ac_n "checking stdio selection""... $ac_c" 1>&6 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 case $stdio in
libio) cat >> confdefs.h <<\EOF 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 # Test for old glibc 2.0.x headers so that they can be removed properly
# Search only in includedir. # Search only in includedir.
echo $ac_n "checking for old glibc 2.0.x headers""... $ac_c" 1>&6 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" if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
then then
old_glibc_headers=yes old_glibc_headers=yes
@ -2934,7 +2913,7 @@ if test $shared = default; then
fi fi
echo $ac_n "checking whether -fPIC is default""... $ac_c" 1>&6 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 if eval "test \"`echo '$''{'pic_default'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6 echo $ac_n "(cached) $ac_c" 1>&6
else else

View File

@ -472,8 +472,6 @@ fi
AC_SUBST(cross_compiling) AC_SUBST(cross_compiling)
AC_PROG_CPP AC_PROG_CPP
LIBC_PROG_BINUTILS LIBC_PROG_BINUTILS
AC_CHECK_TOOL(AR, ar)
AC_CHECK_TOOL(RANLIB, ranlib, :)
AC_CHECK_TOOL(MIG, mig) AC_CHECK_TOOL(MIG, mig)
# if using special system headers, find out the compiler's sekrit # if using special system headers, find out the compiler's sekrit

View File

@ -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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@ -27,5 +27,12 @@
#define ADD_VARIABLES addr, len, type #define ADD_VARIABLES addr, len, type
#define NEED_H_ERRNO 1 #define NEED_H_ERRNO 1
#define NEED__RES 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" #include "../nss/getXXbyYY_r.c"

View File

@ -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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@ -32,6 +32,10 @@
#define ADD_VARIABLES name #define ADD_VARIABLES name
#define NEED_H_ERRNO 1 #define NEED_H_ERRNO 1
#define NEED__RES 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 HANDLE_DIGITS_DOTS 1
#define HAVE_LOOKUP_BUFFER 1 #define HAVE_LOOKUP_BUFFER 1

View File

@ -1020,7 +1020,7 @@ atan2_test (void)
check_eps ("atan2 (0.7,1) == 0.61072...", FUNC(atan2) (0.7,1), check_eps ("atan2 (0.7,1) == 0.61072...", FUNC(atan2) (0.7,1),
0.6107259643892086165L, CHOOSE(3e-17L, 0, 0)); 0.6107259643892086165L, CHOOSE(3e-17L, 0, 0));
check_eps ("atan2 (0.4,0.0003) == 1.57004...", FUNC(atan2) (0.4, 0.0003), 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 (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, check_eps ("log (1/e) == -1", FUNC(log) (1.0 / M_El), -1,
CHOOSE (2e-18L, 0, 0)); 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, check_eps ("log (10) == M_LN10", FUNC(log) (10), M_LN10l,
CHOOSE (1e-18L, 0, 0)); CHOOSE (1e-18L, 0, 0));
check_eps ("log (0.7) == -0.3566749439...", FUNC(log) (0.7), 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, check_eps ("real(cexp(0.7 + i 1.2)) == 0.72969...", __real__ result,
0.7296989091503236012L, CHOOSE(6e-17L, 2e-16, 2e-7)); 0.7296989091503236012L, CHOOSE(6e-17L, 2e-16, 2e-7));
check_eps ("imag(cexp(0.7 + i 1.2)) == 1.87689...", __imag__ result, 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)); result = FUNC(cexp) (BUILD_COMPLEX (-2, -3));
check_eps ("real(cexp(-2 - i 3)) == -0.13398...", __real__ result, 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, check_eps ("imag(cexp(-2 - i 3)) == -0.01909...", __imag__ result,
-0.0190985162611351964L, CHOOSE(4e-20L, 0, 2e-9)); -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, check_eps ("real(cacosh(0.7 + i 1.2)) == 1.09276...", __real__ result,
1.0927647857577371459L, CHOOSE(4e-17L, 3e-16, 2e-7)); 1.0927647857577371459L, CHOOSE(4e-17L, 3e-16, 2e-7));
check_eps ("imag(cacosh(0.7 + i 1.2)) == 1.13518...", __imag__ result, 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)); result = FUNC(cacosh) (BUILD_COMPLEX (-2, -3));
check_eps ("real(cacosh(-2 - i 3)) == -1.98338...", __real__ result, check_eps ("real(cacosh(-2 - i 3)) == -1.98338...", __real__ result,
-1.9833870299165354323L, CHOOSE (2e-18L, 3e-16, 9e-7)); -1.9833870299165354323L, CHOOSE (2e-18L, 3e-16, 9e-7));
check_eps ("imag(cacosh(-2 - i 3)) == 2.14144...", __imag__ result, 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, check_eps ("real(casinh(-2 - i 3)) == -1.96863...", __real__ result,
-1.9686379257930962917L, CHOOSE(7e-19L, 2e-15, 3e-6)); -1.9686379257930962917L, CHOOSE(7e-19L, 2e-15, 3e-6));
check_eps ("imag(casinh(-2 - i 3)) == -0.96465...", __imag__ result, 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)); result = FUNC(catanh) (BUILD_COMPLEX (0.7, 1.2));
check_eps ("real(catanh(0.7 + i 1.2)) == 0.26007...", __real__ result, 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, check_eps ("imag(catanh(0.7 + i 1.2)) == 0.97024...", __imag__ result,
0.9702403077950989849L, CHOOSE (3e-17, 2e-16, 4e-7)); 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, check_eps ("real(clog(0.7 + i 1.2)) == 0.32876...", __real__ result,
0.3287600014583970919L, CHOOSE(5e-17L, 6e-17, 3e-8)); 0.3287600014583970919L, CHOOSE(5e-17L, 6e-17, 3e-8));
check_eps ("imag(clog(0.7 + i 1.2)) == 1.04272...", __imag__ result, 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)); result = FUNC(clog) (BUILD_COMPLEX (-2, -3));
check_eps ("real(clog(-2 - i 3)) == 1.28247...", __real__ result, 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, check_eps ("real(clog10(0.7 + i 1.2)) == 0.14277...", __real__ result,
0.1427786545038868803L, CHOOSE(2e-17L, 6e-17, 2e-8)); 0.1427786545038868803L, CHOOSE(2e-17L, 6e-17, 2e-8));
check_eps ("imag(clog10(0.7 + i 1.2)) == 0.45284...", __imag__ result, 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)); result = FUNC(clog10) (BUILD_COMPLEX (-2, -3));
check_eps ("real(clog10(-2 - i 3)) == 0.55697...", __real__ result, 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)); result = FUNC (cpow) (BUILD_COMPLEX (2, 0), BUILD_COMPLEX (10, 0));
check_eps ("real(cpow (2 + i0), (10 + i0)) == 1024", __real__ result, 1024, 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); 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)); result = FUNC (cpow) (BUILD_COMPLEX (M_El, 0), BUILD_COMPLEX (0, 2 * M_PIl));

View File

@ -22,6 +22,9 @@
#ifdef USE_NSCD #ifdef USE_NSCD
# include <nscd/nscd_proto.h> # include <nscd/nscd_proto.h>
#endif #endif
#ifdef NEED__RES_HCONF
# include <resolv/res_hconf.h>
#endif
/*******************************************************************\ /*******************************************************************\
|* Here we assume several symbols to be defined: *| |* Here we assume several symbols to be defined: *|
@ -153,6 +156,10 @@ INTERNAL (REENTRANT_NAME) (ADD_PARAMS, LOOKUP_TYPE *resbuf, char *buffer,
return -1; return -1;
} }
#endif /* need _res */ #endif /* need _res */
#ifdef NEED__RES_HCONF
if (!_res_hconf.initialized)
_res_hconf_init ();
#endif /* need _res_hconf */
} }
} }
else else
@ -186,6 +193,9 @@ INTERNAL (REENTRANT_NAME) (ADD_PARAMS, LOOKUP_TYPE *resbuf, char *buffer,
done: done:
#endif #endif
*result = status == NSS_STATUS_SUCCESS ? resbuf : NULL; *result = status == NSS_STATUS_SUCCESS ? resbuf : NULL;
#ifdef POSTPROCESS
POSTPROCESS;
#endif
return status == NSS_STATUS_SUCCESS ? 0 : -1; return status == NSS_STATUS_SUCCESS ? 0 : -1;
} }

View File

@ -23,9 +23,9 @@ subdir := resolv
headers := resolv.h netdb.h arpa/nameser.h sys/bitypes.h headers := resolv.h netdb.h arpa/nameser.h sys/bitypes.h
distribute := ../conf/portability.h mapv4v6addr.h mapv4v6hostent.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 tests = tst-aton

View File

@ -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). Contributed by David Mosberger (davidm@azstarnet.com).
The GNU C Library is free software; you can redistribute it and/or 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 <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <net/if.h>
#include "res_hconf.h" #include "res_hconf.h"
@ -46,19 +47,21 @@ to the original implementation:
#define ENV_MULTI "RESOLV_MULTI" #define ENV_MULTI "RESOLV_MULTI"
#define ENV_REORDER "RESOLV_REORDER" #define ENV_REORDER "RESOLV_REORDER"
static const char * arg_service_list (const char *, int, const char *, static const char *arg_service_list (const char *, int, const char *,
unsigned); unsigned int);
static const char * arg_trimdomain_list (const char *, int, const char *, static const char *arg_trimdomain_list (const char *, int, const char *,
unsigned); unsigned int);
static const char * arg_spoof (const char *, int, const char *, unsigned); static const char *arg_spoof (const char *, int, const char *, unsigned int);
static const char * arg_bool (const char *, int, const char *, unsigned); static const char *arg_bool (const char *, int, const char *, unsigned int);
static struct cmd { static struct cmd
const char * name; {
const char * (*parse_args)(const char * filename, int line_num, const char *name;
const char * args, unsigned arg); const char *(*parse_args) (const char * filename, int line_num,
unsigned arg;; const char * args, unsigned int arg);
} cmd[] = { unsigned int arg;
} cmd[] =
{
{"order", arg_service_list, 0}, {"order", arg_service_list, 0},
{"trim", arg_trimdomain_list, 0}, {"trim", arg_trimdomain_list, 0},
{"spoof", arg_spoof, 0}, {"spoof", arg_spoof, 0},
@ -68,10 +71,12 @@ static struct cmd {
{"reorder", arg_bool, HCONF_FLAG_REORDER} {"reorder", arg_bool, HCONF_FLAG_REORDER}
}; };
/* Structure containing the state. */
struct hconf _res_hconf;
/* Skip white space. */ /* Skip white space. */
static const char * static const char *
skip_ws (const char * str) skip_ws (const char *str)
{ {
while (isspace (*str)) ++str; while (isspace (*str)) ++str;
return str; return str;
@ -80,29 +85,32 @@ skip_ws (const char * str)
/* Skip until whitespace, comma, end of line, or comment character. */ /* Skip until whitespace, comma, end of line, or comment character. */
static const char * 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; return str;
} }
static const char * static const char *
arg_service_list (const char * fname, int line_num, const char * args, arg_service_list (const char *fname, int line_num, const char *args,
unsigned arg) unsigned int arg)
{ {
enum Name_Service service; enum Name_Service service;
const char * start; const char *start;
size_t len; size_t len;
int i; int i;
static struct { static struct
const char * name; {
enum Name_Service service; const char * name;
} svcs[] = { enum Name_Service service;
{"bind", SERVICE_BIND}, } svcs[] =
{"hosts", SERVICE_HOSTS}, {
{"nis", SERVICE_NIS}, {"bind", SERVICE_BIND},
}; {"hosts", SERVICE_HOSTS},
{"nis", SERVICE_NIS},
};
do do
{ {
@ -113,7 +121,7 @@ arg_service_list (const char * fname, int line_num, const char * args,
service = SERVICE_NONE; service = SERVICE_NONE;
for (i = 0; i < sizeof (svcs) / sizeof (svcs[0]); ++i) 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)) && len == strlen (svcs[i].name))
{ {
service = svcs[i].service; service = svcs[i].service;
@ -137,7 +145,9 @@ arg_service_list (const char * fname, int line_num, const char * args,
args = skip_ws (args); args = skip_ws (args);
switch (*args) switch (*args)
{ {
case ',': case ';': case ':': case ',':
case ';':
case ':':
args = skip_ws (++args); args = skip_ws (++args);
if (!*args || *args == '#') if (!*args || *args == '#')
{ {
@ -156,8 +166,8 @@ arg_service_list (const char * fname, int line_num, const char * args,
static const char * static const char *
arg_trimdomain_list (const char * fname, int line_num, const char * args, arg_trimdomain_list (const char *fname, int line_num, const char *args,
unsigned flag) unsigned int flag)
{ {
const char * start; const char * start;
size_t len; size_t len;
@ -176,7 +186,7 @@ arg_trimdomain_list (const char * fname, int line_num, const char * args,
return 0; return 0;
} }
_res_hconf.trimdomain[_res_hconf.num_trimdomains++] = _res_hconf.trimdomain[_res_hconf.num_trimdomains++] =
strndup (start, len); __strndup (start, len);
args = skip_ws (args); args = skip_ws (args);
switch (*args) switch (*args)
{ {
@ -199,21 +209,21 @@ arg_trimdomain_list (const char * fname, int line_num, const char * args,
static const char * 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; size_t len;
args = skip_string (args); args = skip_string (args);
len = args - start; 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); _res_hconf.flags &= ~(HCONF_FLAG_SPOOF | HCONF_FLAG_SPOOFALERT);
else else
{ {
_res_hconf.flags |= (HCONF_FLAG_SPOOF | HCONF_FLAG_SPOOFALERT); _res_hconf.flags |= (HCONF_FLAG_SPOOF | HCONF_FLAG_SPOOFALERT);
if ((len == 6 && strncasecmp (start, "nowarn", len) == 0) if ((len == 6 && __strncasecmp (start, "nowarn", len) == 0)
|| !(len == 4 && strncasecmp (start, "warn", len) == 0)) || !(len == 4 && __strncasecmp (start, "warn", len) == 0))
_res_hconf.flags &= ~HCONF_FLAG_SPOOFALERT; _res_hconf.flags &= ~HCONF_FLAG_SPOOFALERT;
} }
return args; return args;
@ -221,14 +231,14 @@ arg_spoof (const char * fname, int line_num, const char * args, unsigned flag)
static const char * 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; args += 2;
_res_hconf.flags |= flag; _res_hconf.flags |= flag;
} }
else if (strncasecmp (args, "off", 3) == 0) else if (__strncasecmp (args, "off", 3) == 0)
{ {
args += 3; args += 3;
_res_hconf.flags &= ~flag; _res_hconf.flags &= ~flag;
@ -244,10 +254,10 @@ arg_bool (const char * fname, int line_num, const char * args, unsigned flag)
static void 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; const char *start;
struct cmd * c = 0; struct cmd *c = 0;
size_t len; size_t len;
int i; int i;
@ -268,7 +278,7 @@ parse_line (const char * fname, int line_num, const char * str)
break; break;
} }
} }
if (!c) if (c == NULL)
{ {
fprintf (stderr, "%s: line %d: bad command `%s'\n", fprintf (stderr, "%s: line %d: bad command `%s'\n",
fname, line_num, start); fname, line_num, start);
@ -300,15 +310,18 @@ parse_line (const char * fname, int line_num, const char * str)
void void
_res_hconf_init (void) _res_hconf_init (void)
{ {
const char * hconf_name; const char *hconf_name;
int line_num = 0; int line_num = 0;
char buf[256], * end, * envval; char buf[256], *end, *envval;
FILE * fp; 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); hconf_name = getenv (ENV_HOSTCONF);
if (!hconf_name) if (hconf_name == NULL)
hconf_name = _PATH_HOSTCONF; hconf_name = _PATH_HOSTCONF;
fp = fopen (hconf_name, "r"); fp = fopen (hconf_name, "r");
@ -317,7 +330,7 @@ _res_hconf_init (void)
_res_hconf.service[_res_hconf.num_services++] = SERVICE_BIND; _res_hconf.service[_res_hconf.num_services++] = SERVICE_BIND;
else else
{ {
while (fgets (buf, sizeof (buf), fp)) while (fgets_unlocked (buf, sizeof (buf), fp))
{ {
++line_num; ++line_num;
end = strchr (buf, '\n'); end = strchr (buf, '\n');
@ -357,6 +370,8 @@ _res_hconf_init (void)
_res_hconf.num_trimdomains = 0; _res_hconf.num_trimdomains = 0;
arg_trimdomain_list (ENV_TRIM_OVERR, 1, envval, 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. */ Otherwise, nothing is changed. */
void 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 int num_ifs = -1; /* number of interfaces */
static struct netaddr { static struct netaddr
{
int addrtype; int addrtype;
union { union
struct { {
struct
{
u_int32_t addr; u_int32_t addr;
u_int32_t mask; u_int32_t mask;
} ipv4 } ipv4
} u; } u;
} * ifaddrs; } *ifaddrs;
if (hp->h_addrtype != AF_INET) if (hp->h_addrtype != AF_INET)
return; /* can't deal with anything but IPv4 for now... */ 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) if (num_ifs <= 0)
{ {
struct ifconf ifs; struct ifconf ifs;
struct ifreq * ifr; struct ifreq *ifr;
size_t size, num; size_t size, num;
int sd; int sd;
@ -393,7 +411,7 @@ _res_hconf_reorder_addrs (struct hostent * hp)
num_ifs = 0; num_ifs = 0;
sd = socket (AF_INET, SOCK_DGRAM, 0); sd = __socket (AF_INET, SOCK_DGRAM, 0);
if (sd < 0) if (sd < 0)
return; return;
@ -404,18 +422,20 @@ _res_hconf_reorder_addrs (struct hostent * hp)
interfaces, not memory */ interfaces, not memory */
size = 0; size = 0;
ifs.ifc_buf = 0; ifs.ifc_buf = 0;
do { do
size += 4 * sizeof (struct ifreq); {
ifs.ifc_buf = realloc (ifs.ifs_buf, size); size += 4 * sizeof (struct ifreq);
if (!ifs.ifc_buf) ifs.ifc_buf = realloc (ifs.ifs_buf, size);
{ if (ifs.ifc_buf == NULL)
close (sd); {
return; close (sd);
} return;
ifs.ifc_len = size; }
if (ioctl (sd, SIOCGIFCONF, &ifs) < 0) ifs.ifc_len = size;
goto cleanup; if (__ioctl (sd, SIOCGIFCONF, &ifs) < 0)
} while (size - ifs.ifc_len < sizeof (struct ifreq)); goto cleanup;
}
while (size - ifs.ifc_len < sizeof (struct ifreq));
num = 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; goto cleanup;
ifr = ifs.ifc_req; ifr = ifs.ifc_req;
for (i = 0; i < num; ++i) { for (i = 0; i < num; ++i)
if (ifr->ifr_addr.sa_family != AF_INET) {
continue; if (ifr->ifr_addr.sa_family != AF_INET)
ifaddrs[num_ifs].addrtype = AF_INET; continue;
ifaddrs[num_ifs].addrtype = AF_INET;
memcpy (&ifaddrs[num_ifs].u.ipv4.addr, memcpy (&ifaddrs[num_ifs].u.ipv4.addr,
&((struct sockaddr_in *)ifr->ifr_addr)->sin_addr, 4); &((struct sockaddr_in *)ifr->ifr_addr)->sin_addr, 4);
if (ioctl (sd, SIOCGIFNETMASK, if) < 0) if (__ioctl (sd, SIOCGIFNETMASK, if) < 0)
continue; continue;
memcpy (&ifaddrs[num_ifs].u.ipv4.mask, memcpy (&ifaddrs[num_ifs].u.ipv4.mask,
((struct sockaddr_in *)ifr->ifr_mask)->sin_addr, 4); ((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: */ /* just keep enough memory to hold all the interfaces we want: */
ifaddrs = realloc (ifaddrs, num_ifs * sizeof (ifaddrs[0])); 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) 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[i] = hp->h_addr_list[0];
hp->h_addr_list[0] = tmp; hp->h_addr_list[0] = tmp;
return; return;
@ -481,20 +502,20 @@ _res_hconf_reorder_addrs (struct hostent * hp)
same domainname could be trimmed multiple times. I believe this same domainname could be trimmed multiple times. I believe this
was unintentional. */ was unintentional. */
void void
_res_hconf_trim_domain (char * hostname) _res_hconf_trim_domain (char *hostname)
{ {
size_t hostname_len, trim_len; size_t hostname_len, trim_len;
int i; int i;
hostname_len = strlen(hostname); hostname_len = strlen (hostname);
for (i = 0; i < _res_hconf.num_trimdomains; ++i) 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 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'; hostname[hostname_len - trim_len] = '\0';
break; break;
@ -506,7 +527,7 @@ _res_hconf_trim_domain (char * hostname)
/* Trim all hostnames/aliases in HP according to the trimdomain list. /* Trim all hostnames/aliases in HP according to the trimdomain list.
Notice that HP is modified inplace! */ Notice that HP is modified inplace! */
void void
_res_hconf_trim_domains (struct hostent * hp) _res_hconf_trim_domains (struct hostent *hp)
{ {
int i; int i;
@ -517,32 +538,3 @@ _res_hconf_trim_domains (struct hostent * hp)
for (i = 0; hp->h_aliases[i]; ++i) for (i = 0; hp->h_aliases[i]; ++i)
_res_hconf_trim_domain (hp->h_aliases[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

View File

@ -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). Contributed by David Mosberger (davidm@azstarnet.com).
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -23,28 +23,32 @@
#define TRIMDOMAINS_MAX 4 #define TRIMDOMAINS_MAX 4
enum Name_Service { enum Name_Service
{
SERVICE_NONE = 0, SERVICE_NONE = 0,
SERVICE_BIND, SERVICE_HOSTS, SERVICE_NIS, SERVICE_BIND, SERVICE_HOSTS, SERVICE_NIS,
SERVICE_MAX SERVICE_MAX
}; };
struct hconf { struct hconf
int num_services; {
enum Name_Service service[SERVICE_MAX]; int initialized;
int num_trimdomains; int num_services;
const char * trimdomain[TRIMDOMAINS_MAX]; enum Name_Service service[SERVICE_MAX];
unsigned flags; int num_trimdomains;
const char *trimdomain[TRIMDOMAINS_MAX];
unsigned int flags;
# define HCONF_FLAG_INITED (1 << 0) /* initialized? */ # define HCONF_FLAG_INITED (1 << 0) /* initialized? */
# define HCONF_FLAG_SPOOF (1 << 1) /* refuse spoofed addresses */ # define HCONF_FLAG_SPOOF (1 << 1) /* refuse spoofed addresses */
# define HCONF_FLAG_SPOOFALERT (1 << 2) /* syslog warning of spoofed */ # define HCONF_FLAG_SPOOFALERT (1 << 2) /* syslog warning of spoofed */
# define HCONF_FLAG_REORDER (1 << 3) /* list best address first */ # define HCONF_FLAG_REORDER (1 << 3) /* list best address first */
# define HCONF_FLAG_MULTI (1 << 4) /* see comments for gethtbyname() */ # 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_init (void);
extern void _res_hconf_trim_domain (char * domain); extern void _res_hconf_trim_domain (char *domain);
extern void _res_hconf_trim_domains (struct hostent * hp); extern void _res_hconf_trim_domains (struct hostent *hp);
extern void _res_hconf_reorder_addrs (struct hostent * hp); extern void _res_hconf_reorder_addrs (struct hostent *hp);
#endif /* _RES_HCONF_H_ */ #endif /* _RES_HCONF_H_ */

View File

@ -29,9 +29,9 @@
((((__bsx) >> 8) & 0xff) | (((__bsx) & 0xff) << 8)); })) ((((__bsx) >> 8) & 0xff) | (((__bsx) & 0xff) << 8)); }))
#else #else
static __inline unsigned short int 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 #endif
@ -44,7 +44,7 @@ __bswap16 (unsigned short int x)
(((__bsx) & 0x0000ff00) << 8) | (((__bsx) & 0x000000ff) << 24)); })) (((__bsx) & 0x0000ff00) << 8) | (((__bsx) & 0x000000ff) << 24)); }))
#else #else
static __inline unsigned int static __inline unsigned int
__bswap32 (unsigned int x) __bswap_32 (unsigned int __bsx)
{ {
return ((((__bsx) & 0xff000000) >> 24) | (((__bsx) & 0x00ff0000) >> 8) | return ((((__bsx) & 0xff000000) >> 24) | (((__bsx) & 0x00ff0000) >> 8) |
(((__bsx) & 0x0000ff00) << 8) | (((__bsx) & 0x000000ff) << 24)); (((__bsx) & 0x0000ff00) << 8) | (((__bsx) & 0x000000ff) << 24));

View File

@ -32,7 +32,7 @@ $ac_func();
; return 0; } ; return 0; }
EOF 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* rm -rf conftest*
eval "ac_cv_func_$ac_func=yes" eval "ac_cv_func_$ac_func=yes"
else else

View File

@ -15,7 +15,7 @@ int main() {
extern char *sys_siglist[]; puts(*sys_siglist); extern char *sys_siglist[]; puts(*sys_siglist);
; return 0; } ; return 0; }
EOF 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* rm -rf conftest*
ac_cv_check_symbol_sys_siglist=yes ac_cv_check_symbol_sys_siglist=yes
else else
@ -48,7 +48,7 @@ int main() {
extern char *_sys_siglist[]; puts(*_sys_siglist); extern char *_sys_siglist[]; puts(*_sys_siglist);
; return 0; } ; return 0; }
EOF 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* rm -rf conftest*
ac_cv_check_symbol__sys_siglist=yes ac_cv_check_symbol__sys_siglist=yes
else else
@ -85,7 +85,7 @@ int main() {
$ctype[13]; $ctype[13];
; return 0; } ; return 0; }
EOF 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* rm -rf conftest*
libc_cv_ctype_glue="$ctype"; break libc_cv_ctype_glue="$ctype"; break
else else

View File

@ -33,7 +33,7 @@ $ac_func();
; return 0; } ; return 0; }
EOF 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* rm -rf conftest*
eval "ac_cv_func_$ac_func=yes" eval "ac_cv_func_$ac_func=yes"
else else