diff options
-rw-r--r-- | gcc/ChangeLog | 16 | ||||
-rw-r--r-- | gcc/acconfig.h | 29 | ||||
-rw-r--r-- | gcc/aclocal.m4 | 89 | ||||
-rw-r--r-- | gcc/config.in | 49 | ||||
-rwxr-xr-x | gcc/configure | 1477 | ||||
-rw-r--r-- | gcc/configure.in | 955 |
6 files changed, 1208 insertions, 1407 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f37d5f564d2..34b8c92f2a5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,19 @@ +2003-07-12 Zack Weinberg <zack@codesourcery.com> + + * aclocal.m4 (gcc_AC_CHECK_TYPE): Clone of AC_CHECK_TYPE, + uses three-argument AC_DEFINE so no acconfig.h entries are + needed. + (_gcc_COMPUTE_GAS_VERSION): Also provide gcc_cv_gas_vers + which contains the GAS version number as a scaled integer. + (gcc_GAS_VERSION_GTE_IFELSE): Use gcc_cv_gas_vers. Add + ability to check for ELF assembler. + (gcc_GAS_CHECK_FEATURE): New macro. + * configure.in: Use gcc_AC_CHECK_TYPE. Rewrite all + assembler feature checks using gcc_GAS_CHECK_FEATURE. + Use three-argument AC_DEFINE everywhere. + * acconfig.h: Deleted. + * config.in, configure: Regenerate. + 2003-07-12 Nathanael Nerode <neroden@gcc.gnu.org> * fixinc/inclhack.def (struct_sockaddr): Avoid "fixing" sockaddr_in diff --git a/gcc/acconfig.h b/gcc/acconfig.h deleted file mode 100644 index b31910a5e60..00000000000 --- a/gcc/acconfig.h +++ /dev/null @@ -1,29 +0,0 @@ -/* Define if your assembler supports specifying the maximum number - of bytes to skip when using the GAS .p2align command. */ -#undef HAVE_GAS_MAX_SKIP_P2ALIGN - -/* Define if your assembler supports .balign and .p2align. */ -#undef HAVE_GAS_BALIGN_AND_P2ALIGN - -/* Define if your assembler uses the old HImode fild and fist notation. */ -#undef HAVE_GAS_FILDS_FISTS - -/* Define to `int' if <sys/types.h> doesn't define. */ -#undef ssize_t - -/* Define if cpp should also search $prefix/include. */ -#undef PREFIX_INCLUDE_DIR - -@BOTTOM@ - -/* Bison unconditionally undefines `const' if neither `__STDC__' nor - __cplusplus are defined. That's a problem since we use `const' in - the GCC headers, and the resulting bison code is therefore type - unsafe. Thus, we must match the bison behavior here. */ - -#ifndef __STDC__ -#ifndef __cplusplus -#undef const -#define const -#endif -#endif diff --git a/gcc/aclocal.m4 b/gcc/aclocal.m4 index c313aaa300b..8c3c5ac8583 100644 --- a/gcc/aclocal.m4 +++ b/gcc/aclocal.m4 @@ -16,6 +16,27 @@ if test $ac_cv_header_stdbool_h = yes; then fi ]) +dnl Fixed AC_CHECK_TYPE that doesn't need anything in acconfig.h. +dnl Remove after migrating to 2.5x. +AC_DEFUN(gcc_AC_CHECK_TYPE, +[AC_REQUIRE([AC_HEADER_STDC])dnl +AC_MSG_CHECKING(for $1) +AC_CACHE_VAL(ac_cv_type_$1, +[AC_EGREP_CPP(dnl +changequote(<<,>>)dnl +<<(^|[^a-zA-Z_0-9])$1[^a-zA-Z_0-9]>>dnl +changequote([,]), [#include <sys/types.h> +#if STDC_HEADERS +#include <stdlib.h> +#include <stddef.h> +#endif], ac_cv_type_$1=yes, ac_cv_type_$1=no)])dnl +AC_MSG_RESULT($ac_cv_type_$1) +if test $ac_cv_type_$1 = no; then + AC_DEFINE($1, $2, [Define as \`$2' if <sys/types.h> doesn't define.]) +fi +]) + + dnl See whether we can include both string.h and strings.h. AC_DEFUN(gcc_AC_HEADER_STRING, [AC_CACHE_CHECK([whether string.h and strings.h may both be included], @@ -659,9 +680,12 @@ done gcc_cv_gas_major_version=`expr "$gcc_cv_gas_version" : "VERSION=\([[0-9]]*\)"` gcc_cv_gas_minor_version=`expr "$gcc_cv_gas_version" : "VERSION=[[0-9]]*\.\([[0-9]]*\)"` gcc_cv_gas_patch_version=`expr "$gcc_cv_gas_version" : "VERSION=[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)"` +gcc_cv_gas_vers=`expr \( \( $gcc_cv_gas_major_version \* 1000 \) \ + + $gcc_cv_gas_minor_version \) \* 1000 \ + + $gcc_cv_gas_patch_version` ]) []dnl # _gcc_COMPUTE_GAS_VERSION -dnl # gcc_GAS_VERSION_GTE_IFELSE(major, minor, patchlevel, +dnl # gcc_GAS_VERSION_GTE_IFELSE([elf,] major, minor, patchlevel, dnl # [command_if_true = :], [command_if_false = :]) dnl # Check to see if the version of GAS is greater than or dnl # equal to the specified version. @@ -670,23 +694,54 @@ dnl # The first ifelse() shortens the shell code if the patchlevel dnl # is unimportant (the usual case). The others handle missing dnl # commands. Note that the tests are structured so that the most dnl # common version number cases are tested first. +AC_DEFUN([_gcc_GAS_VERSION_GTE_IFELSE], +[ifelse([$1], elf, + [if test $in_tree_gas_is_elf = yes \ + &&], + [if]) test $gcc_cv_gas_vers -ge `expr \( \( $2 \* 1000 \) + $3 \) \* 1000 + $4` + then dnl +ifelse([$5],,:,[$5])[]dnl +ifelse([$6],,,[ + else $6]) +fi]) + AC_DEFUN([gcc_GAS_VERSION_GTE_IFELSE], -[AC_REQUIRE([_gcc_COMPUTE_GAS_VERSION]) []dnl -ifelse([$3],[0], -[if test $gcc_cv_gas_major_version -eq $1 \ -&& test $gcc_cv_gas_minor_version -ge $2 \ -|| test $gcc_cv_gas_major_version -gt $1 ; then -], -[if test $gcc_cv_gas_major_version -eq $1 \ -&& (test $gcc_cv_gas_minor_version -gt $2 \ - || (test $gcc_cv_gas_minor_version -eq $2 \ - && test $gcc_cv_gas_patch_version -ge $3 )) \ -|| test $gcc_cv_gas_major_version -gt $1 ; then -]) -ifelse([$4],[],[:],[$4]) -ifelse([$5],[],[],[else $5]) -fi -]) []dnl # gcc_GAS_VERSION_GTE_IFELSE +[AC_REQUIRE([_gcc_COMPUTE_GAS_VERSION])dnl +ifelse([$1], elf, [_gcc_GAS_VERSION_GTE_IFELSE($@)], + [_gcc_GAS_VERSION_GTE_IFELSE(,$@)])]) + +dnl gcc_GAS_CHECK_FEATURE(description, cv, [[elf,]major,minor,patchlevel], +dnl [extra switches to as], [assembler input], +dnl [extra testing logic], [command if feature available]) +dnl +dnl Checks for an assembler feature. If we are building an in-tree +dnl gas, the feature is available if the associated assembler version +dnl is greater than or equal to major.minor.patchlevel. If not, then +dnl ASSEMBLER INPUT is fed to the assembler and the feature is available +dnl if assembly succeeds. If EXTRA TESTING LOGIC is not the empty string, +dnl then it is run instead of simply setting CV to "yes" - it is responsible +dnl for doing so, if appropriate. +AC_DEFUN([gcc_GAS_CHECK_FEATURE], +[AC_CACHE_CHECK([assembler for $1], [$2], + [[$2]=no + ifelse([$3],,,[dnl + if test $in_tree_gas = yes; then + gcc_GAS_VERSION_GTE_IFELSE($3, [[$2]=yes]) + el])if test x$gcc_cv_as != x; then + echo ifelse(substr([$5],0,1),[$], "[$5]", '[$5]') > conftest.s + if AC_TRY_COMMAND([$gcc_cv_as $4 -o conftest.o conftest.s >&AC_FD_CC]) + then + ifelse([$6],, [$2]=yes, [$6]) + else + echo "configure: failed program was" >&AC_FD_CC + cat conftest.s >&AC_FD_CC + fi + rm -f conftest.o conftest.s + fi]) +ifelse([$7],,,[dnl +if test $[$2] = yes; then + $7 +fi])]) # lcmessage.m4 serial 3 (gettext-0.11.3) dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. diff --git a/gcc/config.in b/gcc/config.in index 9370196cfd2..106fcc605e8 100644 --- a/gcc/config.in +++ b/gcc/config.in @@ -34,22 +34,6 @@ /* Define vfork as fork if vfork does not work. */ #undef vfork -/* Define if your assembler supports specifying the maximum number - of bytes to skip when using the GAS .p2align command. */ -#undef HAVE_GAS_MAX_SKIP_P2ALIGN - -/* Define if your assembler supports .balign and .p2align. */ -#undef HAVE_GAS_BALIGN_AND_P2ALIGN - -/* Define if your assembler uses the old HImode fild and fist notation. */ -#undef HAVE_GAS_FILDS_FISTS - -/* Define to `int' if <sys/types.h> doesn't define. */ -#undef ssize_t - -/* Define if cpp should also search $prefix/include. */ -#undef PREFIX_INCLUDE_DIR - /* Define if you have the alphasort function. */ #undef HAVE_ALPHASORT @@ -288,6 +272,9 @@ first argument is NULL. */ #undef HAVE_WORKING_MBSTOWCS +/* Define as `int' if <sys/types.h> doesn't define. */ +#undef ssize_t + /* Define if printf supports %p. */ #undef HAVE_PRINTF_PTR @@ -442,6 +429,13 @@ /* Define to be the last portion of registry key on windows hosts. */ #undef WIN32_REGISTRY_KEY +/* Define if your assembler supports .balign and .p2align. */ +#undef HAVE_GAS_BALIGN_AND_P2ALIGN + +/* Define if your assembler supports specifying the maximum number + of bytes to skip when using the GAS .p2align command. */ +#undef HAVE_GAS_MAX_SKIP_P2ALIGN + /* Define if your assembler supports .subsection and .subsection -1 starts emitting at the beginning of your section. */ #undef HAVE_GAS_SUBSECTION_ORDERING @@ -449,10 +443,10 @@ /* Define if your assembler supports .weak. */ #undef HAVE_GAS_WEAK -/* Define if your assembler supports .hidden. */ +/* Define if your assembler and linker support .hidden. */ #undef HAVE_GAS_HIDDEN -/* Define if your assembler supports .uleb128. */ +/* Define if your assembler supports .sleb128 and .uleb128. */ #undef HAVE_AS_LEB128 /* Define if your assembler mis-optimizes .eh_frame data. */ @@ -482,6 +476,9 @@ /* Define if your assembler supports offsetable %lo(). */ #undef HAVE_AS_OFFSETABLE_LO10 +/* Define if your assembler uses the new HImode fild and fist notation. */ +#undef HAVE_GAS_FILDS_FISTS + /* Define true if the assembler supports '.long foo@GOTOFF'. */ #undef HAVE_AS_GOTOFF_IN_DATA @@ -498,9 +495,6 @@ /* Define if your assembler supports the --gdwarf2 option. */ #undef HAVE_AS_GDWARF2_DEBUG_FLAG -/* Define if your assembler supports the --gstabs option. */ -#undef HAVE_AS_GSTABS_DEBUG_FLAG - /* Define if your linker links a mix of read-only and read-write sections into a read-write section. */ #undef HAVE_LD_RO_RW_SECTION_MIXING @@ -514,15 +508,6 @@ /* Define if your MIPS libgloss linker scripts consistently include STARTUP directives. */ #undef HAVE_MIPS_LIBGLOSS_STARTUP_DIRECTIVES +/* Define to PREFIX/include if cpp should also search that directory. */ +#undef PREFIX_INCLUDE_DIR -/* Bison unconditionally undefines `const' if neither `__STDC__' nor - __cplusplus are defined. That's a problem since we use `const' in - the GCC headers, and the resulting bison code is therefore type - unsafe. Thus, we must match the bison behavior here. */ - -#ifndef __STDC__ -#ifndef __cplusplus -#undef const -#define const -#endif -#endif diff --git a/gcc/configure b/gcc/configure index 248c6cb6feb..fe3ac94ff5d 100755 --- a/gcc/configure +++ b/gcc/configure @@ -5767,6 +5767,9 @@ done gcc_cv_gas_major_version=`expr "$gcc_cv_gas_version" : "VERSION=\([0-9]*\)"` gcc_cv_gas_minor_version=`expr "$gcc_cv_gas_version" : "VERSION=[0-9]*\.\([0-9]*\)"` gcc_cv_gas_patch_version=`expr "$gcc_cv_gas_version" : "VERSION=[0-9]*\.[0-9]*\.\([0-9]*\)"` +gcc_cv_gas_vers=`expr \( \( $gcc_cv_gas_major_version \* 1000 \) \ + + $gcc_cv_gas_minor_version \) \* 1000 \ + + $gcc_cv_gas_patch_version` rm -f as$host_exeext $symbolic_link ../gas/as-new$host_exeext as$host_exeext 2>/dev/null @@ -5855,7 +5858,7 @@ esac # build->target linker and hope that it will have the same features # as the host->target linker we'll be using. echo $ac_n "checking what linker to use""... $ac_c" 1>&6 -echo "configure:5859: checking what linker to use" >&5 +echo "configure:5862: checking what linker to use" >&5 in_tree_ld=no gcc_cv_ld= gcc_cv_gld_major_version= @@ -5963,7 +5966,7 @@ esac # Figure out what nm we will be using. gcc_cv_binutils_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/binutils echo $ac_n "checking what nm to use""... $ac_c" 1>&6 -echo "configure:5967: checking what nm to use" >&5 +echo "configure:5970: checking what nm to use" >&5 in_tree_nm=no if test -x nm$host_exeext; then gcc_cv_nm=./nm$host_exeext @@ -5986,7 +5989,7 @@ esac # Figure out what objdump we will be using. echo $ac_n "checking what objdump to use""... $ac_c" 1>&6 -echo "configure:5990: checking what objdump to use" >&5 +echo "configure:5993: checking what objdump to use" >&5 in_tree_objdump=no if test -x objdump$host_exeext; then gcc_cv_objdump=./objdump$host_exeext @@ -6010,305 +6013,318 @@ case $in_tree_objdump in esac # Figure out what assembler alignment features are present. -echo $ac_n "checking assembler alignment features""... $ac_c" 1>&6 -echo "configure:6015: checking assembler alignment features" >&5 -gcc_cv_as_alignment_features=none -if test $in_tree_gas = yes; then - # Gas version 2.6 and later support for .balign and .p2align. - if test $gcc_cv_gas_major_version -eq 2 \ -&& test $gcc_cv_gas_minor_version -ge 6 \ -|| test $gcc_cv_gas_major_version -gt 2 ; then - +echo $ac_n "checking assembler for .balign and .p2align""... $ac_c" 1>&6 +echo "configure:6018: checking assembler for .balign and .p2align" >&5 +if eval "test \"`echo '$''{'gcc_cv_as_balign_and_p2align'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + gcc_cv_as_balign_and_p2align=no + if test $in_tree_gas = yes; then + if test $gcc_cv_gas_vers -ge `expr \( \( 2 \* 1000 \) + 6 \) \* 1000 + 0` + then gcc_cv_as_balign_and_p2align=yes +fi + elif test x$gcc_cv_as != x; then + echo '.balign 4 +.p2align 2' > conftest.s + if { ac_try='$gcc_cv_as -o conftest.o conftest.s >&5'; { (eval echo configure:6030: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } + then + gcc_cv_as_balign_and_p2align=yes + else + echo "configure: failed program was" >&5 + cat conftest.s >&5 + fi + rm -f conftest.o conftest.s + fi +fi - gcc_cv_as_alignment_features=".balign and .p2align" - cat >> confdefs.h <<\EOF +echo "$ac_t""$gcc_cv_as_balign_and_p2align" 1>&6 +if test $gcc_cv_as_balign_and_p2align = yes; then + cat >> confdefs.h <<\EOF #define HAVE_GAS_BALIGN_AND_P2ALIGN 1 EOF - - fi - # Gas version 2.8 and later support specifying the maximum - # bytes to skip when using .p2align. - if test $gcc_cv_gas_major_version -eq 2 \ -&& test $gcc_cv_gas_minor_version -ge 8 \ -|| test $gcc_cv_gas_major_version -gt 2 ; then - - - gcc_cv_as_alignment_features=".p2align including maximum skip" - cat >> confdefs.h <<\EOF -#define HAVE_GAS_MAX_SKIP_P2ALIGN 1 -EOF - - - +echo $ac_n "checking assembler for .p2align with maximum skip""... $ac_c" 1>&6 +echo "configure:6050: checking assembler for .p2align with maximum skip" >&5 +if eval "test \"`echo '$''{'gcc_cv_as_max_skip_p2align'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + gcc_cv_as_max_skip_p2align=no + if test $in_tree_gas = yes; then + if test $gcc_cv_gas_vers -ge `expr \( \( 2 \* 1000 \) + 8 \) \* 1000 + 0` + then gcc_cv_as_max_skip_p2align=yes +fi + elif test x$gcc_cv_as != x; then + echo '.p2align 4,,7' > conftest.s + if { ac_try='$gcc_cv_as -o conftest.o conftest.s >&5'; { (eval echo configure:6061: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } + then + gcc_cv_as_max_skip_p2align=yes + else + echo "configure: failed program was" >&5 + cat conftest.s >&5 + fi + rm -f conftest.o conftest.s + fi fi -elif test x$gcc_cv_as != x; then - # Check if we have .balign and .p2align - echo ".balign 4" > conftest.s - echo ".p2align 2" >> conftest.s - if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then - gcc_cv_as_alignment_features=".balign and .p2align" - cat >> confdefs.h <<\EOF -#define HAVE_GAS_BALIGN_AND_P2ALIGN 1 -EOF - - fi - rm -f conftest.s conftest.o - # Check if specifying the maximum bytes to skip when - # using .p2align is supported. - echo ".p2align 4,,7" > conftest.s - if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then - gcc_cv_as_alignment_features=".p2align including maximum skip" - cat >> confdefs.h <<\EOF +echo "$ac_t""$gcc_cv_as_max_skip_p2align" 1>&6 +if test $gcc_cv_as_max_skip_p2align = yes; then + cat >> confdefs.h <<\EOF #define HAVE_GAS_MAX_SKIP_P2ALIGN 1 EOF - fi - rm -f conftest.s conftest.o fi -echo "$ac_t""$gcc_cv_as_alignment_features" 1>&6 - -echo $ac_n "checking assembler subsection support""... $ac_c" 1>&6 -echo "configure:6076: checking assembler subsection support" >&5 -gcc_cv_as_subsections=no -if test $in_tree_gas = yes ; then - if test $gcc_cv_gas_major_version -eq 2 \ -&& test $gcc_cv_gas_minor_version -ge 9 \ -|| test $gcc_cv_gas_major_version -gt 2 ; then - - - test $in_tree_gas_is_elf = yes \ - && gcc_cv_as_subsections="working .subsection -1" - +echo $ac_n "checking assembler for working .subsection -1""... $ac_c" 1>&6 +echo "configure:6081: checking assembler for working .subsection -1" >&5 +if eval "test \"`echo '$''{'gcc_cv_as_subsection_m1'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + gcc_cv_as_subsection_m1=no + if test $in_tree_gas = yes; then + if test $in_tree_gas_is_elf = yes \ + && test $gcc_cv_gas_vers -ge `expr \( \( 2 \* 1000 \) + 9 \) \* 1000 + 0` + then gcc_cv_as_subsection_m1=yes fi - -elif test x$gcc_cv_as != x; then - # Check if we have .subsection - echo ".subsection 1" > conftest.s - if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then - gcc_cv_as_subsections=".subsection" - if test x$gcc_cv_nm != x; then - cat > conftest.s <<EOF -conftest_label1: .word 0 + elif test x$gcc_cv_as != x; then + echo 'conftest_label1: .word 0 .subsection -1 conftest_label2: .word 0 -.previous -EOF - if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then - $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1 - $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2 - if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1; then - : - else - gcc_cv_as_subsections="working .subsection -1" - fi - fi - fi - fi - rm -f conftest.s conftest.o conftest.nm1 conftest.nm2 +.previous' > conftest.s + if { ac_try='$gcc_cv_as -o conftest.o conftest.s >&5'; { (eval echo configure:6096: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } + then + if test x$gcc_cv_nm != x; then + $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1 + $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2 + if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1 + then : + else gcc_cv_as_subsection_m1=yes + fi + rm -f conftest.nm1 conftest.nm2 + fi + else + echo "configure: failed program was" >&5 + cat conftest.s >&5 + fi + rm -f conftest.o conftest.s + fi fi -if test x"$gcc_cv_as_subsections" = x"working .subsection -1"; then - cat >> confdefs.h <<\EOF + +echo "$ac_t""$gcc_cv_as_subsection_m1" 1>&6 +if test $gcc_cv_as_subsection_m1 = yes; then + cat >> confdefs.h <<\EOF #define HAVE_GAS_SUBSECTION_ORDERING 1 EOF fi -echo "$ac_t""$gcc_cv_as_subsections" 1>&6 - -echo $ac_n "checking assembler weak support""... $ac_c" 1>&6 -echo "configure:6124: checking assembler weak support" >&5 -gcc_cv_as_weak=no -if test $in_tree_gas = yes ; then - if test $gcc_cv_gas_major_version -eq 2 \ -&& test $gcc_cv_gas_minor_version -ge 2 \ -|| test $gcc_cv_gas_major_version -gt 2 ; then - - - gcc_cv_as_weak="yes" - +echo $ac_n "checking assembler for .weak""... $ac_c" 1>&6 +echo "configure:6124: checking assembler for .weak" >&5 +if eval "test \"`echo '$''{'gcc_cv_as_weak'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + gcc_cv_as_weak=no + if test $in_tree_gas = yes; then + if test $gcc_cv_gas_vers -ge `expr \( \( 2 \* 1000 \) + 2 \) \* 1000 + 0` + then gcc_cv_as_weak=yes fi - -elif test x$gcc_cv_as != x; then - # Check if we have .weak - echo " .weak foobar" > conftest.s - if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then - gcc_cv_as_weak="yes" - fi - rm -f conftest.s conftest.o conftest.nm1 conftest.nm2 + elif test x$gcc_cv_as != x; then + echo ' .weak foobar' > conftest.s + if { ac_try='$gcc_cv_as -o conftest.o conftest.s >&5'; { (eval echo configure:6135: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } + then + gcc_cv_as_weak=yes + else + echo "configure: failed program was" >&5 + cat conftest.s >&5 + fi + rm -f conftest.o conftest.s + fi fi -if test x"$gcc_cv_as_weak" = xyes; then - cat >> confdefs.h <<\EOF + +echo "$ac_t""$gcc_cv_as_weak" 1>&6 +if test $gcc_cv_as_weak = yes; then + cat >> confdefs.h <<\EOF #define HAVE_GAS_WEAK 1 EOF fi -echo "$ac_t""$gcc_cv_as_weak" 1>&6 - -echo $ac_n "checking assembler hidden support""... $ac_c" 1>&6 -echo "configure:6154: checking assembler hidden support" >&5 -gcc_cv_as_hidden=no -if test $in_tree_gas = yes ; then - if test $gcc_cv_gas_major_version -eq 2 \ -&& (test $gcc_cv_gas_minor_version -gt 12 \ - || (test $gcc_cv_gas_minor_version -eq 12 \ - && test $gcc_cv_gas_patch_version -ge 1 )) \ -|| test $gcc_cv_gas_major_version -gt 2 ; then +# .hidden needs to be supported in both the assembler and the linker, +# because GNU LD versions before 2.12.1 have buggy support for STV_HIDDEN. +# This is irritatingly difficult to feature test for; we have to check the +# date string after the version number. If we've got an in-tree +# ld, we don't know its patchlevel version, so we set the baseline at 2.13 +# to be safe. +# The gcc_GAS_CHECK_FEATURE call just sets a cache variable. +echo $ac_n "checking assembler for .hidden""... $ac_c" 1>&6 +echo "configure:6162: checking assembler for .hidden" >&5 +if eval "test \"`echo '$''{'gcc_cv_as_hidden'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + gcc_cv_as_hidden=no + if test $in_tree_gas = yes; then + if test $in_tree_gas_is_elf = yes \ + && test $gcc_cv_gas_vers -ge `expr \( \( 2 \* 1000 \) + 13 \) \* 1000 + 0` + then gcc_cv_as_hidden=yes +fi + elif test x$gcc_cv_as != x; then + echo ' .hidden foobar +foobar:' > conftest.s + if { ac_try='$gcc_cv_as -o conftest.o conftest.s >&5'; { (eval echo configure:6175: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } + then + gcc_cv_as_hidden=yes + else + echo "configure: failed program was" >&5 + cat conftest.s >&5 + fi + rm -f conftest.o conftest.s + fi +fi - test $in_tree_gas_is_elf = yes && gcc_cv_as_hidden="yes" - +echo "$ac_t""$gcc_cv_as_hidden" 1>&6 -fi -elif test x$gcc_cv_as != x; then - # Check if we have .hidden - echo " .hidden foobar" > conftest.s - echo "foobar:" >> conftest.s - if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then - gcc_cv_as_hidden="yes" - fi - rm -f conftest.s conftest.o conftest.nm1 conftest.nm2 - - # GNU LD versions before 2.12.1 have buggy support for STV_HIDDEN. - # This is irritatingly difficult to feature test for. Look for - # the date string after the version number. - ld_ver=`$gcc_cv_ld --version 2>/dev/null | head -1` - if echo "$ld_ver" | grep GNU > /dev/null; then - ld_vers=`echo $ld_ver | sed -n \ - -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \ - -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \ - -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \ - -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\)[ ].*$,\1,p' \ - -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)[ ].*$,\1,p' \ - -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)[ ].*$,\1,p'` - ld_date=`echo $ld_ver | sed -n 's,^.*\([2-9][0-9][0-9][0-9]\)[-]*\([01][0-9]\)[-]*\([0-3][0-9]\).*$,\1\2\3,p'` - if test 0"$ld_date" -lt 20020404; then - if test -n "$ld_date"; then - # If there was date string, but was earlier than 2002-04-04, fail - gcc_cv_as_hidden="no" - elif test -z "$ld_vers"; then - # If there was no date string nor ld version number, something is wrong - gcc_cv_as_hidden="no" - else - ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'` - ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'` - ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'` - test -z "$ld_vers_patch" && ld_vers_patch=0 - if test "$ld_vers_major" -lt 2; then - gcc_cv_as_hidden="no" - elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 12; then - gcc_cv_as_hidden="no" - elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 12 \ - -a "$ld_vers_patch" -eq 0; then - gcc_cv_as_hidden="no" - fi - fi - fi +echo $ac_n "checking linker for .hidden support""... $ac_c" 1>&6 +echo "configure:6190: checking linker for .hidden support" >&5 +if eval "test \"`echo '$''{'gcc_cv_ld_hidden'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test $in_tree_ld = yes ; then + gcc_cv_ld_hidden=no + if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 13 -o "$gcc_cv_gld_major_version" -gt 2 \ + && test $in_tree_ld_is_elf = yes; then + gcc_cv_ld_hidden=yes + fi +else + gcc_cv_ld_hidden=yes + ld_ver=`$gcc_cv_ld --version 2>/dev/null | head -1` + if echo "$ld_ver" | grep GNU > /dev/null; then + ld_vers=`echo $ld_ver | sed -n \ + -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \ + -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \ + -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \ + -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\)[ ].*$,\1,p' \ + -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)[ ].*$,\1,p' \ + -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)[ ].*$,\1,p'` + ld_date=`echo $ld_ver | sed -n 's,^.*\([2-9][0-9][0-9][0-9]\)[-]*\([01][0-9]\)[-]*\([0-3][0-9]\).*$,\1\2\3,p'` + if test 0"$ld_date" -lt 20020404; then + if test -n "$ld_date"; then + # If there was date string, but was earlier than 2002-04-04, fail + gcc_cv_ld_hidden=no + elif test -z "$ld_vers"; then + # If there was no date string nor ld version number, something is wrong + gcc_cv_ld_hidden=no + else + ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'` + ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'` + ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'` + test -z "$ld_vers_patch" && ld_vers_patch=0 + if test "$ld_vers_major" -lt 2; then + gcc_cv_ld_hidden=no + elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 12; then + gcc_cv_ld_hidden="no" + elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 12 -a "$ld_vers_patch" -eq 0; then + gcc_cv_ld_hidden=no fi -fi -case "$target" in - mips-sgi-irix6*) - if test x"$gnu_ld_flag" = x"no"; then - # Even if using gas with .hidden support, the resulting object files - # cannot be linked with the IRIX 6 O32 linker. With the N32 and - # N64 linkers, the problem is that the linker refuses to accept - # -call_shared (passed by default to the linker) and -r (used to - # link the object file generated without .hidden directives with - # one that hides symbols), so we also lose. - gcc_cv_as_hidden=no + fi fi - ;; -esac -if test x"$gcc_cv_as_hidden" = xyes; then - cat >> confdefs.h <<\EOF -#define HAVE_GAS_HIDDEN 1 -EOF - + else + case "$target" in + mips-sgi-irix6*) + if test x"$gnu_ld_flag" = x"no"; then + # Even if using gas with .hidden support, the resulting object files + # cannot be linked with the IRIX 6 O32 linker. With the N32 and + # N64 linkers, the problem is that the linker refuses to accept + # -call_shared (passed by default to the linker) and -r (used to + # link the object file generated without .hidden directives with + # one that hides symbols), so we also lose. + gcc_cv_ld_hidden=no + fi + ;; + esac + fi +fi fi -echo "$ac_t""$gcc_cv_as_hidden" 1>&6 -libgcc_visibility=$gcc_cv_as_hidden - - -echo $ac_n "checking assembler leb128 support""... $ac_c" 1>&6 -echo "configure:6239: checking assembler leb128 support" >&5 -gcc_cv_as_leb128=no -if test $in_tree_gas = yes ; then - if test $gcc_cv_gas_major_version -eq 2 \ -&& test $gcc_cv_gas_minor_version -ge 11 \ -|| test $gcc_cv_gas_major_version -gt 2 ; then +echo "$ac_t""$gcc_cv_ld_hidden" 1>&6 +libgcc_visibility=no - test $in_tree_gas_is_elf = yes && gcc_cv_as_leb128="yes" - +if test $gcc_cv_as_hidden = yes && test $gcc_cv_ld_hidden=yes; then + libgcc_visibility=yes + cat >> confdefs.h <<\EOF +#define HAVE_GAS_HIDDEN 1 +EOF fi -elif test x$gcc_cv_as != x; then - # Check if we have .[us]leb128, and support symbol arithmetic with it. - cat > conftest.s <<EOF - .data +# Check if we have .[us]leb128, and support symbol arithmetic with it. +echo $ac_n "checking assembler for .sleb128 and .uleb128""... $ac_c" 1>&6 +echo "configure:6264: checking assembler for .sleb128 and .uleb128" >&5 +if eval "test \"`echo '$''{'gcc_cv_as_leb128'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + gcc_cv_as_leb128=no + if test $in_tree_gas = yes; then + if test $in_tree_gas_is_elf = yes \ + && test $gcc_cv_gas_vers -ge `expr \( \( 2 \* 1000 \) + 11 \) \* 1000 + 0` + then gcc_cv_as_leb128=yes +fi + elif test x$gcc_cv_as != x; then + echo ' .data .uleb128 L2 - L1 L1: .uleb128 1280 .sleb128 -1010 -L2: -EOF - if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then - gcc_cv_as_leb128="yes" - - # GAS versions before 2.11 do not support uleb128, - # despite appearing to. - # ??? There exists an elf-specific test that will crash - # the assembler. Perhaps it's better to figure out whether - # arbitrary sections are supported and try the test. - as_ver=`$gcc_cv_as --version 2>/dev/null | head -1` - if echo "$as_ver" | grep GNU > /dev/null; then - as_ver=`echo $as_ver | sed -e 's/GNU assembler \([0-9.][0-9.]*\).*/\1/'` - as_major=`echo $as_ver | sed 's/\..*//'` - as_minor=`echo $as_ver | sed 's/[^.]*\.\([0-9]*\).*/\1/'` - if test $as_major -eq 2 -a $as_minor -lt 11; then - gcc_cv_as_leb128="no" - fi - fi - fi - rm -f conftest.s conftest.o conftest.nm1 conftest.nm2 +L2:' > conftest.s + if { ac_try='$gcc_cv_as -o conftest.o conftest.s >&5'; { (eval echo configure:6281: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } + then + # GAS versions before 2.11 do not support uleb128, + # despite appearing to. + # ??? There exists an elf-specific test that will crash + # the assembler. Perhaps it's better to figure out whether + # arbitrary sections are supported and try the test. + as_ver=`$gcc_cv_as --version 2>/dev/null | head -1` + if echo "$as_ver" | grep GNU > /dev/null; then + as_ver=`echo $as_ver | sed -e 's/GNU assembler \([0-9.][0-9.]*\).*/\1/'` + as_major=`echo $as_ver | sed 's/\..*//'` + as_minor=`echo $as_ver | sed 's/[^.]*\.\([0-9]*\).*/\1/'` + if test $as_major -eq 2 && test $as_minor -lt 11 + then : + else gcc_cv_as_leb128=yes + fi + fi + else + echo "configure: failed program was" >&5 + cat conftest.s >&5 + fi + rm -f conftest.o conftest.s + fi fi -if test x"$gcc_cv_as_leb128" = xyes; then - cat >> confdefs.h <<\EOF + +echo "$ac_t""$gcc_cv_as_leb128" 1>&6 +if test $gcc_cv_as_leb128 = yes; then + cat >> confdefs.h <<\EOF #define HAVE_AS_LEB128 1 EOF fi -echo "$ac_t""$gcc_cv_as_leb128" 1>&6 - -echo $ac_n "checking assembler eh_frame optimization""... $ac_c" 1>&6 -echo "configure:6291: checking assembler eh_frame optimization" >&5 -gcc_cv_as_eh_frame=no -if test $in_tree_gas = yes ; then - if test $gcc_cv_gas_major_version -eq 2 \ -&& test $gcc_cv_gas_minor_version -ge 12 \ -|| test $gcc_cv_gas_major_version -gt 2 ; then - - - test $in_tree_gas_is_elf = yes && gcc_cv_as_eh_frame="yes" - +# GAS versions up to and including 2.11.0 may mis-optimize +# .eh_frame data. +echo $ac_n "checking assembler for eh_frame optimization""... $ac_c" 1>&6 +echo "configure:6317: checking assembler for eh_frame optimization" >&5 +if eval "test \"`echo '$''{'gcc_cv_as_eh_frame'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + gcc_cv_as_eh_frame=no + if test $in_tree_gas = yes; then + if test $in_tree_gas_is_elf = yes \ + && test $gcc_cv_gas_vers -ge `expr \( \( 2 \* 1000 \) + 12 \) \* 1000 + 0` + then gcc_cv_as_eh_frame=yes fi - -elif test x$gcc_cv_as != x; then - # Check if this is GAS. - as_ver=`$gcc_cv_as --version < /dev/null 2> /dev/null | head -1` - rm -f a.out 2> /dev/null - if echo "$as_ver" | grep GNU > /dev/null; then - # Versions up to and including 2.11.0 may mis-optimize - # .eh_frame data. Try something. - cat > conftest.s <<EOF - .text + elif test x$gcc_cv_as != x; then + echo ' .text .LFB1: .4byte 0 .L1: @@ -6339,74 +6355,85 @@ __FRAME_BEGIN__: .4byte .LFE1-.LFB1 .byte 0x4 .4byte .L1-.LFB1 -.LEFDE1: -EOF - cat > conftest.lit <<EOF +.LEFDE1:' > conftest.s + if { ac_try='$gcc_cv_as -o conftest.o conftest.s >&5'; { (eval echo configure:6360: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } + then + cat > conftest.lit <<EOF 0000 10000000 00000000 017a0001 781a0004 .........z..x... 0010 01000000 12000000 18000000 00000000 ................ 0020 08000000 04080000 0044 .........D EOF - cat > conftest.big <<EOF + cat > conftest.big <<EOF 0000 00000010 00000000 017a0001 781a0004 .........z..x... 0010 00000001 00000012 00000018 00000000 ................ 0020 00000008 04000000 0844 .........D EOF - # If the assembler didn't choke, and we can objdump, - # and we got the correct data, then succeed. - if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \ - && $gcc_cv_objdump -s -j .eh_frame conftest.o 2>/dev/null \ - | tail -3 > conftest.got \ - && { cmp conftest.lit conftest.got > /dev/null 2>&1 \ - || cmp conftest.big conftest.got > /dev/null 2>&1; } - then - gcc_cv_as_eh_frame="yes" - else - gcc_cv_as_eh_frame="bad" - if $gcc_cv_as -o conftest.o --traditional-format /dev/null; then - cat >> confdefs.h <<\EOF -#define USE_AS_TRADITIONAL_FORMAT 1 -EOF - - fi - fi - fi - rm -f conftest.* + # If the assembler didn't choke, and we can objdump, + # and we got the correct data, then succeed. + if test x$gcc_cv_objdump != x \ + && $gcc_cv_objdump -s -j .eh_frame conftest.o 2>/dev/null \ + | tail -3 > conftest.got \ + && { cmp conftest.lit conftest.got > /dev/null 2>&1 \ + || cmp conftest.big conftest.got > /dev/null 2>&1; } + then + gcc_cv_as_eh_frame=yes + elif { ac_try='$gcc_cv_as -o conftest.o --traditional-format /dev/null'; { (eval echo configure:6381: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then + gcc_cv_as_eh_frame=buggy + else + # Uh oh, what do we do now? + gcc_cv_as_eh_frame=no + fi + else + echo "configure: failed program was" >&5 + cat conftest.s >&5 + fi + rm -f conftest.o conftest.s + fi fi -echo "$ac_t""$gcc_cv_as_eh_frame" 1>&6 -echo $ac_n "checking assembler section merging support""... $ac_c" 1>&6 -echo "configure:6379: checking assembler section merging support" >&5 -gcc_cv_as_shf_merge=no -if test $in_tree_gas = yes ; then - if test $gcc_cv_gas_major_version -eq 2 \ -&& test $gcc_cv_gas_minor_version -ge 12 \ -|| test $gcc_cv_gas_major_version -gt 2 ; then +echo "$ac_t""$gcc_cv_as_eh_frame" 1>&6 - test $in_tree_gas_is_elf = yes && gcc_cv_as_shf_merge="yes" - +if test $gcc_cv_as_eh_frame = buggy; then + cat >> confdefs.h <<\EOF +#define USE_AS_TRADITIONAL_FORMAT 1 +EOF fi -elif test x$gcc_cv_as != x; then - # Check if we support SHF_MERGE sections - echo '.section .rodata.str, "aMS", @progbits, 1' > conftest.s - if $gcc_cv_as --fatal-warnings -o conftest.o conftest.s > /dev/null 2>&1; then - gcc_cv_as_shf_merge=yes - fi - rm -f conftest.s conftest.o +echo $ac_n "checking assembler for section merging support""... $ac_c" 1>&6 +echo "configure:6406: checking assembler for section merging support" >&5 +if eval "test \"`echo '$''{'gcc_cv_as_shf_merge'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + gcc_cv_as_shf_merge=no + if test $in_tree_gas = yes; then + if test $in_tree_gas_is_elf = yes \ + && test $gcc_cv_gas_vers -ge `expr \( \( 2 \* 1000 \) + 12 \) \* 1000 + 0` + then gcc_cv_as_shf_merge=yes +fi + elif test x$gcc_cv_as != x; then + echo '.section .rodata.str, "aMS", @progbits, 1' > conftest.s + if { ac_try='$gcc_cv_as --fatal-warnings -o conftest.o conftest.s >&5'; { (eval echo configure:6418: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } + then + gcc_cv_as_shf_merge=yes + else + echo "configure: failed program was" >&5 + cat conftest.s >&5 + fi + rm -f conftest.o conftest.s + fi fi -if test x"$gcc_cv_as_shf_merge" = xyes; then - cat >> confdefs.h <<\EOF + +echo "$ac_t""$gcc_cv_as_shf_merge" 1>&6 +if test $gcc_cv_as_shf_merge = yes; then + cat >> confdefs.h <<\EOF #define HAVE_GAS_SHF_MERGE 1 EOF fi -echo "$ac_t""$gcc_cv_as_shf_merge" 1>&6 -echo $ac_n "checking assembler thread-local storage support""... $ac_c" 1>&6 -echo "configure:6409: checking assembler thread-local storage support" >&5 -gcc_cv_as_tls=no +# Thread-local storage - the check is heavily parametrized. conftest_s= tls_first_major= tls_first_minor= @@ -6583,58 +6610,57 @@ foo: .long 25 ;; esac if test -z "$tls_first_major"; then - : -elif test $in_tree_gas = yes ; then - if test $gcc_cv_gas_major_version -eq $tls_first_major \ -&& test $gcc_cv_gas_minor_version -ge $tls_first_minor \ -|| test $gcc_cv_gas_major_version -gt $tls_first_major ; then - - - gcc_cv_as_tls=yes - - + : # If we don't have a check, assume no support. +else + echo $ac_n "checking assembler for thread-local storage support""... $ac_c" 1>&6 +echo "configure:6617: checking assembler for thread-local storage support" >&5 +if eval "test \"`echo '$''{'gcc_cv_as_tls'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + gcc_cv_as_tls=no + if test $in_tree_gas = yes; then + if test $gcc_cv_gas_vers -ge `expr \( \( $tls_first_major \* 1000 \) + $tls_first_minor \) \* 1000 + 0` + then gcc_cv_as_tls=yes fi - -elif test x$gcc_cv_as != x; then - echo "$conftest_s" > conftest.s - if $gcc_cv_as $tls_as_opt --fatal-warnings -o conftest.o conftest.s > /dev/null 2>&1 - then - gcc_cv_as_tls=yes + elif test x$gcc_cv_as != x; then + echo "$conftest_s" > conftest.s + if { ac_try='$gcc_cv_as $tls_as_opt --fatal-warnings -o conftest.o conftest.s >&5'; { (eval echo configure:6628: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } + then + gcc_cv_as_tls=yes + else + echo "configure: failed program was" >&5 + cat conftest.s >&5 + fi + rm -f conftest.o conftest.s fi - rm -f conftest.s conftest.o fi -if test "$gcc_cv_as_tls" = yes; then + +echo "$ac_t""$gcc_cv_as_tls" 1>&6 +if test $gcc_cv_as_tls = yes; then cat >> confdefs.h <<\EOF #define HAVE_AS_TLS 1 EOF fi -echo "$ac_t""$gcc_cv_as_tls" 1>&6 +fi + +# Target-specific assembler checks. case "$target" in # All TARGET_ABI_OSF targets. alpha*-*-osf* | alpha*-*-linux* | alpha*-*-*bsd*) - echo $ac_n "checking assembler supports explicit relocations""... $ac_c" 1>&6 -echo "configure:6619: checking assembler supports explicit relocations" >&5 -if eval "test \"`echo '$''{'gcc_cv_as_explicit_relocs'+set}'`\" = set"; then + echo $ac_n "checking assembler for explicit relocation support""... $ac_c" 1>&6 +echo "configure:6654: checking assembler for explicit relocation support" >&5 +if eval "test \"`echo '$''{'gcc_cv_as_alpha_explicit_relocs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - - gcc_cv_as_explicit_relocs=unknown - if test $in_tree_gas = yes ; then - if test $gcc_cv_gas_major_version -eq 2 \ -&& test $gcc_cv_gas_minor_version -ge 12 \ -|| test $gcc_cv_gas_major_version -gt 2 ; then - - - gcc_cv_as_explicit_relocs=yes - - + gcc_cv_as_alpha_explicit_relocs=no + if test $in_tree_gas = yes; then + if test $gcc_cv_gas_vers -ge `expr \( \( 2 \* 1000 \) + 12 \) \* 1000 + 0` + then gcc_cv_as_alpha_explicit_relocs=yes fi - - elif test x$gcc_cv_as != x; then - cat > conftest.s << 'EOF' - .set nomacro + elif test x$gcc_cv_as != x; then + echo ' .set nomacro .text extbl $3, $2, $3 !lituse_bytoff!1 ldq $2, a($29) !literal!1 @@ -6646,354 +6672,377 @@ fi lda $0, c($29) !gprel ldah $1, d($29) !gprelhigh lda $1, d($1) !gprellow - lda $29, 0($29) !gpdisp!3 -EOF - if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then - gcc_cv_as_explicit_relocs=yes - else - gcc_cv_as_explicit_relocs=no - fi - rm -f conftest.s conftest.o - fi - + lda $29, 0($29) !gpdisp!3' > conftest.s + if { ac_try='$gcc_cv_as -o conftest.o conftest.s >&5'; { (eval echo configure:6677: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } + then + gcc_cv_as_alpha_explicit_relocs=yes + else + echo "configure: failed program was" >&5 + cat conftest.s >&5 + fi + rm -f conftest.o conftest.s + fi fi -echo "$ac_t""$gcc_cv_as_explicit_relocs" 1>&6 - if test "x$gcc_cv_as_explicit_relocs" = xyes; then - cat >> confdefs.h <<\EOF +echo "$ac_t""$gcc_cv_as_alpha_explicit_relocs" 1>&6 +if test $gcc_cv_as_alpha_explicit_relocs = yes; then + cat >> confdefs.h <<\EOF #define HAVE_AS_EXPLICIT_RELOCS 1 EOF - fi +fi ;; + sparc*-*-*) - echo $ac_n "checking assembler .register pseudo-op support""... $ac_c" 1>&6 -echo "configure:6672: checking assembler .register pseudo-op support" >&5 -if eval "test \"`echo '$''{'gcc_cv_as_register_pseudo_op'+set}'`\" = set"; then + echo $ac_n "checking assembler for .register""... $ac_c" 1>&6 +echo "configure:6699: checking assembler for .register" >&5 +if eval "test \"`echo '$''{'gcc_cv_as_sparc_register_op'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - - gcc_cv_as_register_pseudo_op=unknown - if test x$gcc_cv_as != x; then - # Check if we have .register - echo ".register %g2, #scratch" > conftest.s - if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then - gcc_cv_as_register_pseudo_op=yes - else - gcc_cv_as_register_pseudo_op=no - fi - rm -f conftest.s conftest.o - fi - + gcc_cv_as_sparc_register_op=no + if test x$gcc_cv_as != x; then + echo '.register %g2, #scratch' > conftest.s + if { ac_try='$gcc_cv_as -o conftest.o conftest.s >&5'; { (eval echo configure:6706: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } + then + gcc_cv_as_sparc_register_op=yes + else + echo "configure: failed program was" >&5 + cat conftest.s >&5 + fi + rm -f conftest.o conftest.s + fi fi -echo "$ac_t""$gcc_cv_as_register_pseudo_op" 1>&6 - if test "x$gcc_cv_as_register_pseudo_op" = xyes; then - cat >> confdefs.h <<\EOF +echo "$ac_t""$gcc_cv_as_sparc_register_op" 1>&6 +if test $gcc_cv_as_sparc_register_op = yes; then + cat >> confdefs.h <<\EOF #define HAVE_AS_REGISTER_PSEUDO_OP 1 EOF - fi +fi - echo $ac_n "checking assembler supports -relax""... $ac_c" 1>&6 -echo "configure:6700: checking assembler supports -relax" >&5 -if eval "test \"`echo '$''{'gcc_cv_as_relax_opt'+set}'`\" = set"; then + echo $ac_n "checking assembler for -relax option""... $ac_c" 1>&6 +echo "configure:6726: checking assembler for -relax option" >&5 +if eval "test \"`echo '$''{'gcc_cv_as_sparc_relax'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - - gcc_cv_as_relax_opt=unknown - if test x$gcc_cv_as != x; then - # Check if gas supports -relax - echo ".text" > conftest.s - if $gcc_cv_as -relax -o conftest.o conftest.s > /dev/null 2>&1; then - gcc_cv_as_relax_opt=yes - else - gcc_cv_as_relax_opt=no - fi - rm -f conftest.s conftest.o - fi - + gcc_cv_as_sparc_relax=no + if test x$gcc_cv_as != x; then + echo '.text' > conftest.s + if { ac_try='$gcc_cv_as -relax -o conftest.o conftest.s >&5'; { (eval echo configure:6733: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } + then + gcc_cv_as_sparc_relax=yes + else + echo "configure: failed program was" >&5 + cat conftest.s >&5 + fi + rm -f conftest.o conftest.s + fi fi -echo "$ac_t""$gcc_cv_as_relax_opt" 1>&6 - if test "x$gcc_cv_as_relax_opt" = xyes; then - cat >> confdefs.h <<\EOF +echo "$ac_t""$gcc_cv_as_sparc_relax" 1>&6 +if test $gcc_cv_as_sparc_relax = yes; then + cat >> confdefs.h <<\EOF #define HAVE_AS_RELAX_OPTION 1 EOF - fi +fi - echo $ac_n "checking assembler and linker support unaligned pc related relocs""... $ac_c" 1>&6 -echo "configure:6728: checking assembler and linker support unaligned pc related relocs" >&5 + echo $ac_n "checking assembler for unaligned pcrel relocs""... $ac_c" 1>&6 +echo "configure:6753: checking assembler for unaligned pcrel relocs" >&5 if eval "test \"`echo '$''{'gcc_cv_as_sparc_ua_pcrel'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - - gcc_cv_as_sparc_ua_pcrel=unknown - if test x$gcc_cv_as != x -a x$gcc_cv_ld != x; then - gcc_cv_as_sparc_ua_pcrel=no - echo ".text; foo: nop; .data; .align 4; .byte 0; .uaword %r_disp32(foo)" > conftest.s - if $gcc_cv_as -K PIC -o conftest.o conftest.s > /dev/null 2>&1 \ - && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then - gcc_cv_as_sparc_ua_pcrel=yes - fi - rm -f conftest.s conftest.o conftest - fi - + gcc_cv_as_sparc_ua_pcrel=no + if test x$gcc_cv_as != x; then + echo '.text +foo: + nop +.data +.align 4 +.byte 0 +.uaword %r_disp32(foo)' > conftest.s + if { ac_try='$gcc_cv_as -K PIC -o conftest.o conftest.s >&5'; { (eval echo configure:6766: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } + then + if test x$gcc_cv_ld != x \ + && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then + gcc_cv_as_sparc_ua_pcrel=yes + fi + rm -f conftest + else + echo "configure: failed program was" >&5 + cat conftest.s >&5 + fi + rm -f conftest.o conftest.s + fi fi echo "$ac_t""$gcc_cv_as_sparc_ua_pcrel" 1>&6 - if test "x$gcc_cv_as_sparc_ua_pcrel" = xyes; then - cat >> confdefs.h <<\EOF +if test $gcc_cv_as_sparc_ua_pcrel = yes; then + cat >> confdefs.h <<\EOF #define HAVE_AS_SPARC_UA_PCREL 1 EOF - fi - echo $ac_n "checking assembler and linker support unaligned pc related relocs against hidden symbols""... $ac_c" 1>&6 -echo "configure:6755: checking assembler and linker support unaligned pc related relocs against hidden symbols" >&5 + echo $ac_n "checking assembler for unaligned pcrel relocs against hidden symbols""... $ac_c" 1>&6 +echo "configure:6789: checking assembler for unaligned pcrel relocs against hidden symbols" >&5 if eval "test \"`echo '$''{'gcc_cv_as_sparc_ua_pcrel_hidden'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - - if test "x$gcc_cv_as_sparc_ua_pcrel" = xyes; then - gcc_cv_as_sparc_ua_pcrel_hidden=unknown - if test x$gcc_cv_objdump != x; then - gcc_cv_as_sparc_ua_pcrel_hidden=no - echo ".data; .align 4; .byte 0x31; .uaword %r_disp32(foo)" > conftest.s - echo ".byte 0x32, 0x33, 0x34; .global foo; .hidden foo" >> conftest.s - echo "foo: .skip 4" >> conftest.s - if $gcc_cv_as -K PIC -o conftest.o conftest.s > /dev/null 2>&1 \ - && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \ - && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \ - | grep ' 31000000 07323334' > /dev/null 2>&1; then - if $gcc_cv_objdump -R conftest 2> /dev/null \ - | grep 'DISP32' > /dev/null 2>&1; then - : - else - gcc_cv_as_sparc_ua_pcrel_hidden=yes - fi - fi + gcc_cv_as_sparc_ua_pcrel_hidden=no + if test x$gcc_cv_as != x; then + echo '.data +.align 4 +.byte 0x31 +.uaword %r_disp32(foo) +.byte 0x32, 0x33, 0x34 +.global foo +.hidden foo +foo: +.skip 4' > conftest.s + if { ac_try='$gcc_cv_as -K PIC -o conftest.o conftest.s >&5'; { (eval echo configure:6804: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } + then + if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \ + && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \ + && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \ + | grep ' 31000000 07323334' > /dev/null 2>&1; then + if $gcc_cv_objdump -R conftest 2> /dev/null \ + | grep 'DISP32' > /dev/null 2>&1; then + : + else + gcc_cv_as_sparc_ua_pcrel_hidden=yes fi - rm -f conftest.s conftest.o conftest - else - gcc_cv_as_sparc_ua_pcrel_hidden="$gcc_cv_as_sparc_ua_pcrel" - fi - + fi + rm -f conftest + else + echo "configure: failed program was" >&5 + cat conftest.s >&5 + fi + rm -f conftest.o conftest.s + fi fi echo "$ac_t""$gcc_cv_as_sparc_ua_pcrel_hidden" 1>&6 - if test "x$gcc_cv_as_sparc_ua_pcrel_hidden" = xyes; then - cat >> confdefs.h <<\EOF +if test $gcc_cv_as_sparc_ua_pcrel_hidden = yes; then + cat >> confdefs.h <<\EOF #define HAVE_AS_SPARC_UA_PCREL_HIDDEN 1 EOF - fi +fi + +fi # unaligned pcrel relocs - echo $ac_n "checking for assembler offsetable %lo() support""... $ac_c" 1>&6 -echo "configure:6795: checking for assembler offsetable %lo() support" >&5 -if eval "test \"`echo '$''{'gcc_cv_as_offsetable_lo10'+set}'`\" = set"; then + echo $ac_n "checking assembler for offsetable %lo()""... $ac_c" 1>&6 +echo "configure:6837: checking assembler for offsetable %lo()" >&5 +if eval "test \"`echo '$''{'gcc_cv_as_sparc_offsetable_lo10'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - - gcc_cv_as_offsetable_lo10=unknown - if test "x$gcc_cv_as" != x; then - # Check if assembler has offsetable %lo() - echo "or %g1, %lo(ab) + 12, %g1" > conftest.s - echo "or %g1, %lo(ab + 12), %g1" > conftest1.s - if $gcc_cv_as -xarch=v9 -o conftest.o conftest.s \ - > /dev/null 2>&1 && - $gcc_cv_as -xarch=v9 -o conftest1.o conftest1.s \ - > /dev/null 2>&1; then - if cmp conftest.o conftest1.o > /dev/null 2>&1; then - gcc_cv_as_offsetable_lo10=no - else - gcc_cv_as_offsetable_lo10=yes - fi - else - gcc_cv_as_offsetable_lo10=no - fi - rm -f conftest.s conftest.o conftest1.s conftest1.o - fi - + gcc_cv_as_sparc_offsetable_lo10=no + if test x$gcc_cv_as != x; then + echo '.text + or %g1, %lo(ab) + 12, %g1 + or %g1, %lo(ab + 12), %g1' > conftest.s + if { ac_try='$gcc_cv_as -xarch=v9 -o conftest.o conftest.s >&5'; { (eval echo configure:6846: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } + then + if test x$gcc_cv_objdump != x \ + && %gcc_cv_objdump -s -j .text conftest.o 2> /dev/null \ + | grep ' 82106000 82106000' > /dev/null 2>&1; then + gcc_cv_as_offsetable_lo10=yes + fi + else + echo "configure: failed program was" >&5 + cat conftest.s >&5 + fi + rm -f conftest.o conftest.s + fi fi -echo "$ac_t""$gcc_cv_as_offsetable_lo10" 1>&6 - if test "x$gcc_cv_as_offsetable_lo10" = xyes; then - cat >> confdefs.h <<\EOF +echo "$ac_t""$gcc_cv_as_sparc_offsetable_lo10" 1>&6 +if test $gcc_cv_as_sparc_offsetable_lo10 = yes; then + cat >> confdefs.h <<\EOF #define HAVE_AS_OFFSETABLE_LO10 1 EOF - fi - +fi ;; i[34567]86-*-* | x86_64-*-*) - echo $ac_n "checking assembler instructions""... $ac_c" 1>&6 -echo "configure:6834: checking assembler instructions" >&5 - gcc_cv_as_instructions= - if test $in_tree_gas = yes ; then - if test $gcc_cv_gas_major_version -eq 2 \ -&& test $gcc_cv_gas_minor_version -ge 9 \ -|| test $gcc_cv_gas_major_version -gt 2 ; then - - - gcc_cv_as_instructions="filds fists" - - + echo $ac_n "checking assembler for filds and fists mnemonics""... $ac_c" 1>&6 +echo "configure:6872: checking assembler for filds and fists mnemonics" >&5 +if eval "test \"`echo '$''{'gcc_cv_as_ix86_filds_fists'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + gcc_cv_as_ix86_filds_fists=no + if test $in_tree_gas = yes; then + if test $gcc_cv_gas_vers -ge `expr \( \( 2 \* 1000 \) + 9 \) \* 1000 + 0` + then gcc_cv_as_ix86_filds_fists=yes fi - - elif test x$gcc_cv_as != x; then - set "filds fists" "filds mem; fists mem" - while test $# -gt 0 - do - echo "$2" > conftest.s - if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then - gcc_cv_as_instructions=${gcc_cv_as_instructions}$1" " - fi - shift 2 - done - rm -f conftest.s conftest.o - fi - if test x"$gcc_cv_as_instructions" != x; then - cat >> confdefs.h <<EOF -#define HAVE_GAS_`echo "$gcc_cv_as_instructions" | sed -e 's/ $//' | tr 'a-z ' 'A-Z_'` 1 -EOF - + elif test x$gcc_cv_as != x; then + echo 'filds mem; fists mem' > conftest.s + if { ac_try='$gcc_cv_as -o conftest.o conftest.s >&5'; { (eval echo configure:6883: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } + then + gcc_cv_as_ix86_filds_fists=yes + else + echo "configure: failed program was" >&5 + cat conftest.s >&5 fi - echo "$ac_t""$gcc_cv_as_instructions" 1>&6 - - echo $ac_n "checking assembler GOTOFF in data directives""... $ac_c" 1>&6 -echo "configure:6868: checking assembler GOTOFF in data directives" >&5 - gcc_cv_as_gotoff_in_data=no - if test $in_tree_gas = yes ; then - if test $gcc_cv_gas_major_version -eq 2 \ -&& test $gcc_cv_gas_minor_version -ge 11 \ -|| test $gcc_cv_gas_major_version -gt 2 ; then - + rm -f conftest.o conftest.s + fi +fi - gcc_cv_as_gotoff_in_data=yes - +echo "$ac_t""$gcc_cv_as_ix86_filds_fists" 1>&6 +if test $gcc_cv_as_ix86_filds_fists = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_GAS_FILDS_FISTS 1 +EOF fi - elif test x$gcc_cv_as != x; then - cat > conftest.s <<EOF - .text + echo $ac_n "checking assembler for GOTOFF in data""... $ac_c" 1>&6 +echo "configure:6903: checking assembler for GOTOFF in data" >&5 +if eval "test \"`echo '$''{'gcc_cv_as_ix86_gotoff_in_data'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + gcc_cv_as_ix86_gotoff_in_data=no + if test $in_tree_gas = yes; then + if test $gcc_cv_gas_vers -ge `expr \( \( 2 \* 1000 \) + 11 \) \* 1000 + 0` + then gcc_cv_as_ix86_gotoff_in_data=yes +fi + elif test x$gcc_cv_as != x; then + echo ' .text .L0: nop .data - .long .L0@GOTOFF -EOF - if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then - gcc_cv_as_gotoff_in_data=yes - fi + .long .L0@GOTOFF' > conftest.s + if { ac_try='$gcc_cv_as -o conftest.o conftest.s >&5'; { (eval echo configure:6918: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } + then + gcc_cv_as_ix86_gotoff_in_data=yes + else + echo "configure: failed program was" >&5 + cat conftest.s >&5 fi - cat >> confdefs.h <<EOF + rm -f conftest.o conftest.s + fi +fi + +echo "$ac_t""$gcc_cv_as_ix86_gotoff_in_data" 1>&6 +if test $gcc_cv_as_ix86_gotoff_in_data = yes; then + cat >> confdefs.h <<EOF #define HAVE_AS_GOTOFF_IN_DATA `if test $gcc_cv_as_gotoff_in_data = yes; then echo 1; else echo 0; fi` EOF - echo "$ac_t""$gcc_cv_as_gotoff_in_data" 1>&6 +fi ;; ia64*-*-*) - echo $ac_n "checking assembler supports ltoffx and ldxmov""... $ac_c" 1>&6 -echo "configure:6902: checking assembler supports ltoffx and ldxmov" >&5 -if eval "test \"`echo '$''{'gcc_cv_as_ltoffx_ldxmov_relocs'+set}'`\" = set"; then + echo $ac_n "checking assembler for ltoffx and ldxmov relocs""... $ac_c" 1>&6 +echo "configure:6940: checking assembler for ltoffx and ldxmov relocs" >&5 +if eval "test \"`echo '$''{'gcc_cv_as_ia64_ltoffx_ldxmov_relocs'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - - gcc_cv_as_ltoffx_ldxmov_relocs=unknown - if test $in_tree_gas = yes ; then - if test $gcc_cv_gas_major_version -eq 2 \ -&& test $gcc_cv_gas_minor_version -ge 14 \ -|| test $gcc_cv_gas_major_version -gt 2 ; then - - - gcc_cv_as_ltoffx_ldxmov_relocs=yes - - + gcc_cv_as_ia64_ltoffx_ldxmov_relocs=no + if test $in_tree_gas = yes; then + if test $gcc_cv_gas_vers -ge `expr \( \( 2 \* 1000 \) + 14 \) \* 1000 + 0` + then gcc_cv_as_ia64_ltoffx_ldxmov_relocs=yes fi - - elif test x$gcc_cv_as != x; then - cat > conftest.s << 'EOF' - .text + elif test x$gcc_cv_as != x; then + echo ' .text addl r15 = @ltoffx(x#), gp ;; - ld8.mov r16 = [r15], x# -EOF - if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then - gcc_cv_as_ltoffx_ldxmov_relocs=yes - else - gcc_cv_as_ltoffx_ldxmov_relocs=no - fi - rm -f conftest.s conftest.o - fi - -fi - -echo "$ac_t""$gcc_cv_as_ltoffx_ldxmov_relocs" 1>&6 - if test "x$gcc_cv_as_ltoffx_ldxmov_relocs" = xyes; then - cat >> confdefs.h <<\EOF + ld8.mov r16 = r15, x#' > conftest.s + if { ac_try='$gcc_cv_as -o conftest.o conftest.s >&5'; { (eval echo configure:6954: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } + then + cat >> confdefs.h <<\EOF #define HAVE_AS_LTOFFX_LDXMOV_RELOCS 1 EOF + else + echo "configure: failed program was" >&5 + cat conftest.s >&5 fi + rm -f conftest.o conftest.s + fi +fi + +echo "$ac_t""$gcc_cv_as_ia64_ltoffx_ldxmov_relocs" 1>&6 + + ;; + powerpc*-*-*) - echo $ac_n "checking assembler supports mfcr field""... $ac_c" 1>&6 -echo "configure:6946: checking assembler supports mfcr field" >&5 -if eval "test \"`echo '$''{'gcc_cv_as_mfcrf'+set}'`\" = set"; then + case $target in + *-*-aix) conftest_s=' .csect .textPR';; + *) conftest_s=' .text';; + esac + conftest_s="$conftest_s + mfcr 3,128" + + echo $ac_n "checking assembler for mfcr field support""... $ac_c" 1>&6 +echo "configure:6982: checking assembler for mfcr field support" >&5 +if eval "test \"`echo '$''{'gcc_cv_as_powerpc_mfcrf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - - gcc_cv_as_mfcrf=unknown - if test $in_tree_gas = yes ; then - if test $gcc_cv_gas_major_version -eq 2 \ -&& test $gcc_cv_gas_minor_version -ge 14 \ -|| test $gcc_cv_gas_major_version -gt 2 ; then - - - gcc_cv_as_mfcrf=yes - - + gcc_cv_as_powerpc_mfcrf=no + if test $in_tree_gas = yes; then + if test $gcc_cv_gas_vers -ge `expr \( \( 2 \* 1000 \) + 14 \) \* 1000 + 0` + then gcc_cv_as_powerpc_mfcrf=yes fi - - elif test x$gcc_cv_as != x; then - cat > conftest.s << 'EOF' - case "$target" in - *-*-aix*) - .csect .text[PR] - ;; - *) - .text - ;; - esac - mfcr 3,128 -EOF - if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then - gcc_cv_as_mfcrf=yes - else - gcc_cv_as_mfcrf=no - fi - rm -f conftest.s conftest.o - fi - + elif test x$gcc_cv_as != x; then + echo "$conftest_s" > conftest.s + if { ac_try='$gcc_cv_as -o conftest.o conftest.s >&5'; { (eval echo configure:6993: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } + then + gcc_cv_as_powerpc_mfcrf=yes + else + echo "configure: failed program was" >&5 + cat conftest.s >&5 + fi + rm -f conftest.o conftest.s + fi fi -echo "$ac_t""$gcc_cv_as_mfcrf" 1>&6 - if test "x$gcc_cv_as_mfcrf" = xyes; then - cat >> confdefs.h <<\EOF +echo "$ac_t""$gcc_cv_as_powerpc_mfcrf" 1>&6 +if test $gcc_cv_as_powerpc_mfcrf = yes; then + cat >> confdefs.h <<\EOF #define HAVE_AS_MFCRF 1 EOF +fi + ;; + + mips*-*-*) + echo $ac_n "checking assembler for explicit relocation support""... $ac_c" 1>&6 +echo "configure:7015: checking assembler for explicit relocation support" >&5 +if eval "test \"`echo '$''{'gcc_cv_as_mips_explicit_relocs'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + gcc_cv_as_mips_explicit_relocs=no + if test $in_tree_gas = yes; then + if test $gcc_cv_gas_vers -ge `expr \( \( 2 \* 1000 \) + 14 \) \* 1000 + 0` + then gcc_cv_as_mips_explicit_relocs=yes +fi + elif test x$gcc_cv_as != x; then + echo ' lw $4,%gp_rel(foo)($4)' > conftest.s + if { ac_try='$gcc_cv_as -o conftest.o conftest.s >&5'; { (eval echo configure:7026: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } + then + gcc_cv_as_mips_explicit_relocs=yes + else + echo "configure: failed program was" >&5 + cat conftest.s >&5 fi + rm -f conftest.o conftest.s + fi +fi + +echo "$ac_t""$gcc_cv_as_mips_explicit_relocs" 1>&6 +if test $gcc_cv_as_mips_explicit_relocs = yes; then + if test x$target_cpu_default = x + then target_cpu_default=MASK_EXPLICIT_RELOCS + else target_cpu_default="($target_cpu_default)|MASK_EXPLICIT_RELOCS" + fi +fi + ;; esac - -echo $ac_n "checking assembler dwarf2 debug_line support""... $ac_c" 1>&6 -echo "configure:6996: checking assembler dwarf2 debug_line support" >&5 -gcc_cv_as_dwarf2_debug_line=no # ??? Not all targets support dwarf2 debug_line, even within a version # of gas. Moreover, we need to emit a valid instruction to trigger any # info to the output file. So, as supported targets are added to gas 2.11, @@ -7012,121 +7061,150 @@ case "$target" in mmix-*-*) insn="swym 0" ;; - esac -if test $in_tree_gas = yes ; then - if test $gcc_cv_gas_major_version -eq 2 \ -&& test $gcc_cv_gas_minor_version -ge 11 \ -|| test $gcc_cv_gas_major_version -gt 2 ; then +esac +if test x"$insn" != x; then + conftest_s="\ + .file 1 \"conftest.s\" + .loc 1 3 0 + $insn" + echo $ac_n "checking assembler for dwarf2 debug_line support""... $ac_c" 1>&6 +echo "configure:7072: checking assembler for dwarf2 debug_line support" >&5 +if eval "test \"`echo '$''{'gcc_cv_as_dwarf2_debug_line'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + gcc_cv_as_dwarf2_debug_line=no + if test $in_tree_gas = yes; then + if test $in_tree_gas_is_elf = yes \ + && test $gcc_cv_gas_vers -ge `expr \( \( 2 \* 1000 \) + 11 \) \* 1000 + 0` + then gcc_cv_as_dwarf2_debug_line=yes +fi + elif test x$gcc_cv_as != x; then + echo "$conftest_s" > conftest.s + if { ac_try='$gcc_cv_as -o conftest.o conftest.s >&5'; { (eval echo configure:7084: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } + then + # ??? This fails with non-gnu grep. Maybe use objdump? + if grep debug_line conftest.o > /dev/null 2>&1; then + gcc_cv_as_dwarf2_debug_line=yes + fi + else + echo "configure: failed program was" >&5 + cat conftest.s >&5 + fi + rm -f conftest.o conftest.s + fi +fi +echo "$ac_t""$gcc_cv_as_dwarf2_debug_line" 1>&6 - test $in_tree_gas_is_elf = yes && test x"$insn" != x \ - && gcc_cv_as_dwarf2_debug_line="yes" - +# The .debug_line file table must be in the exact order that +# we specified the files, since these indices are also used +# by DW_AT_decl_file. Approximate this test by testing if +# the assembler bitches if the same index is assigned twice. + echo $ac_n "checking assembler for buggy dwarf2 .file directive""... $ac_c" 1>&6 +echo "configure:7106: checking assembler for buggy dwarf2 .file directive" >&5 +if eval "test \"`echo '$''{'gcc_cv_as_dwarf2_file_buggy'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + gcc_cv_as_dwarf2_file_buggy=no + if test x$gcc_cv_as != x; then + echo ' .file 1 "foo.s" + .file 1 "bar.s"' > conftest.s + if { ac_try='$gcc_cv_as -o conftest.o conftest.s >&5'; { (eval echo configure:7114: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } + then + gcc_cv_as_dwarf2_file_buggy=yes + else + echo "configure: failed program was" >&5 + cat conftest.s >&5 + fi + rm -f conftest.o conftest.s + fi fi -elif test x$gcc_cv_as != x -a x"$insn" != x ; then - echo ' .file 1 "conftest.s"' > conftest.s - echo ' .loc 1 3 0' >> conftest.s - echo " $insn" >> conftest.s - # ??? This fails with non-gnu grep. - if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \ - && grep debug_line conftest.o > /dev/null 2>&1 ; then - # The .debug_line file table must be in the exact order that - # we specified the files, since these indices are also used - # by DW_AT_decl_file. Approximate this test by testing if - # the assembler bitches if the same index is assigned twice. - echo ' .file 1 "foo.s"' > conftest.s - echo ' .file 1 "bar.s"' >> conftest.s - if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 - then - gcc_cv_as_dwarf2_debug_line="no" - else - gcc_cv_as_dwarf2_debug_line="yes" - fi - fi - rm -f conftest.s conftest.o conftest.nm1 conftest.nm2 -fi -if test x"$gcc_cv_as_dwarf2_debug_line" = xyes; then +echo "$ac_t""$gcc_cv_as_dwarf2_file_buggy" 1>&6 + + + if test $gcc_cv_as_dwarf2_debug_line = yes \ + && test $gcc_cv_as_dwarf2_file_buggy = no; then cat >> confdefs.h <<\EOF #define HAVE_AS_DWARF2_DEBUG_LINE 1 EOF -fi -echo "$ac_t""$gcc_cv_as_dwarf2_debug_line" 1>&6 - -echo $ac_n "checking assembler --gdwarf2 support""... $ac_c" 1>&6 -echo "configure:7060: checking assembler --gdwarf2 support" >&5 -gcc_cv_as_gdwarf2_flag=no -if test $in_tree_gas = yes ; then - if test $gcc_cv_gas_major_version -eq 2 \ -&& test $gcc_cv_gas_minor_version -ge 11 \ -|| test $gcc_cv_gas_major_version -gt 2 ; then - - - test $in_tree_gas_is_elf = yes && test x"$insn" != x \ - && gcc_cv_as_gdwarf2_flag="yes" - + fi + echo $ac_n "checking assembler for --gdwarf2 option""... $ac_c" 1>&6 +echo "configure:7137: checking assembler for --gdwarf2 option" >&5 +if eval "test \"`echo '$''{'gcc_cv_as_gdwarf2_flag'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + gcc_cv_as_gdwarf2_flag=no + if test $in_tree_gas = yes; then + if test $in_tree_gas_is_elf = yes \ + && test $gcc_cv_gas_vers -ge `expr \( \( 2 \* 1000 \) + 11 \) \* 1000 + 0` + then gcc_cv_as_gdwarf2_flag=yes +fi + elif test x$gcc_cv_as != x; then + echo "$insn" > conftest.s + if { ac_try='$gcc_cv_as --gdwarf2 -o conftest.o conftest.s >&5'; { (eval echo configure:7149: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } + then + gcc_cv_as_gdwarf2_flag=yes + else + echo "configure: failed program was" >&5 + cat conftest.s >&5 + fi + rm -f conftest.o conftest.s + fi fi -elif test x$gcc_cv_as != x -a x"$insn" != x ; then - echo '' > conftest.s - # ??? This fails with non-gnu grep. - if $gcc_cv_as --gdwarf2 -o conftest.o conftest.s > /dev/null 2>&1 - then - gcc_cv_as_gdwarf2_flag="yes" - fi - rm -f conftest.s conftest.o -fi -if test x"$gcc_cv_as_gdwarf2_flag" = xyes; then - cat >> confdefs.h <<\EOF +echo "$ac_t""$gcc_cv_as_gdwarf2_flag" 1>&6 +if test $gcc_cv_as_gdwarf2_flag = yes; then + cat >> confdefs.h <<\EOF #define HAVE_AS_GDWARF2_DEBUG_FLAG 1 EOF fi -echo "$ac_t""$gcc_cv_as_gdwarf2_flag" 1>&6 - -echo $ac_n "checking assembler --gstabs support""... $ac_c" 1>&6 -echo "configure:7092: checking assembler --gstabs support" >&5 -gcc_cv_as_gstabs_flag=no -if test $in_tree_gas = yes ; then - if test $gcc_cv_gas_major_version -eq 2 \ -&& test $gcc_cv_gas_minor_version -ge 11 \ -|| test $gcc_cv_gas_major_version -gt 2 ; then - - - test $in_tree_gas_is_elf = yes && test x"$insn" != x \ - && gcc_cv_as_gstabs_flag="yes" - + echo $ac_n "checking assembler for --gstabs option""... $ac_c" 1>&6 +echo "configure:7169: checking assembler for --gstabs option" >&5 +if eval "test \"`echo '$''{'gcc_cv_as_gstabs_flag'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + gcc_cv_as_gstabs_flag=no + if test $in_tree_gas = yes; then + if test $in_tree_gas_is_elf = yes \ + && test $gcc_cv_gas_vers -ge `expr \( \( 2 \* 1000 \) + 11 \) \* 1000 + 0` + then gcc_cv_as_gstabs_flag=yes +fi + elif test x$gcc_cv_as != x; then + echo "$insn" > conftest.s + if { ac_try='$gcc_cv_as --gstabs -o conftest.o conftest.s >&5'; { (eval echo configure:7181: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } + then + # The native Solaris 9/Intel assembler doesn't understand --gstabs + # and warns about it, but still exits successfully. So check for + # this. + if { ac_try='$gcc_cv_as --gstabs -o conftest.o conftest.s 2>&1 | grep -i warning > /dev/null'; { (eval echo configure:7186: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } + then : + else gcc_cv_as_gstabs_flag=yes + fi + else + echo "configure: failed program was" >&5 + cat conftest.s >&5 + fi + rm -f conftest.o conftest.s + fi fi -elif test x$gcc_cv_as != x -a x"$insn" != x ; then - echo '' > conftest.s - # ??? This fails with non-gnu grep. - if $gcc_cv_as --gstabs -o conftest.o conftest.s > /dev/null 2>&1 ; then - gcc_cv_as_gstabs_flag="yes" - # The native Solaris 9/Intel assembler doesn't understand --gstabs - # and warns about it, but still exits successfully. So check for - # this. - if $gcc_cv_as --gstabs -o conftest.o conftest.s 2>&1 | \ - grep -i warning > /dev/null ; then - gcc_cv_as_gstabs_flag="no" - fi - fi - rm -f conftest.s conftest.o -fi -if test x"$gcc_cv_as_gstabs_flag" = xyes; then - cat >> confdefs.h <<\EOF +echo "$ac_t""$gcc_cv_as_gstabs_flag" 1>&6 +if test $gcc_cv_as_gstabs_flag = yes; then + cat >> confdefs.h <<\EOF #define HAVE_AS_GSTABS_DEBUG_FLAG 1 EOF fi -echo "$ac_t""$gcc_cv_as_gstabs_flag" 1>&6 +fi echo $ac_n "checking linker read-only and read-write section mixing""... $ac_c" 1>&6 -echo "configure:7130: checking linker read-only and read-write section mixing" >&5 +echo "configure:7208: checking linker read-only and read-write section mixing" >&5 gcc_cv_ld_ro_rw_mix=unknown if test $in_tree_ld = yes ; then if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 10 -o "$gcc_cv_gld_major_version" -gt 2 \ @@ -7165,7 +7243,7 @@ fi echo "$ac_t""$gcc_cv_ld_ro_rw_mix" 1>&6 echo $ac_n "checking linker PT_GNU_EH_FRAME support""... $ac_c" 1>&6 -echo "configure:7169: checking linker PT_GNU_EH_FRAME support" >&5 +echo "configure:7247: checking linker PT_GNU_EH_FRAME support" >&5 gcc_cv_ld_eh_frame_hdr=no if test $in_tree_ld = yes ; then if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 12 -o "$gcc_cv_gld_major_version" -gt 2 \ @@ -7187,7 +7265,7 @@ fi echo "$ac_t""$gcc_cv_ld_eh_frame_hdr" 1>&6 echo $ac_n "checking linker position independent executable support""... $ac_c" 1>&6 -echo "configure:7191: checking linker position independent executable support" >&5 +echo "configure:7269: checking linker position independent executable support" >&5 gcc_cv_ld_pie=no if test $in_tree_ld = yes ; then if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 15 -o "$gcc_cv_gld_major_version" -gt 2 \ @@ -7212,7 +7290,7 @@ echo "$ac_t""$gcc_cv_ld_pie" 1>&6 case "$target" in mips*-*-*) echo $ac_n "checking whether libgloss uses STARTUP directives consistently""... $ac_c" 1>&6 -echo "configure:7216: checking whether libgloss uses STARTUP directives consistently" >&5 +echo "configure:7294: checking whether libgloss uses STARTUP directives consistently" >&5 gcc_cv_mips_libgloss_startup=no gcc_cv_libgloss_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/libgloss if test "x$exec_prefix" = xNONE; then @@ -7238,35 +7316,6 @@ EOF fi echo "$ac_t""$gcc_cv_mips_libgloss_startup" 1>&6 - - echo $ac_n "checking whether the assembler has explicit relocation support""... $ac_c" 1>&6 -echo "configure:7244: checking whether the assembler has explicit relocation support" >&5 - if test x$gcc_cv_mips_explicit_relocs = x; then - gcc_cv_mips_explicit_relocs=no - if test $in_tree_gas = yes; then - if test $gcc_cv_gas_major_version -eq 2 \ -&& test $gcc_cv_gas_minor_version -ge 14 \ -|| test $gcc_cv_gas_major_version -gt 2 ; then - - - gcc_cv_mips_explicit_relocs=yes - - -fi - - elif test x$gcc_cv_as != x; then - echo ' lw $4,%gp_rel(foo)($4)' > conftest.s - if $gcc_cv_as conftest.s -o conftest.o > /dev/null 2>&1; then - gcc_cv_mips_explicit_relocs=yes - fi - rm -f conftest.s conftest.o - fi - fi - if test $gcc_cv_mips_explicit_relocs = yes; then - test x$target_cpu_default != x || target_cpu_default=0 - target_cpu_default="(${target_cpu_default}|MASK_EXPLICIT_RELOCS)" - fi - echo "$ac_t""$gcc_cv_mips_explicit_relocs" 1>&6 ;; esac @@ -7446,7 +7495,7 @@ fi echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 -echo "configure:7450: checking whether to enable maintainer-specific portions of Makefiles" >&5 +echo "configure:7499: checking whether to enable maintainer-specific portions of Makefiles" >&5 # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval="$enable_maintainer_mode" diff --git a/gcc/configure.in b/gcc/configure.in index f8592e5be8e..71ac38416bf 100644 --- a/gcc/configure.in +++ b/gcc/configure.in @@ -805,7 +805,7 @@ int main() fi fi -AC_CHECK_TYPE(ssize_t, int) +gcc_AC_CHECK_TYPE(ssize_t, int) # Try to determine the array type of the second argument of getgroups # for the target system (int or gid_t). @@ -1726,232 +1726,156 @@ case $in_tree_objdump in esac # Figure out what assembler alignment features are present. -AC_MSG_CHECKING(assembler alignment features) -gcc_cv_as_alignment_features=none -if test $in_tree_gas = yes; then - # Gas version 2.6 and later support for .balign and .p2align. - gcc_GAS_VERSION_GTE_IFELSE(2,6,0,[ - gcc_cv_as_alignment_features=".balign and .p2align" - AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN) - ]) - # Gas version 2.8 and later support specifying the maximum - # bytes to skip when using .p2align. - gcc_GAS_VERSION_GTE_IFELSE(2,8,0,[ - gcc_cv_as_alignment_features=".p2align including maximum skip" - AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN) - ]) -elif test x$gcc_cv_as != x; then - # Check if we have .balign and .p2align - echo ".balign 4" > conftest.s - echo ".p2align 2" >> conftest.s - if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then - gcc_cv_as_alignment_features=".balign and .p2align" - AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN) - fi - rm -f conftest.s conftest.o - # Check if specifying the maximum bytes to skip when - # using .p2align is supported. - echo ".p2align 4,,7" > conftest.s - if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then - gcc_cv_as_alignment_features=".p2align including maximum skip" - AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN) - fi - rm -f conftest.s conftest.o -fi -AC_MSG_RESULT($gcc_cv_as_alignment_features) - -AC_MSG_CHECKING(assembler subsection support) -gcc_cv_as_subsections=no -if test $in_tree_gas = yes ; then - gcc_GAS_VERSION_GTE_IFELSE(2,9,0,[ - test $in_tree_gas_is_elf = yes \ - && gcc_cv_as_subsections="working .subsection -1" - ]) -elif test x$gcc_cv_as != x; then - # Check if we have .subsection - echo ".subsection 1" > conftest.s - if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then - gcc_cv_as_subsections=".subsection" - if test x$gcc_cv_nm != x; then - cat > conftest.s <<EOF -conftest_label1: .word 0 +gcc_GAS_CHECK_FEATURE([.balign and .p2align], gcc_cv_as_balign_and_p2align, + [2,6,0],, +[.balign 4 +.p2align 2],, +[AC_DEFINE(HAVE_GAS_BALIGN_AND_P2ALIGN, 1, + [Define if your assembler supports .balign and .p2align.])]) + +gcc_GAS_CHECK_FEATURE([.p2align with maximum skip], gcc_cv_as_max_skip_p2align, + [2,8,0],, + [.p2align 4,,7],, +[AC_DEFINE(HAVE_GAS_MAX_SKIP_P2ALIGN, 1, + [Define if your assembler supports specifying the maximum number + of bytes to skip when using the GAS .p2align command.])]) + +gcc_GAS_CHECK_FEATURE([working .subsection -1], gcc_cv_as_subsection_m1, + [elf,2,9,0],, + [conftest_label1: .word 0 .subsection -1 conftest_label2: .word 0 -.previous -EOF - if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then - $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1 - $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2 - if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1; then - : - else - gcc_cv_as_subsections="working .subsection -1" - fi - fi - fi - fi - rm -f conftest.s conftest.o conftest.nm1 conftest.nm2 -fi -if test x"$gcc_cv_as_subsections" = x"working .subsection -1"; then - AC_DEFINE(HAVE_GAS_SUBSECTION_ORDERING, 1, -[Define if your assembler supports .subsection and .subsection -1 starts - emitting at the beginning of your section.]) -fi -AC_MSG_RESULT($gcc_cv_as_subsections) - -AC_MSG_CHECKING(assembler weak support) -gcc_cv_as_weak=no -if test $in_tree_gas = yes ; then - gcc_GAS_VERSION_GTE_IFELSE(2,2,0,[ - gcc_cv_as_weak="yes" - ]) -elif test x$gcc_cv_as != x; then - # Check if we have .weak - echo " .weak foobar" > conftest.s - if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then - gcc_cv_as_weak="yes" - fi - rm -f conftest.s conftest.o conftest.nm1 conftest.nm2 -fi -if test x"$gcc_cv_as_weak" = xyes; then - AC_DEFINE(HAVE_GAS_WEAK, 1, [Define if your assembler supports .weak.]) -fi -AC_MSG_RESULT($gcc_cv_as_weak) - -AC_MSG_CHECKING(assembler hidden support) -gcc_cv_as_hidden=no -if test $in_tree_gas = yes ; then - gcc_GAS_VERSION_GTE_IFELSE(2,12,1,[ - test $in_tree_gas_is_elf = yes && gcc_cv_as_hidden="yes" - ]) -elif test x$gcc_cv_as != x; then - # Check if we have .hidden - echo " .hidden foobar" > conftest.s - echo "foobar:" >> conftest.s - if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then - gcc_cv_as_hidden="yes" - fi - rm -f conftest.s conftest.o conftest.nm1 conftest.nm2 - - # GNU LD versions before 2.12.1 have buggy support for STV_HIDDEN. - # This is irritatingly difficult to feature test for. Look for - # the date string after the version number. - ld_ver=`$gcc_cv_ld --version 2>/dev/null | head -1` - if echo "$ld_ver" | grep GNU > /dev/null; then +.previous], + [if test x$gcc_cv_nm != x; then + $gcc_cv_nm conftest.o | grep conftest_label1 > conftest.nm1 + $gcc_cv_nm conftest.o | grep conftest_label2 | sed -e 's/label2/label1/' > conftest.nm2 + if cmp conftest.nm1 conftest.nm2 > /dev/null 2>&1 + then : + else gcc_cv_as_subsection_m1=yes + fi + rm -f conftest.nm1 conftest.nm2 + fi], + [AC_DEFINE(HAVE_GAS_SUBSECTION_ORDERING, 1, + [Define if your assembler supports .subsection and .subsection -1 starts + emitting at the beginning of your section.])]) + +gcc_GAS_CHECK_FEATURE([.weak], gcc_cv_as_weak, + [2,2,0],, + [ .weak foobar],, +[AC_DEFINE(HAVE_GAS_WEAK, 1, [Define if your assembler supports .weak.])]) + +# .hidden needs to be supported in both the assembler and the linker, +# because GNU LD versions before 2.12.1 have buggy support for STV_HIDDEN. +# This is irritatingly difficult to feature test for; we have to check the +# date string after the version number. If we've got an in-tree +# ld, we don't know its patchlevel version, so we set the baseline at 2.13 +# to be safe. +# The gcc_GAS_CHECK_FEATURE call just sets a cache variable. +gcc_GAS_CHECK_FEATURE([.hidden], gcc_cv_as_hidden, + [elf,2,13,0],, +[ .hidden foobar +foobar:]) + +AC_CACHE_CHECK(linker for .hidden support, gcc_cv_ld_hidden, +[if test $in_tree_ld = yes ; then + gcc_cv_ld_hidden=no + if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 13 -o "$gcc_cv_gld_major_version" -gt 2 \ + && test $in_tree_ld_is_elf = yes; then + gcc_cv_ld_hidden=yes + fi +else + gcc_cv_ld_hidden=yes + ld_ver=`$gcc_cv_ld --version 2>/dev/null | head -1` + if echo "$ld_ver" | grep GNU > /dev/null; then changequote(,)dnl - ld_vers=`echo $ld_ver | sed -n \ - -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \ - -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \ - -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \ - -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\)[ ].*$,\1,p' \ - -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)[ ].*$,\1,p' \ - -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)[ ].*$,\1,p'` - ld_date=`echo $ld_ver | sed -n 's,^.*\([2-9][0-9][0-9][0-9]\)[-]*\([01][0-9]\)[-]*\([0-3][0-9]\).*$,\1\2\3,p'` - if test 0"$ld_date" -lt 20020404; then - if test -n "$ld_date"; then - # If there was date string, but was earlier than 2002-04-04, fail - gcc_cv_as_hidden="no" - elif test -z "$ld_vers"; then - # If there was no date string nor ld version number, something is wrong - gcc_cv_as_hidden="no" - else - ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'` - ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'` - ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'` - test -z "$ld_vers_patch" && ld_vers_patch=0 - if test "$ld_vers_major" -lt 2; then - gcc_cv_as_hidden="no" - elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 12; then - gcc_cv_as_hidden="no" - elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 12 \ - -a "$ld_vers_patch" -eq 0; then - gcc_cv_as_hidden="no" - fi - fi - fi -changequote([,])dnl + ld_vers=`echo $ld_ver | sed -n \ + -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \ + -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \ + -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \ + -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\)[ ].*$,\1,p' \ + -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)[ ].*$,\1,p' \ + -e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)[ ].*$,\1,p'` + ld_date=`echo $ld_ver | sed -n 's,^.*\([2-9][0-9][0-9][0-9]\)[-]*\([01][0-9]\)[-]*\([0-3][0-9]\).*$,\1\2\3,p'` + if test 0"$ld_date" -lt 20020404; then + if test -n "$ld_date"; then + # If there was date string, but was earlier than 2002-04-04, fail + gcc_cv_ld_hidden=no + elif test -z "$ld_vers"; then + # If there was no date string nor ld version number, something is wrong + gcc_cv_ld_hidden=no + else + ld_vers_major=`expr "$ld_vers" : '\([0-9]*\)'` + ld_vers_minor=`expr "$ld_vers" : '[0-9]*\.\([0-9]*\)'` + ld_vers_patch=`expr "$ld_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'` + test -z "$ld_vers_patch" && ld_vers_patch=0 + if test "$ld_vers_major" -lt 2; then + gcc_cv_ld_hidden=no + elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -lt 12; then + gcc_cv_ld_hidden="no" + elif test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 12 -a "$ld_vers_patch" -eq 0; then + gcc_cv_ld_hidden=no fi -fi -case "$target" in - mips-sgi-irix6*) - if test x"$gnu_ld_flag" = x"no"; then - # Even if using gas with .hidden support, the resulting object files - # cannot be linked with the IRIX 6 O32 linker. With the N32 and - # N64 linkers, the problem is that the linker refuses to accept - # -call_shared (passed by default to the linker) and -r (used to - # link the object file generated without .hidden directives with - # one that hides symbols), so we also lose. - gcc_cv_as_hidden=no + fi +changequote([,])dnl fi - ;; -esac -if test x"$gcc_cv_as_hidden" = xyes; then - AC_DEFINE(HAVE_GAS_HIDDEN, 1, - [Define if your assembler supports .hidden.]) -fi -AC_MSG_RESULT($gcc_cv_as_hidden) -libgcc_visibility=$gcc_cv_as_hidden + else + case "$target" in + mips-sgi-irix6*) + if test x"$gnu_ld_flag" = x"no"; then + # Even if using gas with .hidden support, the resulting object files + # cannot be linked with the IRIX 6 O32 linker. With the N32 and + # N64 linkers, the problem is that the linker refuses to accept + # -call_shared (passed by default to the linker) and -r (used to + # link the object file generated without .hidden directives with + # one that hides symbols), so we also lose. + gcc_cv_ld_hidden=no + fi + ;; + esac + fi +fi]) +libgcc_visibility=no AC_SUBST(libgcc_visibility) +if test $gcc_cv_as_hidden = yes && test $gcc_cv_ld_hidden=yes; then + libgcc_visibility=yes + AC_DEFINE(HAVE_GAS_HIDDEN, 1, + [Define if your assembler and linker support .hidden.]) +fi -AC_MSG_CHECKING(assembler leb128 support) -gcc_cv_as_leb128=no -if test $in_tree_gas = yes ; then - gcc_GAS_VERSION_GTE_IFELSE(2,11,0,[ - test $in_tree_gas_is_elf = yes && gcc_cv_as_leb128="yes" - ]) -elif test x$gcc_cv_as != x; then - # Check if we have .[us]leb128, and support symbol arithmetic with it. - cat > conftest.s <<EOF - .data +# Check if we have .[us]leb128, and support symbol arithmetic with it. +gcc_GAS_CHECK_FEATURE([.sleb128 and .uleb128], gcc_cv_as_leb128, + [elf,2,11,0],, +[ .data .uleb128 L2 - L1 L1: .uleb128 1280 .sleb128 -1010 -L2: -EOF - if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then - gcc_cv_as_leb128="yes" - - # GAS versions before 2.11 do not support uleb128, - # despite appearing to. - # ??? There exists an elf-specific test that will crash - # the assembler. Perhaps it's better to figure out whether - # arbitrary sections are supported and try the test. - as_ver=`$gcc_cv_as --version 2>/dev/null | head -1` - if echo "$as_ver" | grep GNU > /dev/null; then +L2:], + [# GAS versions before 2.11 do not support uleb128, + # despite appearing to. + # ??? There exists an elf-specific test that will crash + # the assembler. Perhaps it's better to figure out whether + # arbitrary sections are supported and try the test. + as_ver=`$gcc_cv_as --version 2>/dev/null | head -1` + if echo "$as_ver" | grep GNU > /dev/null; then changequote(,)dnl - as_ver=`echo $as_ver | sed -e 's/GNU assembler \([0-9.][0-9.]*\).*/\1/'` - as_major=`echo $as_ver | sed 's/\..*//'` - as_minor=`echo $as_ver | sed 's/[^.]*\.\([0-9]*\).*/\1/'` + as_ver=`echo $as_ver | sed -e 's/GNU assembler \([0-9.][0-9.]*\).*/\1/'` + as_major=`echo $as_ver | sed 's/\..*//'` + as_minor=`echo $as_ver | sed 's/[^.]*\.\([0-9]*\).*/\1/'` changequote([,])dnl - if test $as_major -eq 2 -a $as_minor -lt 11; then - gcc_cv_as_leb128="no" - fi - fi - fi - rm -f conftest.s conftest.o conftest.nm1 conftest.nm2 -fi -if test x"$gcc_cv_as_leb128" = xyes; then - AC_DEFINE(HAVE_AS_LEB128, 1, - [Define if your assembler supports .uleb128.]) -fi -AC_MSG_RESULT($gcc_cv_as_leb128) - -AC_MSG_CHECKING(assembler eh_frame optimization) -gcc_cv_as_eh_frame=no -if test $in_tree_gas = yes ; then - gcc_GAS_VERSION_GTE_IFELSE(2,12,0,[ - test $in_tree_gas_is_elf = yes && gcc_cv_as_eh_frame="yes" - ]) -elif test x$gcc_cv_as != x; then - # Check if this is GAS. - as_ver=`$gcc_cv_as --version < /dev/null 2> /dev/null | head -1` - rm -f a.out 2> /dev/null - if echo "$as_ver" | grep GNU > /dev/null; then - # Versions up to and including 2.11.0 may mis-optimize - # .eh_frame data. Try something. - cat > conftest.s <<EOF - .text + if test $as_major -eq 2 && test $as_minor -lt 11 + then : + else gcc_cv_as_leb128=yes + fi + fi], + [AC_DEFINE(HAVE_AS_LEB128, 1, + [Define if your assembler supports .sleb128 and .uleb128.])]) + +# GAS versions up to and including 2.11.0 may mis-optimize +# .eh_frame data. +gcc_GAS_CHECK_FEATURE(eh_frame optimization, gcc_cv_as_eh_frame, + [elf,2,12,0],, +[ .text .LFB1: .4byte 0 .L1: @@ -1982,61 +1906,45 @@ __FRAME_BEGIN__: .4byte .LFE1-.LFB1 .byte 0x4 .4byte .L1-.LFB1 -.LEFDE1: -EOF - cat > conftest.lit <<EOF +.LEFDE1:], +[ cat > conftest.lit <<EOF 0000 10000000 00000000 017a0001 781a0004 .........z..x... 0010 01000000 12000000 18000000 00000000 ................ 0020 08000000 04080000 0044 .........D EOF - cat > conftest.big <<EOF + cat > conftest.big <<EOF 0000 00000010 00000000 017a0001 781a0004 .........z..x... 0010 00000001 00000012 00000018 00000000 ................ 0020 00000008 04000000 0844 .........D EOF - # If the assembler didn't choke, and we can objdump, - # and we got the correct data, then succeed. - if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \ - && $gcc_cv_objdump -s -j .eh_frame conftest.o 2>/dev/null \ - | tail -3 > conftest.got \ - && { cmp conftest.lit conftest.got > /dev/null 2>&1 \ - || cmp conftest.big conftest.got > /dev/null 2>&1; } - then - gcc_cv_as_eh_frame="yes" - else - gcc_cv_as_eh_frame="bad" - if $gcc_cv_as -o conftest.o --traditional-format /dev/null; then - AC_DEFINE(USE_AS_TRADITIONAL_FORMAT, 1, - [Define if your assembler mis-optimizes .eh_frame data.]) - fi - fi - fi - rm -f conftest.* -fi -AC_MSG_RESULT($gcc_cv_as_eh_frame) - -AC_MSG_CHECKING(assembler section merging support) -gcc_cv_as_shf_merge=no -if test $in_tree_gas = yes ; then - gcc_GAS_VERSION_GTE_IFELSE(2,12,0,[ - test $in_tree_gas_is_elf = yes && gcc_cv_as_shf_merge="yes" - ]) -elif test x$gcc_cv_as != x; then - # Check if we support SHF_MERGE sections - echo '.section .rodata.str, "aMS", @progbits, 1' > conftest.s - if $gcc_cv_as --fatal-warnings -o conftest.o conftest.s > /dev/null 2>&1; then - gcc_cv_as_shf_merge=yes - fi - rm -f conftest.s conftest.o -fi -if test x"$gcc_cv_as_shf_merge" = xyes; then - AC_DEFINE(HAVE_GAS_SHF_MERGE, 1, -[Define if your assembler supports marking sections with SHF_MERGE flag.]) + # If the assembler didn't choke, and we can objdump, + # and we got the correct data, then succeed. + if test x$gcc_cv_objdump != x \ + && $gcc_cv_objdump -s -j .eh_frame conftest.o 2>/dev/null \ + | tail -3 > conftest.got \ + && { cmp conftest.lit conftest.got > /dev/null 2>&1 \ + || cmp conftest.big conftest.got > /dev/null 2>&1; } + then + gcc_cv_as_eh_frame=yes + elif AC_TRY_COMMAND($gcc_cv_as -o conftest.o --traditional-format /dev/null); then + gcc_cv_as_eh_frame=buggy + else + # Uh oh, what do we do now? + gcc_cv_as_eh_frame=no + fi]) + +if test $gcc_cv_as_eh_frame = buggy; then + AC_DEFINE(USE_AS_TRADITIONAL_FORMAT, 1, + [Define if your assembler mis-optimizes .eh_frame data.]) fi -AC_MSG_RESULT($gcc_cv_as_shf_merge) -AC_MSG_CHECKING(assembler thread-local storage support) -gcc_cv_as_tls=no +gcc_GAS_CHECK_FEATURE(section merging support, gcc_cv_as_shf_merge, + [elf,2,12,0], [--fatal-warnings], + [.section .rodata.str, "aMS", @progbits, 1],, + [AC_DEFINE(HAVE_GAS_SHF_MERGE, 1, +[Define if your assembler supports marking sections with SHF_MERGE flag.])]) + +# Thread-local storage - the check is heavily parametrized. conftest_s= tls_first_major= tls_first_minor= @@ -2215,38 +2123,23 @@ foo: .long 25 ;; esac if test -z "$tls_first_major"; then - : -elif test $in_tree_gas = yes ; then - gcc_GAS_VERSION_GTE_IFELSE($tls_first_major,$tls_first_minor,0,[ - gcc_cv_as_tls=yes - ]) -elif test x$gcc_cv_as != x; then - echo "$conftest_s" > conftest.s - if $gcc_cv_as $tls_as_opt --fatal-warnings -o conftest.o conftest.s > /dev/null 2>&1 - then - gcc_cv_as_tls=yes - fi - rm -f conftest.s conftest.o -fi -if test "$gcc_cv_as_tls" = yes; then - AC_DEFINE(HAVE_AS_TLS, 1, - [Define if your assembler supports thread-local storage.]) + : # If we don't have a check, assume no support. +else + gcc_GAS_CHECK_FEATURE(thread-local storage support, gcc_cv_as_tls, + [$tls_first_major,$tls_first_minor,0], [$tls_as_opt --fatal-warnings], + [$conftest_s],, + [AC_DEFINE(HAVE_AS_TLS, 1, + [Define if your assembler supports thread-local storage.])]) fi -AC_MSG_RESULT($gcc_cv_as_tls) + +# Target-specific assembler checks. case "$target" in # All TARGET_ABI_OSF targets. alpha*-*-osf* | alpha*-*-linux* | alpha*-*-*bsd*) - AC_CACHE_CHECK([assembler supports explicit relocations], - gcc_cv_as_explicit_relocs, [ - gcc_cv_as_explicit_relocs=unknown - if test $in_tree_gas = yes ; then - gcc_GAS_VERSION_GTE_IFELSE(2,12,0,[ - gcc_cv_as_explicit_relocs=yes - ]) - elif test x$gcc_cv_as != x; then - cat > conftest.s << 'EOF' - .set nomacro + gcc_GAS_CHECK_FEATURE([explicit relocation support], + gcc_cv_as_alpha_explicit_relocs, [2,12,0],, +[ .set nomacro .text extbl $3, $2, $3 !lituse_bytoff!1 ldq $2, a($29) !literal!1 @@ -2258,257 +2151,144 @@ case "$target" in lda $0, c($29) !gprel ldah $1, d($29) !gprelhigh lda $1, d($1) !gprellow - lda $29, 0($29) !gpdisp!3 -EOF - if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then - gcc_cv_as_explicit_relocs=yes - else - gcc_cv_as_explicit_relocs=no - fi - rm -f conftest.s conftest.o - fi - ]) - if test "x$gcc_cv_as_explicit_relocs" = xyes; then - AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1, - [Define if your assembler supports explicit relocations.]) - fi + lda $29, 0($29) !gpdisp!3],, + [AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1, + [Define if your assembler supports explicit relocations.])]) ;; - sparc*-*-*) - AC_CACHE_CHECK([assembler .register pseudo-op support], - gcc_cv_as_register_pseudo_op, [ - gcc_cv_as_register_pseudo_op=unknown - if test x$gcc_cv_as != x; then - # Check if we have .register - echo ".register %g2, #scratch" > conftest.s - if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then - gcc_cv_as_register_pseudo_op=yes - else - gcc_cv_as_register_pseudo_op=no - fi - rm -f conftest.s conftest.o - fi - ]) - if test "x$gcc_cv_as_register_pseudo_op" = xyes; then - AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1, - [Define if your assembler supports .register.]) - fi - - AC_CACHE_CHECK([assembler supports -relax], - gcc_cv_as_relax_opt, [ - gcc_cv_as_relax_opt=unknown - if test x$gcc_cv_as != x; then - # Check if gas supports -relax - echo ".text" > conftest.s - if $gcc_cv_as -relax -o conftest.o conftest.s > /dev/null 2>&1; then - gcc_cv_as_relax_opt=yes - else - gcc_cv_as_relax_opt=no - fi - rm -f conftest.s conftest.o - fi - ]) - if test "x$gcc_cv_as_relax_opt" = xyes; then - AC_DEFINE(HAVE_AS_RELAX_OPTION, 1, - [Define if your assembler supports -relax option.]) - fi - AC_CACHE_CHECK([assembler and linker support unaligned pc related relocs], - gcc_cv_as_sparc_ua_pcrel, [ - gcc_cv_as_sparc_ua_pcrel=unknown - if test x$gcc_cv_as != x -a x$gcc_cv_ld != x; then - gcc_cv_as_sparc_ua_pcrel=no - echo ".text; foo: nop; .data; .align 4; .byte 0; .uaword %r_disp32(foo)" > conftest.s - if $gcc_cv_as -K PIC -o conftest.o conftest.s > /dev/null 2>&1 \ - && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then - gcc_cv_as_sparc_ua_pcrel=yes - fi - rm -f conftest.s conftest.o conftest - fi - ]) - if test "x$gcc_cv_as_sparc_ua_pcrel" = xyes; then - AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1, + sparc*-*-*) + gcc_GAS_CHECK_FEATURE([.register], gcc_cv_as_sparc_register_op,,, + [.register %g2, #scratch],, + [AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP, 1, + [Define if your assembler supports .register.])]) + + gcc_GAS_CHECK_FEATURE([-relax option], gcc_cv_as_sparc_relax,, + [-relax], [.text],, + [AC_DEFINE(HAVE_AS_RELAX_OPTION, 1, + [Define if your assembler supports -relax option.])]) + + gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs], + gcc_cv_as_sparc_ua_pcrel,, + [-K PIC], +[.text +foo: + nop +.data +.align 4 +.byte 0 +.uaword %r_disp32(foo)], + [if test x$gcc_cv_ld != x \ + && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1; then + gcc_cv_as_sparc_ua_pcrel=yes + fi + rm -f conftest], + [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL, 1, [Define if your assembler and linker support unaligned PC relative relocs.]) - fi - AC_CACHE_CHECK([assembler and linker support unaligned pc related relocs against hidden symbols], - gcc_cv_as_sparc_ua_pcrel_hidden, [ - if test "x$gcc_cv_as_sparc_ua_pcrel" = xyes; then - gcc_cv_as_sparc_ua_pcrel_hidden=unknown - if test x$gcc_cv_objdump != x; then - gcc_cv_as_sparc_ua_pcrel_hidden=no - echo ".data; .align 4; .byte 0x31; .uaword %r_disp32(foo)" > conftest.s - echo ".byte 0x32, 0x33, 0x34; .global foo; .hidden foo" >> conftest.s - echo "foo: .skip 4" >> conftest.s - if $gcc_cv_as -K PIC -o conftest.o conftest.s > /dev/null 2>&1 \ - && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \ - && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \ - | grep ' 31000000 07323334' > /dev/null 2>&1; then - if $gcc_cv_objdump -R conftest 2> /dev/null \ - | grep 'DISP32' > /dev/null 2>&1; then - : - else - gcc_cv_as_sparc_ua_pcrel_hidden=yes - fi - fi - fi - rm -f conftest.s conftest.o conftest - else - gcc_cv_as_sparc_ua_pcrel_hidden="$gcc_cv_as_sparc_ua_pcrel" - fi - ]) - if test "x$gcc_cv_as_sparc_ua_pcrel_hidden" = xyes; then - AC_DEFINE(HAVE_AS_SPARC_UA_PCREL_HIDDEN, 1, - [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.]) - fi - - AC_CACHE_CHECK([for assembler offsetable %lo() support], - gcc_cv_as_offsetable_lo10, [ - gcc_cv_as_offsetable_lo10=unknown - if test "x$gcc_cv_as" != x; then - # Check if assembler has offsetable %lo() - echo "or %g1, %lo(ab) + 12, %g1" > conftest.s - echo "or %g1, %lo(ab + 12), %g1" > conftest1.s - if $gcc_cv_as -xarch=v9 -o conftest.o conftest.s \ - > /dev/null 2>&1 && - $gcc_cv_as -xarch=v9 -o conftest1.o conftest1.s \ - > /dev/null 2>&1; then - if cmp conftest.o conftest1.o > /dev/null 2>&1; then - gcc_cv_as_offsetable_lo10=no - else - gcc_cv_as_offsetable_lo10=yes - fi + gcc_GAS_CHECK_FEATURE([unaligned pcrel relocs against hidden symbols], + gcc_cv_as_sparc_ua_pcrel_hidden,, + [-K PIC], +[.data +.align 4 +.byte 0x31 +.uaword %r_disp32(foo) +.byte 0x32, 0x33, 0x34 +.global foo +.hidden foo +foo: +.skip 4], + [if test x$gcc_cv_ld != x && test x$gcc_cv_objdump != x \ + && $gcc_cv_ld -o conftest conftest.o -G > /dev/null 2>&1 \ + && $gcc_cv_objdump -s -j .data conftest 2> /dev/null \ + | grep ' 31000000 07323334' > /dev/null 2>&1; then + if $gcc_cv_objdump -R conftest 2> /dev/null \ + | grep 'DISP32' > /dev/null 2>&1; then + : else - gcc_cv_as_offsetable_lo10=no + gcc_cv_as_sparc_ua_pcrel_hidden=yes fi - rm -f conftest.s conftest.o conftest1.s conftest1.o - fi - ]) - if test "x$gcc_cv_as_offsetable_lo10" = xyes; then - AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1, - [Define if your assembler supports offsetable %lo().]) - fi - + fi + rm -f conftest], + [AC_DEFINE(HAVE_AS_SPARC_UA_PCREL_HIDDEN, 1, + [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])]) + ]) # unaligned pcrel relocs + + gcc_GAS_CHECK_FEATURE([offsetable %lo()], + gcc_cv_as_sparc_offsetable_lo10,, + [-xarch=v9], +[.text + or %g1, %lo(ab) + 12, %g1 + or %g1, %lo(ab + 12), %g1], + [if test x$gcc_cv_objdump != x \ + && %gcc_cv_objdump -s -j .text conftest.o 2> /dev/null \ + | grep ' 82106000 82106000' > /dev/null 2>&1; then + gcc_cv_as_offsetable_lo10=yes + fi], + [AC_DEFINE(HAVE_AS_OFFSETABLE_LO10, 1, + [Define if your assembler supports offsetable %lo().])]) ;; changequote(,)dnl i[34567]86-*-* | x86_64-*-*) changequote([,])dnl - AC_MSG_CHECKING(assembler instructions) - gcc_cv_as_instructions= - if test $in_tree_gas = yes ; then - gcc_GAS_VERSION_GTE_IFELSE(2,9,0,[ - gcc_cv_as_instructions="filds fists" - ]) - elif test x$gcc_cv_as != x; then - set "filds fists" "filds mem; fists mem" - while test $# -gt 0 - do - echo "$2" > conftest.s - if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then - gcc_cv_as_instructions=${gcc_cv_as_instructions}$1" " - fi - shift 2 - done - rm -f conftest.s conftest.o - fi - if test x"$gcc_cv_as_instructions" != x; then - AC_DEFINE_UNQUOTED(HAVE_GAS_`echo "$gcc_cv_as_instructions" | sed -e 's/ $//' | tr '[a-z ]' '[A-Z_]'`) - fi - AC_MSG_RESULT($gcc_cv_as_instructions) - - AC_MSG_CHECKING(assembler GOTOFF in data directives) - gcc_cv_as_gotoff_in_data=no - if test $in_tree_gas = yes ; then - gcc_GAS_VERSION_GTE_IFELSE(2,11,0,[ - gcc_cv_as_gotoff_in_data=yes - ]) - elif test x$gcc_cv_as != x; then - cat > conftest.s <<EOF - .text + gcc_GAS_CHECK_FEATURE([filds and fists mnemonics], + gcc_cv_as_ix86_filds_fists, + [2,9,0],, [filds mem; fists mem],, + [AC_DEFINE(HAVE_GAS_FILDS_FISTS, 1, + [Define if your assembler uses the new HImode fild and fist notation.])]) + + gcc_GAS_CHECK_FEATURE([GOTOFF in data], + gcc_cv_as_ix86_gotoff_in_data, [2,11,0],, +[ .text .L0: nop .data - .long .L0@GOTOFF -EOF - if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then - gcc_cv_as_gotoff_in_data=yes - fi - fi - AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA, + .long .L0@GOTOFF],, + [AC_DEFINE_UNQUOTED(HAVE_AS_GOTOFF_IN_DATA, [`if test $gcc_cv_as_gotoff_in_data = yes; then echo 1; else echo 0; fi`], - [Define true if the assembler supports '.long foo@GOTOFF'.]) - AC_MSG_RESULT($gcc_cv_as_gotoff_in_data) + [Define true if the assembler supports '.long foo@GOTOFF'.])]) ;; ia64*-*-*) - AC_CACHE_CHECK([assembler supports ltoffx and ldxmov], - gcc_cv_as_ltoffx_ldxmov_relocs, [ - gcc_cv_as_ltoffx_ldxmov_relocs=unknown - if test $in_tree_gas = yes ; then - gcc_GAS_VERSION_GTE_IFELSE(2,14,0,[ - gcc_cv_as_ltoffx_ldxmov_relocs=yes - ]) - elif test x$gcc_cv_as != x; then - cat > conftest.s << 'EOF' -changequote(,)dnl - .text + gcc_GAS_CHECK_FEATURE([ltoffx and ldxmov relocs], + gcc_cv_as_ia64_ltoffx_ldxmov_relocs, [2,14,0],, +changequote(<<,>>)dnl +<< .text addl r15 = @ltoffx(x#), gp ;; - ld8.mov r16 = [r15], x# -EOF + ld8.mov r16 = [r15], x#>>, changequote([,])dnl - if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then - gcc_cv_as_ltoffx_ldxmov_relocs=yes - else - gcc_cv_as_ltoffx_ldxmov_relocs=no - fi - rm -f conftest.s conftest.o - fi - ]) - if test "x$gcc_cv_as_ltoffx_ldxmov_relocs" = xyes; then - AC_DEFINE(HAVE_AS_LTOFFX_LDXMOV_RELOCS, 1, - [Define if your assembler supports ltoffx and ldxmov relocations.]) - fi + [AC_DEFINE(HAVE_AS_LTOFFX_LDXMOV_RELOCS, 1, + [Define if your assembler supports ltoffx and ldxmov relocations.])]) + ;; + powerpc*-*-*) - AC_CACHE_CHECK([assembler supports mfcr field], - gcc_cv_as_mfcrf, [ - gcc_cv_as_mfcrf=unknown - if test $in_tree_gas = yes ; then - gcc_GAS_VERSION_GTE_IFELSE(2,14,0,[ - gcc_cv_as_mfcrf=yes - ]) - elif test x$gcc_cv_as != x; then - cat > conftest.s << 'EOF' - case "$target" in -changequote(,)dnl - *-*-aix*) - .csect .text[PR] - ;; - *) - .text - ;; - esac - mfcr 3,128 -EOF -changequote([,])dnl - if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then - gcc_cv_as_mfcrf=yes - else - gcc_cv_as_mfcrf=no - fi - rm -f conftest.s conftest.o - fi - ]) - if test "x$gcc_cv_as_mfcrf" = xyes; then - AC_DEFINE(HAVE_AS_MFCRF, 1, - [Define if your assembler supports mfcr field.]) - fi + case $target in + *-*-aix) conftest_s=' .csect .text[PR]';; + *) conftest_s=' .text';; + esac + conftest_s="$conftest_s + mfcr 3,128" + + gcc_GAS_CHECK_FEATURE([mfcr field support], + gcc_cv_as_powerpc_mfcrf, [2,14,0],, + [$conftest_s],, + [AC_DEFINE(HAVE_AS_MFCRF, 1, + [Define if your assembler supports mfcr field.])]) ;; -esac -AC_MSG_CHECKING(assembler dwarf2 debug_line support) -gcc_cv_as_dwarf2_debug_line=no + mips*-*-*) + gcc_GAS_CHECK_FEATURE([explicit relocation support], + gcc_cv_as_mips_explicit_relocs, [2,14,0],, +[ lw $4,%gp_rel(foo)($4)],, + [if test x$target_cpu_default = x + then target_cpu_default=MASK_EXPLICIT_RELOCS + else target_cpu_default="($target_cpu_default)|MASK_EXPLICIT_RELOCS" + fi]) + + ;; +esac # ??? Not all targets support dwarf2 debug_line, even within a version # of gas. Moreover, we need to emit a valid instruction to trigger any # info to the output file. So, as supported targets are added to gas 2.11, @@ -2527,90 +2307,55 @@ case "$target" in mmix-*-*) insn="swym 0" ;; - esac -if test $in_tree_gas = yes ; then - gcc_GAS_VERSION_GTE_IFELSE(2,11,0,[ - test $in_tree_gas_is_elf = yes && test x"$insn" != x \ - && gcc_cv_as_dwarf2_debug_line="yes" - ]) -elif test x$gcc_cv_as != x -a x"$insn" != x ; then - echo ' .file 1 "conftest.s"' > conftest.s - echo ' .loc 1 3 0' >> conftest.s - echo " $insn" >> conftest.s - # ??? This fails with non-gnu grep. - if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \ - && grep debug_line conftest.o > /dev/null 2>&1 ; then - # The .debug_line file table must be in the exact order that - # we specified the files, since these indices are also used - # by DW_AT_decl_file. Approximate this test by testing if - # the assembler bitches if the same index is assigned twice. - echo ' .file 1 "foo.s"' > conftest.s - echo ' .file 1 "bar.s"' >> conftest.s - if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 - then - gcc_cv_as_dwarf2_debug_line="no" - else - gcc_cv_as_dwarf2_debug_line="yes" - fi - fi - rm -f conftest.s conftest.o conftest.nm1 conftest.nm2 -fi -if test x"$gcc_cv_as_dwarf2_debug_line" = xyes; then +esac +if test x"$insn" != x; then + conftest_s="\ + .file 1 \"conftest.s\" + .loc 1 3 0 + $insn" + gcc_GAS_CHECK_FEATURE([dwarf2 debug_line support], + gcc_cv_as_dwarf2_debug_line, + [elf,2,11,0],, [$conftest_s], + [# ??? This fails with non-gnu grep. Maybe use objdump? + if grep debug_line conftest.o > /dev/null 2>&1; then + gcc_cv_as_dwarf2_debug_line=yes + fi]) + +# The .debug_line file table must be in the exact order that +# we specified the files, since these indices are also used +# by DW_AT_decl_file. Approximate this test by testing if +# the assembler bitches if the same index is assigned twice. + gcc_GAS_CHECK_FEATURE([buggy dwarf2 .file directive], + gcc_cv_as_dwarf2_file_buggy,,, +[ .file 1 "foo.s" + .file 1 "bar.s"]) + + if test $gcc_cv_as_dwarf2_debug_line = yes \ + && test $gcc_cv_as_dwarf2_file_buggy = no; then AC_DEFINE(HAVE_AS_DWARF2_DEBUG_LINE, 1, -[Define if your assembler supports dwarf2 .file/.loc directives, + [Define if your assembler supports dwarf2 .file/.loc directives, and preserves file table indices exactly as given.]) + fi + + gcc_GAS_CHECK_FEATURE([--gdwarf2 option], + gcc_cv_as_gdwarf2_flag, + [elf,2,11,0], [--gdwarf2], [$insn],, + [AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1, +[Define if your assembler supports the --gdwarf2 option.])]) + + gcc_GAS_CHECK_FEATURE([--gstabs option], + gcc_cv_as_gstabs_flag, + [elf,2,11,0], [--gstabs], [$insn], + [# The native Solaris 9/Intel assembler doesn't understand --gstabs + # and warns about it, but still exits successfully. So check for + # this. + if AC_TRY_COMMAND([$gcc_cv_as --gstabs -o conftest.o conftest.s 2>&1 | grep -i warning > /dev/null]) + then : + else gcc_cv_as_gstabs_flag=yes + fi], + [AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1, +[Define if your assembler supports the --gstabs option.])]) fi -AC_MSG_RESULT($gcc_cv_as_dwarf2_debug_line) - -AC_MSG_CHECKING(assembler --gdwarf2 support) -gcc_cv_as_gdwarf2_flag=no -if test $in_tree_gas = yes ; then - gcc_GAS_VERSION_GTE_IFELSE(2,11,0,[ - test $in_tree_gas_is_elf = yes && test x"$insn" != x \ - && gcc_cv_as_gdwarf2_flag="yes" - ]) -elif test x$gcc_cv_as != x -a x"$insn" != x ; then - echo '' > conftest.s - # ??? This fails with non-gnu grep. - if $gcc_cv_as --gdwarf2 -o conftest.o conftest.s > /dev/null 2>&1 - then - gcc_cv_as_gdwarf2_flag="yes" - fi - rm -f conftest.s conftest.o -fi -if test x"$gcc_cv_as_gdwarf2_flag" = xyes; then - AC_DEFINE(HAVE_AS_GDWARF2_DEBUG_FLAG, 1, -[Define if your assembler supports the --gdwarf2 option.]) -fi -AC_MSG_RESULT($gcc_cv_as_gdwarf2_flag) - -AC_MSG_CHECKING(assembler --gstabs support) -gcc_cv_as_gstabs_flag=no -if test $in_tree_gas = yes ; then - gcc_GAS_VERSION_GTE_IFELSE(2,11,0,[ - test $in_tree_gas_is_elf = yes && test x"$insn" != x \ - && gcc_cv_as_gstabs_flag="yes" - ]) -elif test x$gcc_cv_as != x -a x"$insn" != x ; then - echo '' > conftest.s - # ??? This fails with non-gnu grep. - if $gcc_cv_as --gstabs -o conftest.o conftest.s > /dev/null 2>&1 ; then - gcc_cv_as_gstabs_flag="yes" - # The native Solaris 9/Intel assembler doesn't understand --gstabs - # and warns about it, but still exits successfully. So check for - # this. - if $gcc_cv_as --gstabs -o conftest.o conftest.s 2>&1 | \ - grep -i warning > /dev/null ; then - gcc_cv_as_gstabs_flag="no" - fi - fi - rm -f conftest.s conftest.o -fi -if test x"$gcc_cv_as_gstabs_flag" = xyes; then - AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1, -[Define if your assembler supports the --gstabs option.]) -fi -AC_MSG_RESULT($gcc_cv_as_gstabs_flag) AC_MSG_CHECKING(linker read-only and read-write section mixing) gcc_cv_ld_ro_rw_mix=unknown @@ -2716,33 +2461,13 @@ case "$target" in [Define if your MIPS libgloss linker scripts consistently include STARTUP directives.]) fi AC_MSG_RESULT($gcc_cv_mips_libgloss_startup) - - AC_MSG_CHECKING(whether the assembler has explicit relocation support) - if test x$gcc_cv_mips_explicit_relocs = x; then - gcc_cv_mips_explicit_relocs=no - if test $in_tree_gas = yes; then - gcc_GAS_VERSION_GTE_IFELSE(2,14,0,[ - gcc_cv_mips_explicit_relocs=yes - ]) - elif test x$gcc_cv_as != x; then - echo ' lw $4,%gp_rel(foo)($4)' > conftest.s - if $gcc_cv_as conftest.s -o conftest.o > /dev/null 2>&1; then - gcc_cv_mips_explicit_relocs=yes - fi - rm -f conftest.s conftest.o - fi - fi - if test $gcc_cv_mips_explicit_relocs = yes; then - test x$target_cpu_default != x || target_cpu_default=0 - target_cpu_default="(${target_cpu_default}|MASK_EXPLICIT_RELOCS)" - fi - AC_MSG_RESULT($gcc_cv_mips_explicit_relocs) ;; esac if test x$with_sysroot = x && test x$host = x$target \ && test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" ; then - AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include") + AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include", +[Define to PREFIX/include if cpp should also search that directory.]) fi # Figure out what language subdirectories are present. |