Remove some old cruft variables from configure.
[jlayton/glibc.git] / configure.in
1 dnl Process this file with autoconf to produce a configure script.
2 dnl Note we do not use AC_PREREQ here!  See aclocal.m4 for what we use instead.
3 AC_INIT([GNU C Library], [(see version.h)], [http://sourceware.org/bugzilla/], [glibc])
4 AC_CONFIG_SRCDIR([include/features.h])
5 AC_CONFIG_HEADERS([config.h])
6 AC_CONFIG_AUX_DIR([scripts])
7
8 ACX_PKGVERSION([GNU libc])
9 ACX_BUGURL([http://www.gnu.org/software/libc/bugs.html])
10 AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"],
11                    [Package description])
12 AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"],
13                    [Bug reporting address])
14
15 # Glibc should not depend on any header files
16 AC_DEFUN([_AC_INCLUDES_DEFAULT_REQUIREMENTS],
17   [m4_divert_text([DEFAULTS],
18     [ac_includes_default='/* none */'])])
19
20 dnl This is here so we can set $subdirs directly based on configure fragments.
21 AC_CONFIG_SUBDIRS()
22
23 AC_CANONICAL_HOST
24
25 AC_PROG_CC
26 if test $host != $build; then
27   AC_CHECK_PROGS(BUILD_CC, gcc cc)
28 fi
29 AC_SUBST(cross_compiling)
30 AC_PROG_CPP
31 # We need the C++ compiler only for testing.
32 AC_PROG_CXX
33 AC_CHECK_TOOL(READELF, readelf, false)
34
35 if test "`cd $srcdir; /bin/pwd`" = "`/bin/pwd`"; then
36   AC_MSG_ERROR([you must configure in a separate build directory])
37 fi
38
39 # This will get text that should go into config.make.
40 config_vars=
41
42 # Check for a --with-gd argument and set libgd-LDFLAGS in config.make.
43 AC_ARG_WITH([gd],
44             AC_HELP_STRING([--with-gd=DIR],
45                            [find libgd include dir and library with prefix DIR]),
46             [dnl
47 case "$with_gd" in
48 yes|''|no) ;;
49 *) libgd_include="-I$withval/include"
50    libgd_ldflags="-L$withval/lib" ;;
51 esac
52 ])
53 AC_ARG_WITH([gd-include],
54             AC_HELP_STRING([--with-gd-include=DIR],
55                            [find libgd include files in DIR]),
56             [dnl
57 case "$with_gd_include" in
58 ''|no) ;;
59 *) libgd_include="-I$withval" ;;
60 esac
61 ])
62 AC_ARG_WITH([gd-lib],
63             AC_HELP_STRING([--with-gd-lib=DIR],
64                            [find libgd library files in DIR]),
65             [dnl
66 case "$with_gd_lib" in
67 ''|no) ;;
68 *) libgd_ldflags="-L$withval" ;;
69 esac
70 ])
71
72 if test -n "$libgd_include"; then
73   config_vars="$config_vars
74 CFLAGS-memusagestat.c = $libgd_include"
75 fi
76 if test -n "$libgd_ldflags"; then
77   config_vars="$config_vars
78 libgd-LDFLAGS = $libgd_ldflags"
79 fi
80
81 dnl Arguments to specify presence of other packages/features.
82 AC_ARG_WITH([fp],
83             AC_HELP_STRING([--with-fp],
84                            [if using floating-point hardware @<:@default=yes@:>@]),
85             [with_fp=$withval],
86             [with_fp=yes])
87 AC_SUBST(with_fp)
88 AC_ARG_WITH([binutils],
89             AC_HELP_STRING([--with-binutils=PATH],
90                            [specify location of binutils (as and ld)]),
91             [path_binutils=$withval],
92             [path_binutils=''])
93 AC_ARG_WITH([selinux],
94             AC_HELP_STRING([--with-selinux],
95                            [if building with SELinux support]),
96             [with_selinux=$withval],
97             [with_selinux=auto])
98
99 AC_ARG_WITH([headers],
100             AC_HELP_STRING([--with-headers=PATH],
101                            [location of system headers to use
102                             (for example /usr/src/linux/include)
103                             @<:@default=compiler default@:>@]),
104             [sysheaders=$withval],
105             [sysheaders=''])
106 AC_SUBST(sysheaders)
107
108 AC_SUBST(use_default_link)
109 AC_ARG_WITH([default-link],
110             AC_HELP_STRING([--with-default-link],
111                            [do not use explicit linker scripts]),
112             [use_default_link=$withval],
113             [use_default_link=default])
114
115 AC_ARG_ENABLE([sanity-checks],
116               AC_HELP_STRING([--disable-sanity-checks],
117                              [really do not use threads (should not be used except in special situations) @<:@default=yes@:>@]),
118               [enable_sanity=$enableval],
119               [enable_sanity=yes])
120
121 AC_ARG_ENABLE([shared],
122               AC_HELP_STRING([--enable-shared],
123                              [build shared library @<:@default=yes if GNU ld@:>@]),
124               [shared=$enableval],
125               [shared=yes])
126 AC_ARG_ENABLE([profile],
127               AC_HELP_STRING([--enable-profile],
128                              [build profiled library @<:@default=no@:>@]),
129               [profile=$enableval],
130               [profile=no])
131 AC_ARG_ENABLE([versioning],
132               AC_HELP_STRING([--disable-versioning],
133                              [do not include versioning information in the library objects @<:@default=yes if supported@:>@]),
134               [enable_versioning=$enableval],
135               [enable_versioning=yes])
136
137 AC_ARG_ENABLE([oldest-abi],
138               AC_HELP_STRING([--enable-oldest-abi=ABI],
139                              [configure the oldest ABI supported @<:@e.g. 2.2@:>@ @<:@default=glibc default@:>@]),
140               [oldest_abi=$enableval],
141               [oldest_abi=no])
142 if test "$oldest_abi" = yes || test "$oldest_abi" = no; then
143   oldest_abi=default
144 else
145   AC_DEFINE_UNQUOTED(GLIBC_OLDEST_ABI, "$oldest_abi")
146 fi
147 AC_SUBST(oldest_abi)
148
149 AC_ARG_ENABLE([stackguard-randomization],
150               AC_HELP_STRING([--enable-stackguard-randomization],
151                              [initialize __stack_chk_guard canary with a random number at program start]),
152               [enable_stackguard_randomize=$enableval],
153               [enable_stackguard_randomize=no])
154 if test "$enable_stackguard_randomize" = yes; then
155   AC_DEFINE(ENABLE_STACKGUARD_RANDOMIZE)
156 fi
157
158 dnl Generic infrastructure for drop-in additions to libc.
159 AC_ARG_ENABLE([add-ons],
160               AC_HELP_STRING([--enable-add-ons@<:@=DIRS...@:>@],
161                              [configure and build add-ons in DIR1,DIR2,...
162                               search for add-ons if no parameter given]),
163                              , [enable_add_ons=yes])
164
165 AC_ARG_ENABLE([hidden-plt],
166               AC_HELP_STRING([--disable-hidden-plt],
167                              [do not hide internal function calls to avoid PLT]),
168               [hidden=$enableval],
169               [hidden=yes])
170 if test "x$hidden" = xno; then
171   AC_DEFINE(NO_HIDDEN)
172 fi
173
174 AC_ARG_ENABLE([bind-now],
175               AC_HELP_STRING([--enable-bind-now],
176                              [disable lazy relocations in DSOs]),
177               [bindnow=$enableval],
178               [bindnow=no])
179 AC_SUBST(bindnow)
180
181 dnl On some platforms we cannot use dynamic loading.  We must provide
182 dnl static NSS modules.
183 AC_ARG_ENABLE([static-nss],
184               AC_HELP_STRING([--enable-static-nss],
185                              [build static NSS modules @<:@default=no@:>@]),
186               [static_nss=$enableval],
187               [static_nss=no])
188 dnl Enable static NSS also if we build no shared objects.
189 if test x"$static_nss" = xyes || test x"$shared" = xno; then
190   static_nss=yes
191   AC_DEFINE(DO_STATIC_NSS)
192 fi
193
194 AC_ARG_ENABLE([force-install],
195               AC_HELP_STRING([--disable-force-install],
196                              [don't force installation of files from this package, even if they are older than the installed files]),
197               [force_install=$enableval],
198               [force_install=yes])
199 AC_SUBST(force_install)
200
201 dnl On some platforms we allow dropping compatibility with all kernel
202 dnl versions.
203 AC_ARG_ENABLE([kernel],
204               AC_HELP_STRING([--enable-kernel=VERSION],
205                              [compile for compatibility with kernel not older than VERSION]),
206               [minimum_kernel=$enableval],
207               [])
208 dnl Prevent unreasonable values.
209 if test "$minimum_kernel" = yes || test "$minimum_kernel" = no; then
210   # Better nothing than this.
211   minimum_kernel=""
212 else
213   if test "$minimum_kernel" = current; then
214     minimum_kernel=`uname -r 2>/dev/null` || minimum_kernel=
215   fi
216 fi
217
218 dnl For the development we sometimes want gcc to issue even more warnings.
219 dnl This is not the default since many of the extra warnings are not
220 dnl appropriate.
221 AC_ARG_ENABLE([all-warnings],
222               AC_HELP_STRING([--enable-all-warnings],
223                              [enable all useful warnings gcc can issue]),
224               [all_warnings=$enableval],
225               [])
226 AC_SUBST(all_warnings)
227
228 AC_ARG_ENABLE([multi-arch],
229               AC_HELP_STRING([--enable-multi-arch],
230                              [enable single DSO with optimizations for multiple architectures]),
231               [multi_arch=$enableval],
232               [multi_arch=default])
233
234 AC_ARG_ENABLE([nss-crypt],
235               AC_HELP_STRING([--enable-nss-crypt],
236                              [enable libcrypt to use nss]),
237               [nss_crypt=$enableval],
238               [nss_crypt=no])
239 if test x$nss_crypt = xyes; then
240   nss_includes=-I$(nss-config --includedir 2>/dev/null)
241   if test $? -ne 0; then
242     AC_MSG_ERROR([cannot find include directory with nss-config])
243   fi
244   old_CFLAGS="$CFLAGS"
245   CFLAGS="$CFLAGS $nss_includes"
246   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([typedef int PRBool;
247 #include <hasht.h>
248 #include <nsslowhash.h>
249 void f (void) { NSSLOW_Init (); }])],
250              libc_cv_nss_crypt=yes,
251              AC_MSG_ERROR([
252 cannot find NSS headers with lowlevel hash function interfaces]))
253   old_LIBS="$LIBS"
254   LIBS="$LIBS -lfreebl3"
255   AC_LINK_IFELSE([AC_LANG_PROGRAM([typedef int PRBool;
256 #include <hasht.h>
257 #include <nsslowhash.h>],
258                                   [NSSLOW_Init();])],
259                  libc_cv_nss_crypt=yes,
260                  AC_MSG_ERROR([
261 cannot link program using lowlevel NSS hash functions]))
262   CFLAGS="$old_CFLAGS"
263   LIBS="$old_LIBS"
264 else
265   libc_cv_nss_crypt=no
266 fi
267 AC_SUBST(libc_cv_nss_crypt)
268
269
270 AC_ARG_ENABLE([obsolete-rpc],
271               AC_HELP_STRING([--enable-obsolete-rpc],
272                              [build and install the obsolete RPC code for link-time usage]),
273               [link_obsolete_rpc=$enableval],
274               [link_obsolete_rpc=no])
275 AC_SUBST(link_obsolete_rpc)
276
277 if test "$link_obsolete_rpc" = yes; then
278   AC_DEFINE(LINK_OBSOLETE_RPC)
279 fi
280
281 AC_ARG_ENABLE([systemtap],
282               [AS_HELP_STRING([--enable-systemtap],
283                [enable systemtap static probe points @<:@default=no@:>@])],
284               [systemtap=$enableval],
285               [systemtap=no])
286 if test "x$systemtap" != xno; then
287   AC_CACHE_CHECK([for systemtap static probe support], libc_cv_sdt, [dnl
288   old_CFLAGS="$CFLAGS"
289   CFLAGS="-std=gnu99 $CFLAGS"
290   AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <sys/sdt.h>
291 void foo (int i, void *p)
292 {
293   asm ("" STAP_PROBE_ASM (foo, bar, STAP_PROBE_ASM_TEMPLATE (2)) ""
294        :: STAP_PROBE_ASM_OPERANDS (2, i, p));
295 }]])], [libc_cv_sdt=yes], [libc_cv_sdt=no])
296   CFLAGS="$old_CFLAGS"])
297   if test $libc_cv_sdt = yes; then
298     AC_DEFINE([USE_STAP_PROBE])
299   elif test "x$systemtap" != xauto; then
300     AC_MSG_FAILURE([systemtap support needs sys/sdt.h with asm support])
301   fi
302 fi
303
304 AC_ARG_ENABLE([build-nscd],
305               [AS_HELP_STRING([--disable-build-nscd],
306                [disable building and installing the nscd daemon])],
307               [build_nscd=$enableval],
308               [build_nscd=default])
309 AC_SUBST(build_nscd)
310
311 # Note the use of $use_nscd is near the bottom of the file.
312 AC_ARG_ENABLE([nscd],
313               [AS_HELP_STRING([--disable-nscd],
314                [library functions will not contact the nscd daemon])],
315               [use_nscd=$enableval],
316               [use_nscd=yes])
317
318 # The way shlib-versions is used to generate soversions.mk uses a
319 # fairly simplistic model for name recognition that can't distinguish
320 # i486-pc-linux-gnu fully from i486-pc-gnu.  So we mutate a $host_os
321 # of `gnu*' here to be `gnu-gnu*' just so that shlib-versions can
322 # tell.  This doesn't get used much beyond that, so it's fairly safe.
323 case "$host_os" in
324 linux*)
325   ;;
326 gnu*)
327   host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
328   ;;
329 esac
330
331 # We keep the original values in `$config_*' and never modify them, so we
332 # can write them unchanged into config.make.  Everything else uses
333 # $machine, $vendor, and $os, and changes them whenever convenient.
334 config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os
335
336 # Don't allow vendor == "unknown"
337 test "$config_vendor" = unknown && config_vendor=
338 config_os="`echo $config_os | sed 's/^unknown-//'`"
339
340 # Some configurations imply other options.
341 elf=yes
342
343 # The configure fragment of an add-on port can modify these to supplement
344 # or override the table in the case statement below.  No fragment should
345 # ever change the config_* variables, however.
346 machine=$config_machine
347 vendor=$config_vendor
348 os=$config_os
349 base_os=''
350
351 # config.guess on some IBM machines says `rs6000' instead of `powerpc'.
352 # Unify this here.
353 if test "$machine" = rs6000; then
354   machine="powerpc"
355 fi
356
357 # Braindead PowerPC box with absolutely no FPU.
358 case "$machine-$host_os" in
359   powerpc*-*soft)
360     with_fp=no
361     ;;
362 esac
363
364 submachine=
365 AC_ARG_WITH([cpu],
366             AS_HELP_STRING([--with-cpu=CPU], [select code for CPU variant]),
367             [dnl
368   case "$withval" in
369   yes|'') AC_MSG_ERROR([--with-cpu requires an argument]) ;;
370   no) ;;
371   *) submachine="$withval" ;;
372   esac
373 ])
374
375 dnl Let sysdeps/*/preconfigure act here, like they can in add-ons.
376 LIBC_PRECONFIGURE([$srcdir], [for sysdeps])
377
378 # An add-on can set this when it wants to disable the sanity check below.
379 libc_config_ok=no
380
381 dnl Having this here, though empty, makes sure that if add-ons' fragments
382 dnl do AC_CONFIG_SUBDIRS([some-dir]), which just sets $subdirs, then
383 dnl our AC_OUTPUT will actually use it.
384 AC_CONFIG_SUBDIRS()
385
386 case "$enable_add_ons" in
387 ''|no) add_ons= ;;
388 yes|'*')
389  add_ons=`cd $srcdir && ls -d 2> /dev/null */configure */sysdeps |
390           sed 's@/[[^/]]*$@@' | sort | uniq`
391          add_ons_automatic=yes
392          ;;
393 *) add_ons=`echo "$enable_add_ons" | sed 's/,/ /g'`
394        add_ons_automatic=no ;;
395 esac
396
397 configured_add_ons=
398 add_ons_sfx=
399 add_ons_pfx=
400 if test x"$add_ons" != x; then
401   for f in $add_ons; do
402     # Some sanity checks
403     case "$f" in
404     crypt)
405       AC_MSG_ERROR([
406 *** It seems that you're using an old \`crypt' add-on.  crypt is now
407 *** part of glibc and using the old add-on will not work with this
408 *** release.  Start again with fresh sources and without the old
409 *** \`crypt' add-on.])
410     ;;
411     localedata)
412       AC_MSG_ERROR([
413 *** It seems that you're using an old \`localedata' add-on.  localedata
414 *** is now part of glibc and using the old add-on will not work with
415 *** this release.  Start again with fresh sources and without the old
416 *** \`localedata' add-on.])
417     ;;
418     esac
419   done
420
421   # Now source each add-on's configure fragment.
422   # The fragments can use $srcdir/$libc_add_on to find themselves,
423   # and test $add_ons_automatic to see if they were explicitly requested.
424   # A fragment can clear (or even change) $libc_add_on to affect
425   # whether it goes into the list to be actually used in the build.
426   use_add_ons=
427   for libc_add_on in $add_ons; do
428     # Test whether such a directory really exists.
429     # It can be absolute, or relative to $srcdir, or relative to the build dir.
430     case "$libc_add_on" in
431     /*)
432       libc_add_on_srcdir=$libc_add_on
433       ;;
434     *)
435       test -d "$srcdir/$libc_add_on" || {
436         if test -d "$libc_add_on"; then
437           libc_add_on="`pwd`/$libc_add_on"
438         else
439           AC_MSG_ERROR(add-on directory \"$libc_add_on\" does not exist)
440         fi
441       }
442       libc_add_on_srcdir=$srcdir/$libc_add_on
443       ;;
444     esac
445
446     libc_add_on_frag=$libc_add_on_srcdir/configure
447     libc_add_on_canonical=
448     libc_add_on_config_subdirs=
449     if test -r "$libc_add_on_frag"; then
450       AC_MSG_NOTICE(running configure fragment for add-on $libc_add_on)
451       libc_add_on_canonical=unknown
452       libc_add_on_subdirs=
453       . "$libc_add_on_frag"
454       test -z "$libc_add_on" || {
455         configured_add_ons="$configured_add_ons $libc_add_on"
456         if test "x$libc_add_on_canonical" = xunknown; then
457           AC_MSG_ERROR(fragment must set \$libc_add_on_canonical)
458         fi
459         for d in $libc_add_on_subdirs; do
460           case "$libc_add_on" in
461           /*) subdir_srcdir="$libc_add_on" ;;
462           *) subdir_srcdir="\$(..)$libc_add_on" ;;
463           esac
464           case "$d" in
465           .)
466             d="${libc_add_on_canonical:-$libc_add_on}"
467             ;;
468           /*)
469             subdir_srcdir="$d"
470             ;;
471           *)
472             subdir_srcdir="$subdir_srcdir/$d"
473             ;;
474           esac
475           d=`echo "$d" | sed 's@/*$@@;s@^.*/@@'`
476           add_on_subdirs="$add_on_subdirs $d"
477           test "$subdir_srcdir" = "\$(..)$d" || config_vars="$config_vars
478 $d-srcdir = $subdir_srcdir"
479         done
480         for d in $libc_add_on_config_subdirs; do
481           case "$d" in
482           /*) AC_MSG_ERROR(dnl
483 fragment uses absolute path in \$libc_add_on_config_subdirs) ;;
484           esac
485           if test ! -d "$libc_add_on_srcdir/$d"; then
486             AC_MSG_ERROR(fragment wants to configure missing directory $d)
487           fi
488           case "$libc_add_on" in
489           /*) AC_MSG_ERROR(dnl
490 relative path required for add-on using \$libc_add_on_config_subdirs) ;;
491           esac
492           subdirs="$subdirs $libc_add_on/$d"
493         done
494       }
495     fi
496     if test -n "$libc_add_on"; then
497       LIBC_PRECONFIGURE([$libc_add_on_srcdir], [add-on $libc_add_on for])
498       use_add_ons="$use_add_ons $libc_add_on"
499       add_ons_pfx="$add_ons_pfx $libc_add_on/"
500       test -z "$libc_add_on_canonical" ||
501       add_ons_sfx="$add_ons_sfx /$libc_add_on_canonical"
502     fi
503   done
504   # Use echo to strip excess whitespace.
505   add_ons="`echo $use_add_ons`"
506 fi
507 AC_SUBST(add_ons)
508 AC_SUBST(add_on_subdirs)
509
510
511 ###
512 ### I put this here to prevent those annoying emails from people who cannot
513 ### read and try to compile glibc on unsupported platforms.  --drepper
514 ###
515 ### By using the undocumented --enable-hacker-mode option for configure
516 ### one can skip this test to make the configuration not fail for unsupported
517 ### platforms.
518 ###
519 if test -z "$enable_hacker_mode" && test x"$libc_config_ok" != xyes; then
520   case "$machine-$host_os" in
521   *-linux* | *-gnu*)
522     ;;
523   *)
524     echo "*** The GNU C library is currently not available for this platform."
525     echo "*** So far nobody cared to port it and if there is no volunteer it"
526     echo "*** might never happen.  So, if you have interest to see glibc on"
527     echo "*** this platform visit"
528     echo "***   http://www.gnu.org/software/libc/porting.html"
529     echo "*** and join the group of porters"
530     exit 1
531     ;;
532   esac
533 fi
534
535 dnl We need to use [ and ] for other purposes for a while now.
536 changequote(,)dnl
537 # Expand the configuration machine name into a subdirectory by architecture
538 # type and particular chip.  If an add-on configure fragment already set
539 # base_machine, we don't change it.
540 test -n "$base_machine" || case "$machine" in
541 i[34567]86)     base_machine=i386 machine=i386/$machine ;;
542 powerpc)        base_machine=powerpc machine=powerpc/powerpc32 ;;
543 powerpc64)      base_machine=powerpc machine=powerpc/powerpc64 ;;
544 s390)           base_machine=s390 machine=s390/s390-32 ;;
545 s390x)          base_machine=s390 machine=s390/s390-64 ;;
546 sh3*)           base_machine=sh machine=sh/sh3 ;;
547 sh4*)           base_machine=sh machine=sh/sh4 ;;
548 sparc | sparcv[67])
549                 base_machine=sparc machine=sparc/sparc32 ;;
550 sparcv8 | supersparc | hypersparc)
551                 base_machine=sparc machine=sparc/sparc32/sparcv8 ;;
552 sparcv8plus | sparcv8plusa | sparcv9)
553                 base_machine=sparc machine=sparc/sparc32/sparcv9 ;;
554 sparcv8plusb | sparcv9b)
555                 base_machine=sparc machine=sparc/sparc32/sparcv9/sparcv9b ;;
556 sparcv9v)
557                 base_machine=sparc machine=sparc/sparc32/sparcv9/sparcv9v ;;
558 sparcv9v2)
559                 base_machine=sparc machine=sparc/sparc32/sparcv9/sparcv9v2 ;;
560 sparc64)
561                 base_machine=sparc machine=sparc/sparc64 ;;
562 sparc64b)
563                 base_machine=sparc machine=sparc/sparc64/sparcv9b ;;
564 sparc64v)
565                 base_machine=sparc machine=sparc/sparc64/sparcv9v ;;
566 sparc64v2)
567                 base_machine=sparc machine=sparc/sparc64/sparcv9v2 ;;
568 *)              base_machine=$machine ;;
569 esac
570 changequote([,])dnl
571 AC_SUBST(base_machine)
572
573 if test "$base_machine" = "i386"; then
574   AC_DEFINE(USE_REGPARMS)
575 fi
576
577 # For the multi-arch option we need support in the assembler & linker.
578 AC_CACHE_CHECK([for assembler and linker STT_GNU_IFUNC support],
579                libc_cv_ld_gnu_indirect_function, [dnl
580 cat > conftest.S <<EOF
581 .type foo,%gnu_indirect_function
582 foo:
583 .globl _start
584 _start:
585 .globl __start
586 __start:
587 .data
588 #ifdef _LP64
589 .quad foo
590 #else
591 .long foo
592 #endif
593 EOF
594 libc_cv_ld_gnu_indirect_function=no
595 if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
596             -nostartfiles -nostdlib \
597             -o conftest conftest.S 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
598   # Do a link to see if the backend supports IFUNC relocs.
599   $READELF -r conftest 1>&AS_MESSAGE_LOG_FD
600   LC_ALL=C $READELF -r conftest | grep 'no relocations' >/dev/null || {
601     libc_cv_ld_gnu_indirect_function=yes
602   }
603 fi
604 rm -f conftest*])
605
606 AC_MSG_CHECKING(whether .text pseudo-op must be used)
607 AC_CACHE_VAL(libc_cv_dot_text, [dnl
608 cat > conftest.s <<EOF
609 .text
610 EOF
611 libc_cv_dot_text=
612 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
613   libc_cv_dot_text=.text
614 fi
615 rm -f conftest*])
616 if test -z "$libc_cv_dot_text"; then
617   AC_MSG_RESULT(no)
618 else
619   AC_MSG_RESULT(yes)
620 fi
621
622 if test x"$libc_cv_ld_gnu_indirect_function" != xyes; then
623   if test x"$multi_arch" = xyes; then
624     AC_MSG_ERROR([--enable-multi-arch support requires assembler and linker support])
625   else
626     multi_arch=no
627   fi
628 fi
629 if test x"$multi_arch" != xno; then
630   multi_arch_d=/multiarch
631 fi
632
633 # Compute the list of sysdep directories for this configuration.
634 # This can take a while to compute.
635 sysdep_dir=$srcdir/sysdeps
636 AC_MSG_CHECKING(sysdep dirs)
637 dnl We need to use [ and ] for other purposes for a while now.
638 changequote(,)dnl
639 # Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
640 os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
641
642 test "x$base_os" != x || case "$os" in
643 gnu*)
644   base_os=mach/hurd ;;
645 linux*)
646   base_os=unix/sysv ;;
647 esac
648
649 # For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
650 tail=$os
651 ostry=$os
652 while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
653   ostry="$ostry /$o"
654   tail=$o
655 done
656 o=`echo $tail | sed 's/[0-9]*$//'`
657 if test $o != $tail; then
658   ostry="$ostry /$o"
659 fi
660 # For linux-gnu, try linux-gnu, then linux.
661 o=`echo $tail | sed 's/-.*$//'`
662 if test $o != $tail; then
663   ostry="$ostry /$o"
664 fi
665
666 # For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
667 base=
668 tail=$base_os
669 while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
670   set $b
671   base="$base /$1"
672   tail="$2"
673 done
674
675 # For sparc/sparc32, try sparc/sparc32 and then sparc.
676 mach=
677 tail=$machine${submachine:+/$submachine}
678 while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
679   set $m
680   # Prepend the machine's FPU directory unless --without-fp.
681   if test "$with_fp" = yes; then
682     mach="$mach /$1/fpu"
683   else
684     mach="$mach /$1/nofpu"
685   fi
686   mach="$mach /$1"
687   tail="$2"
688 done
689
690 dnl We are done with glob and regexp uses of [ and ]; return to autoconf.
691 changequote([,])dnl
692
693 # Find what sysdep directories exist.
694 sysnames_add_ons=
695 sysnames=
696 for b in $base ''; do
697   for m0 in $mach ''; do
698     for v in /$vendor ''; do
699       test "$v" = / && continue
700       for o in /$ostry ''; do
701         test "$o" = / && continue
702         for m in $multi_arch_d $mach ''; do
703           for d in $add_ons_pfx ''; do
704             for a in $add_ons_sfx ''; do
705               try_suffix="$m0$b$v$o$m"
706               if test -n "$try_suffix"; then
707                 try_srcdir="${srcdir}/"
708                 case "$d" in
709                 /*) try_srcdir= ;;
710                 esac
711                 try="${d}sysdeps$try_suffix$a"
712                 test -n "$enable_debug_configure" &&
713                 echo "$0 [DEBUG]: try $try" >&2
714                 if test -d "$try_srcdir$try"; then
715                   sysnames="$sysnames $try"
716                   { test -n "$o" || test -n "$b"; } && os_used=t
717                   { test -n "$m" || test -n "$m0"; } && machine_used=t
718                   case x${m0:-$m} in
719                   x*/$submachine) submachine_used=t ;;
720                   esac
721                   if test -n "$d"; then
722                     case "$sysnames_add_ons" in
723                     *" $d "*) ;;
724                     *|'') sysnames_add_ons="$sysnames_add_ons $d" ;;
725                     esac
726                   fi
727                 fi
728               fi
729             done
730           done
731         done
732       done
733     done
734   done
735 done
736
737 # If the assembler supports gnu_indirect_function symbol type and the
738 # architecture supports multi-arch, we enable multi-arch by default.
739 case $sysnames_add_ons$sysnames in
740 *"$multi_arch_d"*)
741   ;;
742 *)
743   test x"$multi_arch" = xdefault && multi_arch=no
744   ;;
745 esac
746 if test x"$multi_arch" != xno; then
747   AC_DEFINE(USE_MULTIARCH)
748 fi
749 AC_SUBST(multi_arch)
750
751 if test -z "$os_used" && test "$os" != none; then
752   AC_MSG_ERROR(Operating system $os is not supported.)
753 fi
754 if test -z "$machine_used" && test "$machine" != none; then
755   AC_MSG_ERROR(The $machine is not supported.)
756 fi
757 if test -z "$submachine_used" && test -n "$submachine"; then
758   AC_MSG_ERROR(The $submachine subspecies of $host_cpu is not supported.)
759 fi
760 AC_SUBST(submachine)
761
762 # We have now validated the configuration.
763
764 # Expand the list of system names into a full list of directories
765 # from each element's parent name and Implies file (if present).
766 set $sysnames
767 names=
768 while test $# -gt 0; do
769   name=$1
770   shift
771
772   case " $names " in *" $name "*)
773     # Already in the list.
774     continue
775   esac
776
777   # Report each name as we discover it, so there is no long pause in output.
778   echo $ECHO_N "$name $ECHO_C" >&AS_MESSAGE_FD
779
780   name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
781
782   case $name in
783     /*) xsrcdir= ;;
784     *)  xsrcdir=$srcdir/ ;;
785   esac
786   test -n "$enable_debug_configure" &&
787   echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2
788
789   for implies_file in Implies Implies-before Implies-after; do
790     implies_type=`echo $implies_file | sed s/-/_/`
791     eval ${implies_type}=
792     if test -f $xsrcdir$name/$implies_file; then
793       # Collect more names from the `Implies' file (removing comments).
794       implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/$implies_file`"
795       for x in $implied_candidate; do
796         found=no
797         if test -d $xsrcdir$name_base/$x; then
798           eval "${implies_type}=\"\$${implies_type} \$name_base/\$x\""
799           found=yes
800         fi
801         for d in $add_ons_pfx ''; do
802           try="${d}sysdeps/$x"
803           case $d in
804            /*) try_srcdir= ;;
805            *) try_srcdir=$srcdir/ ;;
806           esac
807           test -n "$enable_debug_configure" &&
808            echo "[DEBUG]: $name $implies_file $x try($d) {$try_srcdir}$try" >&2
809           if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
810           then
811             eval "${implies_type}=\"\$${implies_type} \$try\""
812             found=yes
813             case "$sysnames_add_ons" in
814             *" $d "*) ;;
815             *|'') sysnames_add_ons="$sysnames_add_ons $d" ;;
816             esac
817           fi
818         done
819         if test $found = no; then
820           AC_MSG_WARN($name/$implies_file specifies nonexistent $x)
821         fi
822       done
823     fi
824   done
825
826   # Add NAME to the list of names.
827   names="$names $name"
828
829   # Find the parent of NAME, using the empty string if it has none.
830 changequote(,)dnl
831   parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
832 changequote([,])dnl
833
834   test -n "$enable_debug_configure" &&
835     echo "[DEBUG]: $name Implies='$Implies' rest='$*' parent='$parent' \
836 Implies_before='$Implies_before' Implies_after='$Implies_after'" >&2
837
838   # Add the names implied by NAME, and NAME's parent (if it has one), to
839   # the list of names to be processed (the argument list).  We prepend the
840   # implied names to the list and append the parent.  We want implied
841   # directories to come before further directories inferred from the
842   # configuration components; this ensures that for sysv4, unix/common
843   # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
844   # after sysv4).
845   sysnames="`echo $Implies $* $Implies_before $parent $Implies_after`"
846   test -n "$sysnames" && set $sysnames
847 done
848
849 # Add the default directories.
850 default_sysnames="sysdeps/generic"
851 sysnames="$names $default_sysnames"
852 AC_SUBST(sysnames)
853 # The other names were emitted during the scan.
854 AC_MSG_RESULT($default_sysnames)
855
856 # Collect the list of add-ons that supply partial sysdeps trees.
857 sysdeps_add_ons=
858 for add_on in $add_ons; do
859   case "$add_on" in
860   /*) xsrcdir= ;;
861   *) xsrcdir="$srcdir/" ;;
862   esac
863
864   test -d "$xsrcdir$add_on/sysdeps" || {
865     case "$configured_add_ons " in
866     *" $add_on "*) ;;
867     *|'')
868       AC_MSG_ERROR(add-on $add_on has no configure fragment or sysdeps tree)
869       ;;
870     esac
871     continue
872   }
873
874   sysdeps_add_ons="$sysdeps_add_ons $add_on"
875   case "$sysnames_add_ons" in
876   *" $add_on/ "*) ;;
877   *|'')
878     AC_MSG_WARN(add-on $add_on contributed no sysdeps directories)
879     continue ;;
880   esac
881
882   found=no
883   for d in $sysnames; do
884     case "$d" in
885     $add_on/sysdeps/*) ;;
886     *) continue ;;
887     esac
888     (cd "$xsrcdir$d" && for f in *[[!~]]; do
889        case "$f" in
890        sys|bits)
891          for ff in $f/*.h; do
892            test -d "$ff" || { test -e "$ff" && exit 88; }
893          done
894          ;;
895        *)
896          test -d "$f" || { test -e "$f" && exit 88; }
897          ;;
898        esac
899      done)
900     if test $? -eq 88; then
901       found=yes
902       break
903     fi
904   done
905   if test $found = no; then
906     AC_MSG_WARN(add-on $add_on contributed no useful sysdeps directories)
907   fi
908 done
909 AC_SUBST(sysdeps_add_ons)
910
911
912 ### Locate tools.
913
914 AC_PROG_INSTALL
915 if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then
916   # The makefiles need to use a different form to find it in $srcdir.
917   INSTALL='\$(..)./scripts/install-sh -c'
918 fi
919 AC_PROG_LN_S
920
921 LIBC_PROG_BINUTILS
922 AC_SUBST(MIG)dnl Needed by sysdeps/mach/configure.in
923
924 # Accept binutils 2.20 or newer.
925 AC_CHECK_PROG_VER(AS, $AS, --version,
926                   [GNU assembler.* \([0-9]*\.[0-9.]*\)],
927                   [2.1[0-9][0-9]*|2.[2-9][0-9]*|[3-9].*|[1-9][0-9]*], AS=: critic_missing="$critic_missing as")
928 AC_CHECK_PROG_VER(LD, $LD, --version,
929                   [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)],
930                   [2.1[0-9][0-9]*|2.[2-9][0-9]*|[3-9].*|[1-9][0-9]*], LD=: critic_missing="$critic_missing ld")
931
932 # These programs are version sensitive.
933 AC_CHECK_TOOL_PREFIX
934 AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}gcc ${ac_tool_prefix}cc, -v,
935   [version \([egcygnustpi-]*[0-9.]*\)], [4.[3-9].* | 4.[1-9][0-9].* | [5-9].* ],
936   critic_missing="$critic_missing gcc")
937 AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
938   [GNU Make[^0-9]*\([0-9][0-9.]*\)],
939   [3.79* | 3.[89]*], critic_missing="$critic_missing make")
940
941 AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
942   [GNU gettext.* \([0-9]*\.[0-9.]*\)],
943   [0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*],
944   MSGFMT=: aux_missing="$aux_missing msgfmt")
945 AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
946   [GNU texinfo.* \([0-9][0-9.]*\)],
947   [4.[5-9]*|4.[1-9][0-9]*|[5-9].*],
948   MAKEINFO=: aux_missing="$aux_missing makeinfo")
949 AC_CHECK_PROG_VER(SED, sed, --version,
950   [GNU sed[^0-9]* \([0-9]*\.[0-9.]*\)],
951   [3.0[2-9]*|3.[1-9]*|[4-9]*],
952   SED=: aux_missing="$aux_missing sed")
953 AC_CHECK_PROG_VER(AWK, gawk, --version,
954   [GNU Awk[^0-9]*\([0-9][0-9.]*\)],
955   [[3-9].*], critic_missing="$critic_missing gawk")
956
957 AC_CHECK_TOOL(NM, nm, false)
958
959 AC_CHECK_PROGS(AUTOCONF, autoconf, no)
960 case "x$AUTOCONF" in
961 xno|x|x:) AUTOCONF=no ;;
962 *)
963   AC_CACHE_CHECK(dnl
964 whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works, libc_cv_autoconf_works, [dnl
965   if (cd $srcdir; $AUTOCONF $ACFLAGS configure.in > /dev/null 2>&1); then
966     libc_cv_autoconf_works=yes
967   else
968     libc_cv_autoconf_works=no
969   fi])
970   test $libc_cv_autoconf_works = yes || AUTOCONF=no
971   ;;
972 esac
973 if test "x$AUTOCONF" = xno; then
974   aux_missing="$aux_missing autoconf"
975 fi
976
977 test -n "$critic_missing" && AC_MSG_ERROR([
978 *** These critical programs are missing or too old:$critic_missing
979 *** Check the INSTALL file for required versions.])
980
981 test -n "$aux_missing" && AC_MSG_WARN([
982 *** These auxiliary programs are missing or incompatible versions:$aux_missing
983 *** some features will be disabled.
984 *** Check the INSTALL file for required versions.])
985
986 # if using special system headers, find out the compiler's sekrit
987 # header directory and add that to the list.  NOTE: Only does the right
988 # thing on a system that doesn't need fixincludes.  (Not presently a problem.)
989 if test -n "$sysheaders"; then
990   SYSINCLUDES=-nostdinc
991   for d in include include-fixed; do
992     i=`$CC -print-file-name="$d"` && test "x$i" != x && test "x$i" != "x$d" &&
993     SYSINCLUDES="$SYSINCLUDES -isystem $i"
994   done
995   SYSINCLUDES="$SYSINCLUDES \
996 -isystem `echo $sysheaders | sed 's/:/ -isystem /g'`"
997   if test -n "$CXX"; then
998     CXX_SYSINCLUDES=
999     for cxxheaders in `$CXX -v -S -x c++ /dev/null -o /dev/null 2>&1 \
1000     | sed -n -e '1,/#include/d' -e 's/^ \(\/.*\/[cg]++\)/\1/p'`; do
1001       test "x$cxxheaders" != x &&
1002       CXX_SYSINCLUDES="$CXX_SYSINCLUDES -isystem $cxxheaders"
1003     done
1004   fi
1005 fi
1006 AC_SUBST(SYSINCLUDES)
1007 AC_SUBST(CXX_SYSINCLUDES)
1008
1009 # Test if LD_LIBRARY_PATH contains the notation for the current directory
1010 # since this would lead to problems installing/building glibc.
1011 # LD_LIBRARY_PATH contains the current directory if one of the following
1012 # is true:
1013 # - one of the terminals (":" and ";") is the first or last sign
1014 # - two terminals occur directly after each other
1015 # - the path contains an element with a dot in it
1016 AC_MSG_CHECKING(LD_LIBRARY_PATH variable)
1017 changequote(,)dnl
1018 case ${LD_LIBRARY_PATH} in
1019   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
1020     ld_library_path_setting="contains current directory"
1021     ;;
1022   *)
1023     ld_library_path_setting="ok"
1024     ;;
1025 esac
1026 changequote([,])dnl
1027 AC_MSG_RESULT($ld_library_path_setting)
1028 if test "$ld_library_path_setting" != "ok"; then
1029 AC_MSG_ERROR([
1030 *** LD_LIBRARY_PATH shouldn't contain the current directory when
1031 *** building glibc. Please change the environment variable
1032 *** and run configure again.])
1033 fi
1034
1035 AC_CACHE_CHECK(whether GCC supports -static-libgcc, libc_cv_gcc_static_libgcc, [dnl
1036 if $CC -v -static-libgcc 2>&1 | grep 'unrecognized option.*static-libgcc' >/dev/null; then
1037   libc_cv_gcc_static_libgcc=
1038 else
1039   libc_cv_gcc_static_libgcc=-static-libgcc
1040 fi])
1041 AC_SUBST(libc_cv_gcc_static_libgcc)
1042
1043 AC_PATH_PROG(BASH_SHELL, bash, no)
1044 if test "$BASH_SHELL" != no &&
1045    $BASH_SHELL -c 'test "$BASH_VERSINFO" \
1046              && test "$BASH_VERSINFO" -ge 2 >&/dev/null'; then
1047   libc_cv_have_bash2=yes
1048 else
1049   libc_cv_have_bash2=no
1050 fi
1051 AC_SUBST(libc_cv_have_bash2)
1052
1053 dnl We need a ksh compatible shell for tzselect.
1054 if test "$BASH_SHELL" = no; then
1055   AC_PATH_PROG(KSH, ksh, no)
1056   if test "$KSH" = no; then
1057     libc_cv_have_ksh=no
1058   else
1059     libc_cv_have_ksh=yes
1060   fi
1061 else
1062   KSH="$BASH_SHELL"
1063   AC_SUBST(KSH)
1064   libc_cv_have_ksh=yes
1065 fi
1066 AC_SUBST(libc_cv_have_ksh)
1067
1068 AC_PATH_PROG(PERL, perl, no)
1069 if test "$PERL" != no &&
1070    (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
1071   PERL=no
1072 fi
1073 AC_PATH_PROG(INSTALL_INFO, install-info, no,
1074              $PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
1075 AC_PATH_PROG(BISON, bison, no, $PATH:/usr/local/bin:/usr/bin:/bin)
1076
1077 AC_CACHE_CHECK(for libc-friendly stddef.h, libc_cv_friendly_stddef, [dnl
1078 AC_TRY_COMPILE(dnl
1079 [#define __need_size_t
1080 #define __need_wchar_t
1081 #include <stddef.h>
1082 #define __need_NULL
1083 #include <stddef.h>], [size_t size; wchar_t wchar;
1084 #ifdef offsetof
1085 #error stddef.h ignored __need_*
1086 #endif
1087 if (&size == NULL || &wchar == NULL) abort ();],
1088                libc_cv_friendly_stddef=yes,
1089                libc_cv_friendly_stddef=no)])
1090 if test $libc_cv_friendly_stddef = yes; then
1091   config_vars="$config_vars
1092 override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
1093 fi
1094
1095 AC_CACHE_CHECK(whether we need to use -P to assemble .S files,
1096                libc_cv_need_minus_P, [dnl
1097 cat > conftest.S <<EOF
1098 #include "confdefs.h"
1099 /* Nothing whatsoever.  */
1100 EOF
1101 if AC_TRY_COMMAND(${CC-cc} $CPPFLAGS $ASFLAGS -c conftest.S 1>&AS_MESSAGE_LOG_FD); then
1102   libc_cv_need_minus_P=no
1103 else
1104   libc_cv_need_minus_P=yes
1105 fi
1106 rm -f conftest*])
1107 if test $libc_cv_need_minus_P = yes; then
1108   config_vars="$config_vars
1109 asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
1110 fi
1111
1112 AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
1113 cat > conftest.s <<EOF
1114 ${libc_cv_dot_text}
1115 foo:
1116 .set glibc_conftest_frobozz,foo
1117 .globl glibc_conftest_frobozz
1118 EOF
1119 # The alpha-dec-osf1 assembler gives only a warning for `.set'
1120 # (but it doesn't work), so we must do a linking check to be sure.
1121 cat > conftest1.c <<\EOF
1122 extern int glibc_conftest_frobozz;
1123 void _start() { glibc_conftest_frobozz = 1; }
1124 EOF
1125 if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
1126             -nostartfiles -nostdlib \
1127             -o conftest conftest.s conftest1.c 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1128   libc_cv_asm_set_directive=yes
1129 else
1130   libc_cv_asm_set_directive=no
1131 fi
1132 rm -f conftest*])
1133 if test $libc_cv_asm_set_directive = yes; then
1134   AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
1135 fi
1136
1137 AC_CACHE_CHECK(for assembler gnu_unique_object symbol type,
1138                libc_cv_asm_unique_object, [dnl
1139 cat > conftest.s <<EOF
1140 ${libc_cv_dot_text}
1141 _sym:
1142 .type _sym, %gnu_unique_object
1143 EOF
1144 if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1145   libc_cv_asm_unique_object=yes
1146 else
1147   libc_cv_asm_unique_object=no
1148 fi
1149 rm -f conftest*])
1150 if test $libc_cv_asm_unique_object = yes; then
1151   AC_DEFINE(HAVE_ASM_UNIQUE_OBJECT)
1152 fi
1153
1154 AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive,
1155 [cat > conftest.s <<EOF
1156 ${libc_cv_dot_text}
1157 _sym:
1158 .symver _sym,sym@VERS
1159 EOF
1160 if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1161   libc_cv_asm_symver_directive=yes
1162 else
1163   libc_cv_asm_symver_directive=no
1164 fi
1165 rm -f conftest*])
1166 AC_CACHE_CHECK(for ld --version-script, libc_cv_ld_version_script_option, [dnl
1167 if test $libc_cv_asm_symver_directive = yes; then
1168   cat > conftest.s <<EOF
1169 ${libc_cv_dot_text}
1170 _sym:
1171 .symver _sym,sym@VERS
1172 EOF
1173   cat > conftest.map <<EOF
1174 VERS_1 {
1175         global: sym;
1176 };
1177
1178 VERS_2 {
1179         global: sym;
1180 } VERS_1;
1181 EOF
1182   if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1183     if AC_TRY_COMMAND([${CC-cc} $CFLAGS $LDFLAGS -shared
1184                                 -o conftest.so conftest.o
1185                                 -nostartfiles -nostdlib
1186                                 -Wl,--version-script,conftest.map
1187                        1>&AS_MESSAGE_LOG_FD]);
1188     then
1189       libc_cv_ld_version_script_option=yes
1190     else
1191       libc_cv_ld_version_script_option=no
1192     fi
1193   else
1194     libc_cv_ld_version_script_option=no
1195   fi
1196 else
1197   libc_cv_ld_version_script_option=no
1198 fi
1199 rm -f conftest*])
1200 if test $shared != no &&
1201    test $libc_cv_asm_symver_directive = yes &&
1202    test $libc_cv_ld_version_script_option = yes &&
1203    test $enable_versioning = yes; then
1204   VERSIONING=yes
1205   AC_DEFINE(DO_VERSIONING)
1206 else
1207   VERSIONING=no
1208 fi
1209 AC_SUBST(VERSIONING)
1210
1211 if test $shared != no && test $VERSIONING = no; then
1212   echo "\
1213 *** WARNING: You should not compile GNU libc without versioning. Not using
1214 *** versioning will introduce incompatibilities so that old binaries
1215 *** will not run anymore.
1216 *** For versioning you need recent binutils (binutils-2.8.1.0.23 or newer)."
1217 fi
1218 AC_CACHE_CHECK(for .previous assembler directive,
1219                libc_cv_asm_previous_directive, [dnl
1220 cat > conftest.s <<EOF
1221 .section foo_section
1222 .previous
1223 EOF
1224 if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1225   libc_cv_asm_previous_directive=yes
1226 else
1227   libc_cv_asm_previous_directive=no
1228 fi
1229 rm -f conftest*])
1230 if test $libc_cv_asm_previous_directive = yes; then
1231   AC_DEFINE(HAVE_ASM_PREVIOUS_DIRECTIVE)
1232 else
1233   AC_CACHE_CHECK(for .popsection assembler directive,
1234                  libc_cv_asm_popsection_directive, [dnl
1235   cat > conftest.s <<EOF
1236 .pushsection foo_section
1237 .popsection
1238 EOF
1239   if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1240     libc_cv_asm_popsection_directive=yes
1241   else
1242     libc_cv_asm_popsection_directive=no
1243   fi
1244   rm -f conftest*])
1245   if test $libc_cv_asm_popsection_directive = yes; then
1246     AC_DEFINE(HAVE_ASM_POPSECTION_DIRECTIVE)
1247   fi
1248 fi
1249 AC_CACHE_CHECK(for .protected and .hidden assembler directive,
1250                libc_cv_asm_protected_directive, [dnl
1251 cat > conftest.s <<EOF
1252 .protected foo
1253 foo:
1254 .hidden bar
1255 bar:
1256 EOF
1257 if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1258   libc_cv_asm_protected_directive=yes
1259 else
1260   AC_MSG_ERROR(assembler support for symbol visibility is required)
1261 fi
1262 rm -f conftest*])
1263
1264 if test $libc_cv_asm_protected_directive = yes; then
1265   AC_CACHE_CHECK(whether __attribute__((visibility())) is supported,
1266                  libc_cv_visibility_attribute,
1267                  [cat > conftest.c <<EOF
1268                   int foo __attribute__ ((visibility ("hidden"))) = 1;
1269                   int bar __attribute__ ((visibility ("protected"))) = 1;
1270 EOF
1271                   libc_cv_visibility_attribute=no
1272                   if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1273                     if grep '\.hidden.*foo' conftest.s >/dev/null; then
1274                       if grep '\.protected.*bar' conftest.s >/dev/null; then
1275                         libc_cv_visibility_attribute=yes
1276                       fi
1277                     fi
1278                   fi
1279                   rm -f conftest.{c,s}
1280                  ])
1281   if test $libc_cv_visibility_attribute != yes; then
1282     AC_MSG_ERROR(compiler support for visibility attribute is required)
1283   fi
1284 fi
1285
1286 if test $libc_cv_visibility_attribute = yes; then
1287   AC_CACHE_CHECK(for broken __attribute__((visibility())),
1288                  libc_cv_broken_visibility_attribute,
1289                  [cat > conftest.c <<EOF
1290                   int foo (int x);
1291                   int bar (int x) __asm__ ("foo") __attribute__ ((visibility ("hidden")));
1292                   int bar (int x) { return x; }
1293 EOF
1294                   libc_cv_broken_visibility_attribute=yes
1295                   if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1296 changequote(,)dnl
1297                     if grep '\.hidden[  _]foo' conftest.s >/dev/null; then
1298 changequote([,])dnl
1299                       libc_cv_broken_visibility_attribute=no
1300                     fi
1301                   fi
1302                   rm -f conftest.c conftest.s
1303                  ])
1304   if test $libc_cv_broken_visibility_attribute = yes; then
1305     AC_MSG_ERROR(working compiler support for visibility attribute is required)
1306   fi
1307 fi
1308
1309 AC_CACHE_CHECK(for broken __attribute__((alias())),
1310                libc_cv_broken_alias_attribute,
1311                [cat > conftest.c <<EOF
1312                extern int foo (int x) __asm ("xyzzy");
1313                int bar (int x) { return x; }
1314                extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
1315                extern int dfoo;
1316                extern __typeof (dfoo) dfoo __asm ("abccb");
1317                int dfoo = 1;
1318 EOF
1319                libc_cv_broken_alias_attribute=yes
1320                if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1321                  if grep 'xyzzy' conftest.s >/dev/null &&
1322                     grep 'abccb' conftest.s >/dev/null; then
1323                    libc_cv_broken_alias_attribute=no
1324                  fi
1325                fi
1326                rm -f conftest.c conftest.s
1327                ])
1328 if test $libc_cv_broken_alias_attribute = yes; then
1329   AC_MSG_ERROR(working alias attribute support required)
1330 fi
1331
1332 if test $libc_cv_visibility_attribute = yes; then
1333   AC_CACHE_CHECK(whether to put _rtld_local into .sdata section,
1334                  libc_cv_have_sdata_section,
1335                  [echo "int i;" > conftest.c
1336                   libc_cv_have_sdata_section=no
1337                   if ${CC-cc} $LDFLAGS -fPIC -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
1338                      | grep '\.sdata' >/dev/null; then
1339                     libc_cv_have_sdata_section=yes
1340                   fi
1341                   rm -f conftest.c conftest.so
1342                  ])
1343   if test $libc_cv_have_sdata_section = yes; then
1344     AC_DEFINE(HAVE_SDATA_SECTION)
1345   fi
1346 fi
1347
1348 AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support,
1349                libc_cv_initfini_array, [dnl
1350 LIBC_TRY_LINK_STATIC([
1351 int foo (void) { return 1; }
1352 int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;
1353 ],
1354   [if $READELF -S conftest | fgrep INIT_ARRAY > /dev/null; then
1355     libc_cv_initfini_array=yes
1356   else
1357     libc_cv_initfini_array=no
1358   fi],
1359   [libc_cv_initfini_array=no])
1360 ])
1361 if test $libc_cv_initfini_array != yes; then
1362   AC_MSG_ERROR([Need linker with .init_array/.fini_array support.])
1363 fi
1364
1365 AC_CACHE_CHECK(whether to use .ctors/.dtors header and trailer,
1366                libc_cv_ctors_header, [dnl
1367   libc_cv_ctors_header=yes
1368   LIBC_TRY_LINK_STATIC([
1369 __attribute__ ((constructor)) void ctor (void) { asm (""); }
1370 __attribute__ ((destructor))  void dtor (void) { asm (""); }
1371 ],
1372               [dnl
1373       AS_IF([$READELF -WS conftest$ac_exeext | $AWK '
1374         { gsub(/\@<:@ */, "@<:@") }
1375         $2 == ".ctors" || $2 == ".dtors" {
1376           size = strtonum("0x" $6)
1377           align = strtonum("0x" $NF)
1378           seen@<:@$2@:>@ = 1
1379           stub@<:@$2@:>@ = size == align * 2
1380         }
1381         END {
1382           ctors_ok = !seen@<:@".ctors"@:>@ || stub@<:@".ctors"@:>@
1383           dtors_ok = !seen@<:@".dtors"@:>@ || stub@<:@".dtors"@:>@
1384           exit ((ctors_ok && dtors_ok) ? 0 : 1)
1385         }
1386       '], [libc_cv_ctors_header=no])
1387     ], [dnl
1388       AC_MSG_ERROR([missing __attribute__ ((constructor)) support??])
1389     ])
1390 ])
1391 if test $libc_cv_ctors_header = no; then
1392   AC_DEFINE(NO_CTORS_DTORS_SECTIONS)
1393 fi
1394
1395 AC_CACHE_CHECK(for libunwind-support in compiler,
1396                libc_cv_cc_with_libunwind, [
1397   cat > conftest.c <<EOF
1398 int main (void) { return 0; }
1399 EOF
1400   if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -static -o conftest \
1401      conftest.c -v 2>&1 >/dev/null | grep ' -lunwind ' >/dev/null; then
1402     libc_cv_cc_with_libunwind=yes
1403   else
1404     libc_cv_cc_with_libunwind=no
1405   fi
1406   rm -f conftest*])
1407 AC_SUBST(libc_cv_cc_with_libunwind)
1408 if test $libc_cv_cc_with_libunwind = yes; then
1409   AC_DEFINE(HAVE_CC_WITH_LIBUNWIND)
1410 fi
1411
1412 LIBC_LINKER_FEATURE([-z nodelete], [-Wl,--enable-new-dtags,-z,nodelete],
1413                     [libc_cv_z_nodelete=yes],
1414                     [AC_MSG_ERROR(linker with -z nodelete support required)])
1415
1416 LIBC_LINKER_FEATURE([-z nodlopen], [-Wl,--enable-new-dtags,-z,nodlopen],
1417                     [libc_cv_z_nodlopen=yes],
1418                     [AC_MSG_ERROR(linker with -z nodlopen support required)])
1419
1420 LIBC_LINKER_FEATURE([-z initfirst], [-Wl,--enable-new-dtags,-z,initfirst],
1421                     [libc_cv_z_initfirst=yes],
1422                     [AC_MSG_ERROR(linker with -z initfirst support required)])
1423
1424 # Add-on fragments can set these for other machines.
1425 libc_commonpagesize=${libc_commonpagesize:-no}
1426 libc_relro_required=${libc_relro_required:-no}
1427 case "$base_machine" in
1428   i[[34567]]86 | x86_64 | powerpc* | s390*)
1429     libc_commonpagesize=0x1000
1430     libc_relro_required=yes
1431     ;;
1432   sparc*)
1433     libc_commonpagesize=0x2000
1434     libc_relro_required=yes
1435     ;;
1436 esac
1437
1438 if test $libc_commonpagesize != no; then
1439   AC_CACHE_CHECK(for -z relro option,
1440                  libc_cv_z_relro, [dnl
1441   libc_cv_z_relro=no
1442   AC_LANG_CONFTEST([AC_LANG_SOURCE([[
1443 int _start (void) { return 42; }
1444 extern void _exit (int);
1445 /* Since these pointers are const, they should go in rodata.
1446    Since they refer to functions that have to be resolved by
1447    dynamic linking, they should instead go in RELRO data.  */
1448 const void *const relro[] = { &_start, &_exit, 0 };
1449 /* GNU ld fails to produce RELRO data when it's very small and there is no
1450    normal writable data following it, or if only uninitialized (.bss) data
1451    follows it, or only very small writable data.  */
1452 int data[0x10000] = { 1, };
1453 ]])])
1454   cat > conftest.awk <<\EOF
1455 BEGIN {
1456   result = "no"
1457   commonpagesize = strtonum(commonpagesize)
1458 }
1459 { print "LINE:", $0 > "/dev/stderr" }
1460 $1 == "GNU_RELRO" {
1461   vaddr = strtonum($3)
1462   memsz = strtonum($6)
1463   end = vaddr + memsz
1464   printf "vaddr %#x memsz %#x end %#x commonpagesize %#x\n", \
1465     vaddr, memsz, end, commonpagesize > "/dev/stderr"
1466   result = (end % commonpagesize == 0) ? "yes" : "broken"
1467 }
1468 END { print result }
1469 EOF
1470   AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1471                     -fPIC -shared -o conftest.so conftest.c
1472                     -nostartfiles -nostdlib
1473                     -Wl,-z,relro 1>&AS_MESSAGE_LOG_FD]) &&
1474   AC_TRY_COMMAND([$READELF -Wl conftest.so > conftest.ph]) &&
1475   AC_TRY_COMMAND([
1476       $AWK -v commonpagesize=$libc_commonpagesize -f conftest.awk
1477            conftest.ph > conftest.cps
1478     ]) &&
1479   libc_cv_z_relro=`cat conftest.cps 2>&AS_MESSAGE_LOG_FD`
1480   rm -f conftest*])
1481   if { test "x$libc_relro_required" = xyes &&
1482        test "x$libc_cv_z_relro" != xyes
1483      }
1484   then
1485     AC_MSG_ERROR(linker with -z relro support required)
1486   fi
1487 else
1488   AC_MSG_WARN([missing architecture parameter to check for working -z relro])
1489 fi
1490
1491 AC_CACHE_CHECK(for -Bgroup option,
1492                libc_cv_Bgroup, [dnl
1493 cat > conftest.c <<EOF
1494 int _start (void) { return 42; }
1495 EOF
1496 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1497                             -fPIC -shared -o conftest.so conftest.c
1498                             -Wl,-Bgroup -nostdlib 1>&AS_MESSAGE_LOG_FD])
1499 then
1500   libc_cv_Bgroup=yes
1501 else
1502   libc_cv_Bgroup=no
1503 fi
1504 rm -f conftest*])
1505 AC_SUBST(libc_cv_Bgroup)
1506
1507 ASFLAGS_config=
1508 AC_CACHE_CHECK(whether --noexecstack is desirable for .S files,
1509                libc_cv_as_noexecstack, [dnl
1510 cat > conftest.c <<EOF
1511 void foo (void) { }
1512 EOF
1513 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS
1514                    -S -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD]) \
1515    && grep .note.GNU-stack conftest.s >/dev/null \
1516    && AC_TRY_COMMAND([${CC-cc} $ASFLAGS -Wa,--noexecstack
1517                       -c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD])
1518 then
1519   libc_cv_as_noexecstack=yes
1520 else
1521   libc_cv_as_noexecstack=no
1522 fi
1523 rm -f conftest*])
1524 if test $libc_cv_as_noexecstack = yes; then
1525   ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack"
1526 fi
1527 AC_SUBST(ASFLAGS_config)
1528
1529 AC_CACHE_CHECK(for -z combreloc,
1530                libc_cv_z_combreloc, [dnl
1531 cat > conftest.c <<EOF
1532 extern int bar (int);
1533 extern int mumble;
1534 int foo (void) { return bar (mumble); }
1535 EOF
1536 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1537                         -fPIC -shared -o conftest.so conftest.c
1538                         -nostdlib -nostartfiles
1539                         -Wl,-z,combreloc 1>&AS_MESSAGE_LOG_FD])
1540 then
1541 dnl The following test is a bit weak.  We must use a tool which can test
1542 dnl cross-platform since the gcc used can be a cross compiler.  Without
1543 dnl introducing new options this is not easily doable.  Instead use a tool
1544 dnl which always is cross-platform: readelf.  To detect whether -z combreloc
1545 dnl look for a section named .rel.dyn.
1546   if $READELF -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
1547     libc_cv_z_combreloc=yes
1548   else
1549     libc_cv_z_combreloc=no
1550   fi
1551 else
1552   libc_cv_z_combreloc=no
1553 fi
1554 rm -f conftest*])
1555 if test "$libc_cv_z_combreloc" = yes; then
1556   AC_DEFINE(HAVE_Z_COMBRELOC)
1557 fi
1558 AC_SUBST(libc_cv_z_combreloc)
1559
1560 LIBC_LINKER_FEATURE([-z execstack], [-Wl,-z,execstack],
1561                     [libc_cv_z_execstack=yes], [libc_cv_z_execstack=no])
1562 AC_SUBST(libc_cv_z_execstack)
1563
1564 AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl
1565 LIBC_TRY_CC_OPTION([-fpie], [libc_cv_fpie=yes], [libc_cv_fpie=no])
1566 ])
1567
1568 AC_SUBST(libc_cv_fpie)
1569
1570 AC_CACHE_CHECK(for --hash-style option,
1571                libc_cv_hashstyle, [dnl
1572 cat > conftest.c <<EOF
1573 int _start (void) { return 42; }
1574 EOF
1575 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1576                             -fPIC -shared -o conftest.so conftest.c
1577                             -Wl,--hash-style=both -nostdlib 1>&AS_MESSAGE_LOG_FD])
1578 then
1579   libc_cv_hashstyle=yes
1580 else
1581   libc_cv_hashstyle=no
1582 fi
1583 rm -f conftest*])
1584 AC_SUBST(libc_cv_hashstyle)
1585
1586 # The linker's default -shared behavior is good enough if it
1587 # does these things that our custom linker scripts ensure that
1588 # all allocated NOTE sections come first.
1589 if test "$use_default_link" = default; then
1590   AC_CACHE_CHECK([for sufficient default -shared layout],
1591                   libc_cv_use_default_link, [dnl
1592   libc_cv_use_default_link=no
1593   cat > conftest.s <<\EOF
1594           .section .note.a,"a",%note
1595           .balign 4
1596           .long 4,4,9
1597           .string "GNU"
1598           .string "foo"
1599           .section .note.b,"a",%note
1600           .balign 4
1601           .long 4,4,9
1602           .string "GNU"
1603           .string "bar"
1604 EOF
1605   if AC_TRY_COMMAND([dnl
1606   ${CC-cc} $ASFLAGS -shared -o conftest.so conftest.s 1>&AS_MESSAGE_LOG_FD]) &&
1607        ac_try=`$READELF -S conftest.so | sed -n \
1608          ['${x;p;}
1609           s/^ *\[ *[1-9][0-9]*\]  *\([^ ][^ ]*\)  *\([^ ][^ ]*\) .*$/\2 \1/
1610           t a
1611           b
1612           : a
1613           H']`
1614   then
1615     libc_seen_a=no libc_seen_b=no
1616     set -- $ac_try
1617     while test $# -ge 2 -a "$1" = NOTE; do
1618       case "$2" in
1619       .note.a) libc_seen_a=yes ;;
1620       .note.b) libc_seen_b=yes ;;
1621       esac
1622       shift 2
1623     done
1624     case "$libc_seen_a$libc_seen_b" in
1625     yesyes)
1626       libc_cv_use_default_link=yes
1627       ;;
1628     *)
1629       echo >&AS_MESSAGE_LOG_FD "\
1630 $libc_seen_a$libc_seen_b from:
1631 $ac_try"
1632       ;;
1633     esac
1634   fi
1635   rm -f conftest*])
1636   use_default_link=$libc_cv_use_default_link
1637 fi
1638
1639 AC_CACHE_CHECK(linker output format, libc_cv_output_format, [dnl
1640 if libc_cv_output_format=`
1641 ${CC-cc} -nostartfiles -nostdlib -Wl,--print-output-format 2>&AS_MESSAGE_LOG_FD`
1642 then
1643   :
1644 else
1645   libc_cv_output_format=
1646 fi
1647 test -n "$libc_cv_output_format" || libc_cv_output_format=unknown])
1648 AC_SUBST(libc_cv_output_format)
1649
1650 AC_CACHE_CHECK(for -fno-toplevel-reorder -fno-section-anchors, libc_cv_fno_toplevel_reorder, [dnl
1651 cat > conftest.c <<EOF
1652 int foo;
1653 EOF
1654 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -fno-toplevel-reorder -fno-section-anchors
1655                             conftest.c 1>&AS_MESSAGE_LOG_FD])
1656 then
1657   libc_cv_fno_toplevel_reorder=yes
1658 else
1659   libc_cv_fno_toplevel_reorder=no
1660 fi
1661 rm -f conftest*])
1662 if test $libc_cv_fno_toplevel_reorder = yes; then
1663   fno_unit_at_a_time="-fno-toplevel-reorder -fno-section-anchors"
1664 else
1665   fno_unit_at_a_time=-fno-unit-at-a-time
1666 fi
1667 AC_SUBST(fno_unit_at_a_time)
1668
1669 AC_CACHE_CHECK(for -fstack-protector, libc_cv_ssp, [dnl
1670 LIBC_TRY_CC_OPTION([$CFLAGS $CPPFLAGS -Werror -fstack-protector],
1671                    [libc_cv_ssp=yes],
1672                    [libc_cv_ssp=no])
1673 ])
1674 AC_SUBST(libc_cv_ssp)
1675
1676 AC_CACHE_CHECK(for -fgnu89-inline, libc_cv_gnu89_inline, [dnl
1677 cat > conftest.c <<EOF
1678 int foo;
1679 #ifdef __GNUC_GNU_INLINE__
1680 main () { return 0;}
1681 #else
1682 #error
1683 #endif
1684 EOF
1685 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -std=gnu99 -fgnu89-inline
1686                             -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD])
1687 then
1688   libc_cv_gnu89_inline=yes
1689 else
1690   libc_cv_gnu89_inline=no
1691 fi
1692 rm -f conftest*])
1693 if test $libc_cv_gnu89_inline = yes; then
1694   gnu89_inline=-fgnu89-inline
1695 else
1696   gnu89_inline=
1697 fi
1698 AC_SUBST(gnu89_inline)
1699
1700 AC_CACHE_CHECK(whether cc puts quotes around section names,
1701                libc_cv_have_section_quotes,
1702                [cat > conftest.c <<EOF
1703                 static const int foo
1704                 __attribute__ ((section ("bar"))) = 1;
1705 EOF
1706                 if ${CC-cc} -S conftest.c -o conftest.s; then
1707                   if grep '\.section.*"bar"' conftest.s >/dev/null; then
1708                     libc_cv_have_section_quotes=yes
1709                   else
1710                     libc_cv_have_section_quotes=no
1711                   fi
1712                 else
1713                   libc_cv_have_section_quotes=unknown
1714                 fi
1715                 rm -f conftest.{c,s}
1716                 ])
1717 if test $libc_cv_have_section_quotes = yes; then
1718   AC_DEFINE(HAVE_SECTION_QUOTES)
1719 fi
1720
1721 AC_CACHE_CHECK(for assembler .weak directive, libc_cv_asm_weak_directive,
1722                [dnl
1723 cat > conftest.s <<EOF
1724 ${libc_cv_dot_text}
1725 .globl foo
1726 foo:
1727 .weak foo
1728 .weak bar; bar = foo
1729 EOF
1730 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1731   libc_cv_asm_weak_directive=yes
1732 else
1733   libc_cv_asm_weak_directive=no
1734 fi
1735 rm -f conftest*])
1736
1737 if test $libc_cv_asm_weak_directive = no; then
1738   AC_CACHE_CHECK(for assembler .weakext directive,
1739                  libc_cv_asm_weakext_directive,
1740                  [dnl
1741 cat > conftest.s <<EOF
1742 ${libc_cv_dot_text}
1743 .globl foo
1744 foo:
1745 .weakext bar foo
1746 .weakext baz
1747 .globl baz
1748 baz:
1749 EOF
1750   if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1751     libc_cv_asm_weakext_directive=yes
1752   else
1753     libc_cv_asm_weakext_directive=no
1754   fi
1755   rm -f conftest*])
1756
1757 fi # no .weak
1758
1759 if test $libc_cv_asm_weak_directive = yes; then
1760   AC_DEFINE(HAVE_ASM_WEAK_DIRECTIVE)
1761 elif test $libc_cv_asm_weakext_directive = yes; then
1762   AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
1763 fi
1764
1765 AC_CACHE_CHECK(whether CFI directives are supported, libc_cv_asm_cfi_directives, [dnl
1766 case $machine in
1767   sparc/sparc64*) cfi_offset=2047;;
1768   *) cfi_offset=0;;
1769 esac
1770 cat > conftest.s <<EOF
1771         .text
1772         .type   func,%function
1773 func:
1774         .cfi_startproc
1775         .cfi_remember_state
1776         .cfi_rel_offset 1, $cfi_offset
1777         .cfi_endproc
1778 EOF
1779 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1780   libc_cv_asm_cfi_directives=yes
1781 else
1782   libc_cv_asm_cfi_directives=no
1783 fi
1784 rm -f conftest*])
1785 if test $libc_cv_asm_cfi_directives = yes; then
1786   AC_DEFINE(HAVE_ASM_CFI_DIRECTIVES)
1787 fi
1788
1789 AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
1790 cat > conftest.c <<\EOF
1791 _start () {}
1792 int __eh_pc;
1793 __throw () {}
1794 EOF
1795 dnl No \ in command here because it ends up inside ''.
1796 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1797                             -nostdlib -nostartfiles -Wl,--no-whole-archive
1798                             -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
1799   libc_cv_ld_no_whole_archive=yes
1800 else
1801   libc_cv_ld_no_whole_archive=no
1802 fi
1803 rm -f conftest*])
1804 if test $libc_cv_ld_no_whole_archive = no; then
1805   AC_MSG_ERROR([support for --no-whole-archive is needed])
1806 fi
1807
1808 AC_CACHE_CHECK(for gcc -fexceptions, libc_cv_gcc_exceptions, [dnl
1809 cat > conftest.c <<\EOF
1810 _start () {}
1811 int __eh_pc;
1812 __throw () {}
1813 EOF
1814 dnl No \ in command here because it ends up inside ''.
1815 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1816                             -nostdlib -nostartfiles -fexceptions
1817                             -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
1818   libc_cv_gcc_exceptions=yes
1819 else
1820   libc_cv_gcc_exceptions=no
1821 fi
1822 rm -f conftest*])
1823 if test $libc_cv_gcc_exceptions = yes; then
1824   exceptions=-fexceptions
1825 fi
1826 AC_SUBST(exceptions)dnl
1827
1828 if test "$host_cpu" = powerpc ; then
1829 # Check for a bug present in at least versions 2.8.x of GCC
1830 # and versions 1.0.x of EGCS.
1831 AC_CACHE_CHECK(whether clobbering cr0 causes problems,libc_cv_c_asmcr0_bug,[dnl
1832 AC_TRY_COMPILE([int tester(int x) { asm ("" : : : "cc"); return x & 123; }],,
1833                libc_cv_c_asmcr0_bug='no',
1834                libc_cv_c_asmcr0_bug='yes')])
1835 if test "$libc_cv_c_asmcr0_bug" != 'no'; then
1836   AC_DEFINE(BROKEN_PPC_ASM_CR0)
1837 fi
1838 fi
1839
1840 AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
1841 cat > conftest.c <<\EOF
1842 void zero (void *x)
1843 {
1844   __builtin_memset (x, 0, 1000);
1845 }
1846 EOF
1847 dnl
1848 if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "memset" > /dev/null]);
1849 then
1850   libc_cv_gcc_builtin_memset=no
1851 else
1852   libc_cv_gcc_builtin_memset=yes
1853 fi
1854 rm -f conftest* ])
1855 if test "$libc_cv_gcc_builtin_memset" = yes ; then
1856   AC_DEFINE(HAVE_BUILTIN_MEMSET)
1857 fi
1858
1859 AC_CACHE_CHECK(for redirection of built-in functions, libc_cv_gcc_builtin_redirection, [dnl
1860 cat > conftest.c <<\EOF
1861 extern char *strstr (const char *, const char *) __asm ("my_strstr");
1862 char *foo (const char *a, const char *b)
1863 {
1864   return __builtin_strstr (a, b);
1865 }
1866 EOF
1867 dnl
1868 if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "my_strstr" > /dev/null]);
1869 then
1870   libc_cv_gcc_builtin_redirection=yes
1871 else
1872   libc_cv_gcc_builtin_redirection=no
1873 fi
1874 rm -f conftest* ])
1875 if test "$libc_cv_gcc_builtin_redirection" = no; then
1876   AC_MSG_ERROR([support for the symbol redirection needed])
1877 fi
1878
1879 dnl Check whether the compiler supports the __thread keyword.
1880 AC_CACHE_CHECK([for __thread], libc_cv_gcc___thread,
1881 [cat > conftest.c <<\EOF
1882 __thread int a = 42;
1883 EOF
1884 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then
1885   libc_cv_gcc___thread=yes
1886 else
1887   libc_cv_gcc___thread=no
1888 fi
1889 rm -f conftest*])
1890 if test "$libc_cv_gcc___thread" = no; then
1891   AC_MSG_ERROR([support for the __thread keyword is required])
1892 fi
1893
1894 dnl Check whether the compiler supports the tls_model attribute.
1895 AC_CACHE_CHECK([for tls_model attribute], libc_cv_gcc_tls_model_attr, [dnl
1896 cat > conftest.c <<\EOF
1897 extern __thread int a __attribute__((tls_model ("initial-exec")));
1898 EOF
1899 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -Werror conftest.c >&AS_MESSAGE_LOG_FD]); then
1900   libc_cv_gcc_tls_model_attr=yes
1901 else
1902   libc_cv_gcc_tls_model_attr=no
1903 fi
1904 rm -f conftest*])
1905 if test "$libc_cv_gcc_tls_model_attr" = no; then
1906   AC_MSG_ERROR([support for the tls_model attribute is required])
1907 fi
1908
1909 dnl Determine how to disable generation of FMA instructions.
1910 AC_CACHE_CHECK([for compiler option to disable generation of FMA instructions],
1911                libc_cv_cc_nofma, [dnl
1912 libc_cv_cc_nofma=
1913 for opt in -ffp-contract=off -mno-fused-madd; do
1914   LIBC_TRY_CC_OPTION([$opt], [libc_cv_cc_nofma=$opt; break])
1915 done])
1916
1917 if test -n "$submachine"; then
1918   AC_CACHE_CHECK([for compiler option for CPU variant],
1919                  libc_cv_cc_submachine, [dnl
1920   libc_cv_cc_submachine=no
1921   for opt in "-march=$submachine" "-mcpu=$submachine"; do
1922     LIBC_TRY_CC_OPTION([$opt], [
1923       libc_cv_cc_submachine="$opt"
1924       break], [])
1925   done])
1926   if test "x$libc_cv_cc_submachine" = xno; then
1927     AC_MSG_ERROR([${CC-cc} does not support $submachine])
1928   fi
1929 fi
1930 AC_SUBST(libc_cv_cc_submachine)
1931
1932 dnl Check whether we have the gd library available.
1933 AC_MSG_CHECKING(for libgd)
1934 if test "$with_gd" != "no"; then
1935   old_CFLAGS="$CFLAGS"
1936   CFLAGS="$CFLAGS $libgd_include"
1937   old_LDFLAGS="$LDFLAGS"
1938   LDFLAGS="$LDFLAGS $libgd_ldflags"
1939   old_LIBS="$LIBS"
1940   LIBS="$LIBS -lgd -lpng -lz -lm"
1941   AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
1942   CFLAGS="$old_CFLAGS"
1943   LDFLAGS="$old_LDFLAGS"
1944   LIBS="$old_LIBS"
1945 else
1946   LIBGD=no
1947 fi
1948 AC_MSG_RESULT($LIBGD)
1949 AC_SUBST(LIBGD)
1950
1951 # SELinux detection
1952 if test x$with_selinux = xno ; then
1953   have_selinux=no;
1954 else
1955   # See if we have the SELinux library
1956   AC_CHECK_LIB(selinux, is_selinux_enabled,
1957                have_selinux=yes, have_selinux=no)
1958   # See if we have the SELinux header with the NSCD permissions in it.
1959   if test x$have_selinux = xyes ; then
1960     AC_MSG_CHECKING([for NSCD Flask permissions in selinux/av_permissions.h])
1961     AC_TRY_COMPILE([#include <selinux/av_permissions.h>],
1962                     [#ifdef NSCD__SHMEMHOST
1963                      return 0;
1964                      #else
1965                      #error NSCD__SHMEMHOST not defined
1966                      #endif],
1967                     have_selinux=yes, have_selinux=no)
1968     AC_MSG_RESULT($have_selinux)
1969   fi
1970
1971   if test x$with_selinux = xyes ; then
1972     if test x$have_selinux = xno ; then
1973       AC_MSG_ERROR([SELinux explicitly required, but sufficiently recent SELinux library not found])
1974     fi
1975   fi
1976 fi
1977 # Check if we're building with SELinux support.
1978 if test "x$have_selinux" = xyes; then
1979   AC_DEFINE(HAVE_SELINUX, 1, [SELinux support])
1980
1981   # See if we have the libaudit library
1982   AC_CHECK_LIB(audit, audit_log_user_avc_message,
1983                have_libaudit=yes, have_libaudit=no)
1984   if test "x$have_libaudit" = xyes; then
1985     AC_DEFINE(HAVE_LIBAUDIT, 1, [SELinux libaudit support])
1986   fi
1987   AC_SUBST(have_libaudit)
1988
1989   # See if we have the libcap library
1990   AC_CHECK_LIB(cap, cap_init, have_libcap=yes, have_libcap=no)
1991   if test "x$have_libcap" = xyes; then
1992     AC_DEFINE(HAVE_LIBCAP, 1, [SELinux libcap support])
1993   fi
1994   AC_SUBST(have_libcap)
1995 fi
1996 AC_SUBST(have_selinux)
1997
1998 dnl check for the size of 'long double'.
1999 AC_CHECK_SIZEOF(long double, 0)
2000 sizeof_long_double=$ac_cv_sizeof_long_double
2001 AC_SUBST(sizeof_long_double)
2002
2003 CPPUNDEFS=
2004 dnl Check for silly hacked compilers predefining _FORTIFY_SOURCE.
2005 dnl Since we are building the implementations of the fortified functions here,
2006 dnl having the macro defined interacts very badly.
2007 AC_CACHE_CHECK([for _FORTIFY_SOURCE predefine], libc_cv_predef_fortify_source,
2008 [AC_TRY_COMPILE([], [
2009 #ifdef _FORTIFY_SOURCE
2010 # error bogon
2011 #endif],
2012                 [libc_cv_predef_fortify_source=no],
2013                 [libc_cv_predef_fortify_source=yes])])
2014 if test $libc_cv_predef_fortify_source = yes; then
2015   CPPUNDEFS="${CPPUNDEFS:+$CPPUNDEFS }-U_FORTIFY_SOURCE"
2016 fi
2017 AC_SUBST(CPPUNDEFS)
2018
2019 dnl Check for silly hacked compilers inserting -fstack-protector.
2020 dnl This breaks badly for the early startup code we compile, since
2021 dnl the compiled code can refer to a magic machine-dependent location
2022 dnl for the canary value before we have sufficient setup for that to
2023 dnl work.  It's also questionable to build all of libc with this flag
2024 dnl even when you're doing that for most applications you build, since
2025 dnl libc's code is so heavily-used and performance-sensitive.  If we
2026 dnl ever really want to make that work, it should be enabled explicitly
2027 dnl in the libc build, not inherited from implicit compiler settings.
2028 AC_CACHE_CHECK([whether $CC implicitly enables -fstack-protector],
2029                libc_cv_predef_stack_protector, [
2030 AC_TRY_COMPILE([extern void foobar (char *);],
2031                [char large_array[2048]; foobar (large_array);], [
2032 libc_undefs=`$NM -u conftest.o |
2033   LC_ALL=C $AWK '$1 == "U" { print $2 | "sort -u"; next } { exit(1) }' \
2034     2>&AS_MESSAGE_LOG_FD` || {
2035   AC_MSG_ERROR([confusing output from $NM -u])
2036 }
2037 echo >&AS_MESSAGE_LOG_FD "libc_undefs='$libc_undefs'"
2038 # On some architectures, there are architecture-specific undefined
2039 # symbols (resolved by the linker), so filter out unknown symbols.
2040 # This will fail to produce the correct result if the compiler
2041 # defaults to -fstack-protector but this produces an undefined symbol
2042 # other than __stack_chk_fail.  However, compilers like that have not
2043 # been encountered in practice.
2044 libc_undefs=`echo "$libc_undefs" | egrep '^(foobar|__stack_chk_fail)$'`
2045 case "$libc_undefs" in
2046 foobar) libc_cv_predef_stack_protector=no ;;
2047 '__stack_chk_fail
2048 foobar') libc_cv_predef_stack_protector=yes ;;
2049 *) AC_MSG_ERROR([unexpected symbols in test: $libc_undefs]) ;;
2050 esac],
2051                [AC_MSG_ERROR([test compilation failed])])
2052 ])
2053 libc_extra_cflags=
2054 if test $libc_cv_predef_stack_protector = yes; then
2055   libc_extra_cflags=-fno-stack-protector
2056 fi
2057 AC_SUBST(libc_extra_cflags)
2058
2059 ### End of automated tests.
2060 ### Now run sysdeps configure fragments.
2061
2062 # They also can set these variables.
2063 use_ldconfig=no
2064 ldd_rewrite_script=no
2065 libc_cv_sysconfdir=$sysconfdir
2066 libc_cv_localstatedir=$localstatedir
2067 libc_cv_gcc_unwind_find_fde=no
2068 libc_cv_idn=no
2069
2070 # Iterate over all the sysdep directories we will use, running their
2071 # configure fragments.
2072 for dir in $sysnames; do
2073   case $dir in
2074     /*) dest=$dir ;;
2075     *)  dest=$srcdir/$dir ;;
2076   esac
2077   if test -r $dest/configure; then
2078     AC_MSG_RESULT(running configure fragment for $dir)
2079     . $dest/configure
2080   fi
2081 done
2082
2083 if test x$libc_cv_gcc_unwind_find_fde = xyes; then
2084   AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
2085 fi
2086 AC_SUBST(libc_cv_gcc_unwind_find_fde)
2087
2088 # A sysdeps configure fragment can reset this if IFUNC is not actually
2089 # usable even though the assembler knows how to generate the symbol type.
2090 if test x"$libc_cv_ld_gnu_indirect_function" = xyes; then
2091   AC_DEFINE(HAVE_IFUNC)
2092 fi
2093
2094 # This is far from the AC_ARG_ENABLE that sets it so that a sysdeps
2095 # configure fragment can override the value to prevent this AC_DEFINE.
2096 AC_SUBST(use_nscd)
2097 if test "x$use_nscd" != xno; then
2098   AC_DEFINE([USE_NSCD])
2099 fi
2100 if test "x$build_nscd" = xdefault; then
2101   build_nscd=$use_nscd
2102 fi
2103
2104 # Test for old glibc 2.0.x headers so that they can be removed properly
2105 # Search only in includedir.
2106 AC_MSG_CHECKING(for old glibc 2.0.x headers)
2107 if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
2108 then
2109   old_glibc_headers=yes
2110 else
2111   old_glibc_headers=no
2112 fi
2113 AC_MSG_RESULT($old_glibc_headers)
2114 if test ${old_glibc_headers} = yes; then
2115   AC_MSG_WARN(*** During \"make install\" old headers from glibc 2.0.x will)
2116   AC_MSG_WARN(*** be removed.)
2117 fi
2118 AC_SUBST(old_glibc_headers)
2119
2120 AC_SUBST(libc_cv_slibdir)
2121 AC_SUBST(libc_cv_localedir)
2122 AC_SUBST(libc_cv_sysconfdir)
2123 AC_SUBST(libc_cv_localstatedir)
2124 AC_SUBST(libc_cv_rootsbindir)
2125 AC_SUBST(libc_cv_forced_unwind)
2126
2127 dnl sysdeps/CPU/configure.in checks set this via arch-specific asm tests
2128 AC_SUBST(libc_cv_cc_sse4)
2129 AC_SUBST(libc_cv_cc_avx)
2130 AC_SUBST(libc_cv_cc_sse2avx)
2131 AC_SUBST(libc_cv_cc_novzeroupper)
2132 AC_SUBST(libc_cv_cc_fma4)
2133 AC_SUBST(libc_cv_cc_nofma)
2134 AC_SUBST(libc_cv_as_i686)
2135 AC_SUBST(libc_cv_sparc_as_vis3)
2136
2137 if test x$use_ldconfig = xyes; then
2138   AC_DEFINE(USE_LDCONFIG)
2139 fi
2140 AC_SUBST(use_ldconfig)
2141 AC_SUBST(ldd_rewrite_script)
2142
2143 AC_SUBST(static)
2144 AC_SUBST(shared)
2145
2146 AC_CACHE_CHECK([whether -fPIC is default], libc_cv_pic_default,
2147 [libc_cv_pic_default=yes
2148 cat > conftest.c <<EOF
2149 #if defined __PIC__ || defined __pic__ || defined PIC || defined pic
2150 # error PIC is default.
2151 #endif
2152 EOF
2153 if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
2154   libc_cv_pic_default=no
2155 fi
2156 rm -f conftest.*])
2157 AC_SUBST(libc_cv_pic_default)
2158
2159 AC_SUBST(profile)
2160 AC_SUBST(static_nss)
2161
2162 AC_SUBST(DEFINES)
2163
2164 dnl See sysdeps/mach/configure.in for this variable.
2165 AC_SUBST(mach_interface_list)
2166
2167 VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
2168 RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
2169 AC_SUBST(VERSION)
2170 AC_SUBST(RELEASE)
2171
2172 AC_CONFIG_FILES([config.make Makefile])
2173 AC_CONFIG_COMMANDS([default],[[
2174 case $CONFIG_FILES in *config.make*)
2175 echo "$config_vars" >> config.make;;
2176 esac
2177 test -d bits || mkdir bits]],[[config_vars='$config_vars']])
2178 AC_OUTPUT