configure.in: When target is sparc* and tm_file contains 64, test for 64bit support in assembler.

* configure.in: When target is sparc* and tm_file contains 64,
test for 64bit support in assembler.  If not supported, remove
sparc/t-sol2-64 from target-dependent Makefile fragments.
(AS_SPARC64_FLAG): Define to the assembler flag for 64bit.
(HAVE_AS_OFFSETABLE_LO10): Rework test to use these flags.
(HAVE_AS_REGISTER_PSEUDO_OP): Use config.cache.
* acconfig.h (AS_SPARC64_FLAG): Added.
* configure, config.in: Rebuilt.
* config/sparc/sol2-sld-64.h: Same as sol2.h, if without 64bit
support.  Use AS_SPARC64_FLAG.

From-SVN: r30827
This commit is contained in:
Alexandre Oliva 1999-12-08 10:27:54 +00:00 committed by Alexandre Oliva
parent efe8d0acb4
commit 5b68c389aa
6 changed files with 204 additions and 80 deletions

View File

@ -1,3 +1,16 @@
1999-12-08 Alexandre Oliva <oliva@lsd.ic.unicamp.br>, Jakub Jelinek <jakub@redhat.com>
* configure.in: When target is sparc* and tm_file contains 64,
test for 64bit support in assembler. If not supported, remove
sparc/t-sol2-64 from target-dependent Makefile fragments.
(AS_SPARC64_FLAG): Define to the assembler flag for 64bit.
(HAVE_AS_OFFSETABLE_LO10): Rework test to use these flags.
(HAVE_AS_REGISTER_PSEUDO_OP): Use config.cache.
* acconfig.h (AS_SPARC64_FLAG): Added.
* configure, config.in: Rebuilt.
* config/sparc/sol2-sld-64.h: Same as sol2.h, if without 64bit
support. Use AS_SPARC64_FLAG.
1999-12-07 Jakub Jelinek <jakub@redhat.com> 1999-12-07 Jakub Jelinek <jakub@redhat.com>
* config/sparc/sparc.c (hard_32bit_mode_classes): Mark registers * config/sparc/sparc.c (hard_32bit_mode_classes): Mark registers

View File

@ -33,6 +33,9 @@
/* Define if your assembler supports .balign and .p2align. */ /* Define if your assembler supports .balign and .p2align. */
#undef HAVE_GAS_BALIGN_AND_P2ALIGN #undef HAVE_GAS_BALIGN_AND_P2ALIGN
/* Define if the assembler supports 64bit sparc. */
#undef AS_SPARC64_FLAG
/* Define if your assembler supports offsetable %lo(). */ /* Define if your assembler supports offsetable %lo(). */
#undef HAVE_AS_OFFSETABLE_LO10 #undef HAVE_AS_OFFSETABLE_LO10

View File

@ -34,6 +34,9 @@
/* Define if your assembler supports .balign and .p2align. */ /* Define if your assembler supports .balign and .p2align. */
#undef HAVE_GAS_BALIGN_AND_P2ALIGN #undef HAVE_GAS_BALIGN_AND_P2ALIGN
/* Define if the assembler supports 64bit sparc. */
#undef AS_SPARC64_FLAG
/* Define if your assembler supports offsetable %lo(). */ /* Define if your assembler supports offsetable %lo(). */
#undef HAVE_AS_OFFSETABLE_LO10 #undef HAVE_AS_OFFSETABLE_LO10

View File

@ -1,10 +1,16 @@
/* Definitions of target machine for GNU compiler, for 64-bit SPARC /* Definitions of target machine for GNU compiler, for 64-bit SPARC
running Solaris 2 using the system linker. */ running Solaris 2 using the system linker. */
#ifdef AS_SPARC64_FLAG
#define SPARC_BI_ARCH #define SPARC_BI_ARCH
#endif
#include "sparc/sol2.h" #include "sparc/sol2.h"
#ifdef AS_SPARC64_FLAG
/* At least up through Solaris 2.6, /* At least up through Solaris 2.6,
the system linker does not work with DWARF or DWARF2, the system linker does not work with DWARF or DWARF2,
since it does not have working support for relocations since it does not have working support for relocations
@ -31,7 +37,7 @@
#undef ASM_CPU32_DEFAULT_SPEC #undef ASM_CPU32_DEFAULT_SPEC
#define ASM_CPU32_DEFAULT_SPEC "" #define ASM_CPU32_DEFAULT_SPEC ""
#undef ASM_CPU64_DEFAULT_SPEC #undef ASM_CPU64_DEFAULT_SPEC
#define ASM_CPU64_DEFAULT_SPEC "-xarch=v9" #define ASM_CPU64_DEFAULT_SPEC AS_SPARC64_FLAG
#if TARGET_CPU_DEFAULT == TARGET_CPU_v9 #if TARGET_CPU_DEFAULT == TARGET_CPU_v9
#undef CPP_CPU64_DEFAULT_SPEC #undef CPP_CPU64_DEFAULT_SPEC
@ -45,7 +51,7 @@
#undef ASM_CPU32_DEFAULT_SPEC #undef ASM_CPU32_DEFAULT_SPEC
#define ASM_CPU32_DEFAULT_SPEC "-xarch=v8plusa" #define ASM_CPU32_DEFAULT_SPEC "-xarch=v8plusa"
#undef ASM_CPU64_DEFAULT_SPEC #undef ASM_CPU64_DEFAULT_SPEC
#define ASM_CPU64_DEFAULT_SPEC "-xarch=v9a" #define ASM_CPU64_DEFAULT_SPEC AS_SPARC64_FLAG "a"
#endif #endif
/* The sun bundled assembler doesn't accept -Yd, (and neither does gas). /* The sun bundled assembler doesn't accept -Yd, (and neither does gas).
@ -84,9 +90,9 @@
#undef ASM_CPU_SPEC #undef ASM_CPU_SPEC
#define ASM_CPU_SPEC "\ #define ASM_CPU_SPEC "\
%{mcpu=ultrasparc:" DEF_ARCH32_SPEC("-xarch=v8plusa") DEF_ARCH64_SPEC("-xarch=v9a") "} \ %{mcpu=ultrasparc:" DEF_ARCH32_SPEC("-xarch=v8plusa") DEF_ARCH64_SPEC(AS_SPARC64_FLAG "a") "} \
%{mcpu=v9:" DEF_ARCH32_SPEC("-xarch=v8plus") DEF_ARCH64_SPEC("-xarch=v9") "} \ %{mcpu=v9:" DEF_ARCH32_SPEC("-xarch=v8plus") DEF_ARCH64_SPEC(AS_SPARC64_FLAG) "} \
%{!mcpu=ultrasparc:%{!mcpu=v9:%{mcpu*:" DEF_ARCH32_SPEC("-xarch=v8") DEF_ARCH64_SPEC("-xarch=v9") "}}} \ %{!mcpu=ultrasparc:%{!mcpu=v9:%{mcpu*:" DEF_ARCH32_SPEC("-xarch=v8") DEF_ARCH64_SPEC(AS_SPARC64_FLAG) "}}} \
%{!mcpu*:%(asm_cpu_default)} \ %{!mcpu*:%(asm_cpu_default)} \
" "
@ -364,3 +370,4 @@ __enable_execute_stack (addr) \
fprintf (FILE, "\n"); \ fprintf (FILE, "\n"); \
} while (0) } while (0)
#endif

136
gcc/configure vendored
View File

@ -1337,7 +1337,7 @@ else
fi fi
# Find some useful tools # Find some useful tools
for ac_prog in gawk mawk nawk awk for ac_prog in mawk gawk nawk awk
do do
# Extract the first word of "$ac_prog", so it can be a program name with args. # Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2 set dummy $ac_prog; ac_word=$2
@ -5990,7 +5990,7 @@ for machine in $build $host $target; do
xmake_file=sparc/x-sysv4 xmake_file=sparc/x-sysv4
extra_parts="crt1.o crti.o crtn.o gcrt1.o gmon.o crtbegin.o crtend.o" extra_parts="crt1.o crti.o crtn.o gcrt1.o gmon.o crtbegin.o crtend.o"
case $machine in case $machine in
*-*-solaris2.[0-6]*) ;; *-*-solaris2.[0-6] | *-*-solaris2.[0-6].*) ;;
*-*-solaris2*) *-*-solaris2*)
tm_file=sparc/sol2-sld-64.h tm_file=sparc/sol2-sld-64.h
tmake_file="$tmake_file sparc/t-sol2-64" tmake_file="$tmake_file sparc/t-sol2-64"
@ -8602,60 +8602,120 @@ case "$target" in
sparc*-*-*) sparc*-*-*)
echo $ac_n "checking assembler .register pseudo-op support""... $ac_c" 1>&6 echo $ac_n "checking assembler .register pseudo-op support""... $ac_c" 1>&6
echo "configure:8605: checking assembler .register pseudo-op support" >&5 echo "configure:8605: checking assembler .register pseudo-op support" >&5
gcc_cv_as_register_pseudo_op= if eval "test \"`echo '$''{'gcc_cv_as_register_pseudo_op'+set}'`\" = set"; then
if test x$gcc_cv_as != x; then echo $ac_n "(cached) $ac_c" 1>&6
# Check if we have .register else
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=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 gcc_cv_as_register_pseudo_op=yes
cat >> confdefs.h <<\EOF else
gcc_cv_as_register_pseudo_op=no
fi
rm -f conftest.s conftest.o
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
#define HAVE_AS_REGISTER_PSEUDO_OP 1 #define HAVE_AS_REGISTER_PSEUDO_OP 1
EOF EOF
fi
rm -f conftest.s conftest.o
fi fi
echo "$ac_t""$gcc_cv_as_register_pseudo_op" 1>&6
echo $ac_n "checking assembler offsetable %lo() support""... $ac_c" 1>&6 case "$tm_file" in
echo "configure:8622: checking assembler offsetable %lo() support" >&5 *64*)
gcc_cv_as_offsetable_lo10= echo $ac_n "checking for 64 bit support in assembler ($gcc_cv_as)""... $ac_c" 1>&6
if test x$gcc_cv_as != x; then echo "configure:8635: checking for 64 bit support in assembler ($gcc_cv_as)" >&5
# Check if assembler has offsetable %lo() if eval "test \"`echo '$''{'gcc_cv_as_flags64'+set}'`\" = set"; then
echo "or %g1, %lo(ab) + 12, %g1" > conftest.s echo $ac_n "(cached) $ac_c" 1>&6
echo "or %g1, %lo(ab + 12), %g1" > conftest1.s else
gcc_cv_as_flags64="-xarch=v9"
if $gcc_cv_as $gcc_cv_as_flags64 -o conftest.o conftest.s > /dev/null 2>&1; then if test -n "$gcc_cv_as"; then
: echo ".xword foo" > conftest.s
else gcc_cv_as_flags64=no
gcc_cv_as_flags64="-64" for flag in "-xarch=v9" "64 -Av9"; do
if $gcc_cv_as $gcc_cv_as_flags64 -o conftest.o conftest.s > /dev/null 2>&1; then if $gcc_cv_as $flag -o conftest.o conftest.s \
: > /dev/null 2>&1; then
gcc_cv_as_flags64=$flag
break
fi
done
rm -f conftest.s conftest.o
else else
gcc_cv_as_flags64="" if test "$gas" = yes; then
gcc_cv_as_flags64="-64 -Av9"
else
gcc_cv_as_flags64="-xarch=v9"
fi
fi fi
fi
echo "$ac_t""$gcc_cv_as_flags64" 1>&6
if test "x$gcc_cv_as_flags64" = xno; then
tmake_file=`echo " $tmake_file " | sed -e 's, sparc/t-sol2-64 , ,' -e 's,^ ,,' -e 's, $,,'`
dep_tmake_file=`echo " $dep_tmake_file " | sed -e 's, [^ ]*/config/sparc/t-sol2-64 , ,' -e 's,^ ,,' -e 's, $,,'`
else
cat >> confdefs.h <<EOF
#define AS_SPARC64_FLAG "$gcc_cv_as_flags64"
EOF
fi fi
if test -n "$gcc_cv_as_flags64" ; then ;;
if $gcc_cv_as $gcc_cv_as_flags64 -o conftest1.o conftest1.s > /dev/null 2>&1; then *) gcc_cv_as_flags64=${gcc_cv_as_flags64-no}
if cmp conftest.o conftest1.o > /dev/null 2>&1; then ;;
: esac
else
gcc_cv_as_offsetable_lo10=yes if test "x$gcc_cv_as_flags64" != xno; then
cat >> confdefs.h <<\EOF echo $ac_n "checking for assembler offsetable %lo() support""... $ac_c" 1>&6
echo "configure:8680: checking for assembler offsetable %lo() support" >&5
if eval "test \"`echo '$''{'gcc_cv_as_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 $gcc_cv_as_flags64 -o conftest.o conftest.s \
> /dev/null 2>&1 &&
$gcc_cv_as $gcc_cv_as_flags64 -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
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
#define HAVE_AS_OFFSETABLE_LO10 1 #define HAVE_AS_OFFSETABLE_LO10 1
EOF EOF
fi
fi
fi fi
rm -f conftest.s conftest.o conftest1.s conftest1.o
fi fi
echo "$ac_t""$gcc_cv_as_offsetable_lo10" 1>&6
;; ;;
i[34567]86-*-*) i[34567]86-*-*)
echo $ac_n "checking assembler instructions""... $ac_c" 1>&6 echo $ac_n "checking assembler instructions""... $ac_c" 1>&6
echo "configure:8659: checking assembler instructions" >&5 echo "configure:8719: checking assembler instructions" >&5
gcc_cv_as_instructions= gcc_cv_as_instructions=
if test x$gcc_cv_as != x; then if test x$gcc_cv_as != x; then
set "filds fists" "filds mem; fists mem" set "filds fists" "filds mem; fists mem"

View File

@ -3309,7 +3309,7 @@ changequote([,])dnl
extra_parts="crt1.o crti.o crtn.o gcrt1.o gmon.o crtbegin.o crtend.o" extra_parts="crt1.o crti.o crtn.o gcrt1.o gmon.o crtbegin.o crtend.o"
case $machine in case $machine in
changequote(,)dnl changequote(,)dnl
*-*-solaris2.[0-6]*) ;; *-*-solaris2.[0-6] | *-*-solaris2.[0-6].*) ;;
changequote([,])dnl changequote([,])dnl
*-*-solaris2*) *-*-solaris2*)
tm_file=sparc/sol2-sld-64.h tm_file=sparc/sol2-sld-64.h
@ -4324,49 +4324,87 @@ AC_MSG_RESULT($gcc_cv_as_subsections)
case "$target" in case "$target" in
sparc*-*-*) sparc*-*-*)
AC_MSG_CHECKING(assembler .register pseudo-op support) AC_CACHE_CHECK([assembler .register pseudo-op support],
gcc_cv_as_register_pseudo_op= gcc_cv_as_register_pseudo_op, [
if test x$gcc_cv_as != x; then gcc_cv_as_register_pseudo_op=unknown
# Check if we have .register if test x$gcc_cv_as != x; then
echo ".register %g2, #scratch" > conftest.s # Check if we have .register
if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then 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 gcc_cv_as_register_pseudo_op=yes
AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP) else
gcc_cv_as_register_pseudo_op=no
fi
rm -f conftest.s conftest.o
fi fi
rm -f conftest.s conftest.o ])
if test "x$gcc_cv_as_register_pseudo_op" = xyes; then
AC_DEFINE(HAVE_AS_REGISTER_PSEUDO_OP)
fi fi
AC_MSG_RESULT($gcc_cv_as_register_pseudo_op)
AC_MSG_CHECKING([assembler offsetable %lo() support]) case "$tm_file" in
gcc_cv_as_offsetable_lo10= *64*)
if test x$gcc_cv_as != x; then AC_CACHE_CHECK([for 64 bit support in assembler ($gcc_cv_as)],
# Check if assembler has offsetable %lo() gcc_cv_as_flags64, [
echo "or %g1, %lo(ab) + 12, %g1" > conftest.s if test -n "$gcc_cv_as"; then
echo "or %g1, %lo(ab + 12), %g1" > conftest1.s echo ".xword foo" > conftest.s
gcc_cv_as_flags64="-xarch=v9" gcc_cv_as_flags64=no
if $gcc_cv_as $gcc_cv_as_flags64 -o conftest.o conftest.s > /dev/null 2>&1; then for flag in "-xarch=v9" "64 -Av9"; do
: if $gcc_cv_as $flag -o conftest.o conftest.s \
else > /dev/null 2>&1; then
gcc_cv_as_flags64="-64" gcc_cv_as_flags64=$flag
if $gcc_cv_as $gcc_cv_as_flags64 -o conftest.o conftest.s > /dev/null 2>&1; then break
:
else
gcc_cv_as_flags64=""
fi
fi
if test -n "$gcc_cv_as_flags64" ; then
if $gcc_cv_as $gcc_cv_as_flags64 -o conftest1.o conftest1.s > /dev/null 2>&1; then
if cmp conftest.o conftest1.o > /dev/null 2>&1; then
:
else
gcc_cv_as_offsetable_lo10=yes
AC_DEFINE(HAVE_AS_OFFSETABLE_LO10)
fi fi
done
rm -f conftest.s conftest.o
else
if test "$gas" = yes; then
gcc_cv_as_flags64="-64 -Av9"
else
gcc_cv_as_flags64="-xarch=v9"
fi
fi fi
])
if test "x$gcc_cv_as_flags64" = xno; then
changequote(, )
tmake_file=`echo " $tmake_file " | sed -e 's, sparc/t-sol2-64 , ,' -e 's,^ ,,' -e 's, $,,'`
dep_tmake_file=`echo " $dep_tmake_file " | sed -e 's, [^ ]*/config/sparc/t-sol2-64 , ,' -e 's,^ ,,' -e 's, $,,'`
changequote([, ])
else
AC_DEFINE_UNQUOTED(AS_SPARC64_FLAG, "$gcc_cv_as_flags64")
fi
;;
*) gcc_cv_as_flags64=${gcc_cv_as_flags64-no}
;;
esac
if test "x$gcc_cv_as_flags64" != xno; then
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 $gcc_cv_as_flags64 -o conftest.o conftest.s \
> /dev/null 2>&1 &&
$gcc_cv_as $gcc_cv_as_flags64 -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
])
if test "x$gcc_cv_as_offsetable_lo10" = xyes; then
AC_DEFINE(HAVE_AS_OFFSETABLE_LO10)
fi fi
rm -f conftest.s conftest.o conftest1.s conftest1.o
fi fi
AC_MSG_RESULT($gcc_cv_as_offsetable_lo10)
;; ;;
changequote(,)dnl changequote(,)dnl