* config.gcc (sparcv9-*-solaris2): Default to 32-bit code.
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 12 Apr 2002 23:02:45 +0000 (23:02 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 12 Apr 2002 23:02:45 +0000 (23:02 +0000)
        (sparc*-*-solaris): Clean up header files.
        * configure.in (AS_SPARC64_FLAG): Error out if can't find it
        and plan on generating 64-bit code.
        * toplev.c (decode_g_option): Remove LINKER_DOES_NOT_WORK_WITH_DWARF2.
        * config/sparc/sol2-64.h: Delete and reuse for default 64-bit code.
        * config/sparc/sol2-sld-64.h: Rename ...
        * config/sparc/sol2-bi.h: ... here.  Remove the bits that checked
        for AS_SPARC64_FLAG not defined.
        * config/sparc/sol2-gld-bi.h: New.
        * config/sparc/sol2-sld.h: Remove.
        * config/sparc/sol26-sld.h: New.
        * config/sparc/sol2.h: Tidy comments.
        * doc/install.texi: Document sparc-solaris configury changes.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@52251 138bc75d-0d04-0410-961f-82ee72b054a4

12 files changed:
gcc/ChangeLog
gcc/config.gcc
gcc/config/sparc/sol2-64.h
gcc/config/sparc/sol2-bi.h [moved from gcc/config/sparc/sol2-sld-64.h with 79% similarity]
gcc/config/sparc/sol2-gld-bi.h [new file with mode: 0644]
gcc/config/sparc/sol2-sld.h [deleted file]
gcc/config/sparc/sol2.h
gcc/config/sparc/sol26-sld.h [new file with mode: 0644]
gcc/configure
gcc/configure.in
gcc/doc/install.texi
gcc/toplev.c

index 8056982..25d865e 100644 (file)
@@ -1,5 +1,22 @@
 2002-04-12  Richard Henderson  <rth@redhat.com>
 
+       * config.gcc (sparcv9-*-solaris2): Default to 32-bit code.
+       (sparc*-*-solaris): Clean up header files.
+       * configure.in (AS_SPARC64_FLAG): Error out if can't find it
+       and plan on generating 64-bit code.
+       * toplev.c (decode_g_option): Remove LINKER_DOES_NOT_WORK_WITH_DWARF2.
+       * config/sparc/sol2-64.h: Delete and reuse for default 64-bit code.
+       * config/sparc/sol2-sld-64.h: Rename ...
+       * config/sparc/sol2-bi.h: ... here.  Remove the bits that checked
+       for AS_SPARC64_FLAG not defined.
+       * config/sparc/sol2-gld-bi.h: New.
+       * config/sparc/sol2-sld.h: Remove.
+       * config/sparc/sol26-sld.h: New.
+       * config/sparc/sol2.h: Tidy comments.
+       * doc/install.texi: Document sparc-solaris configury changes.
+
+2002-04-12  Richard Henderson  <rth@redhat.com>
+
        * recog.c (offsettable_address_p): Match the logic in adjust_address.
 
        * config/sparc/sparc.h (LEGITIMIZE_RELOAD_ADDRESS): Handle TFmode
index 4121306..844e79b 100644 (file)
@@ -3070,12 +3070,10 @@ sparc-*-rtems*|sparc-*-rtemself*)
          thread_file='rtems'
        fi
        ;;
-sparcv9-*-solaris2* | sparc64-*-solaris2*)
-       if test x$gnu_ld = xyes
-       then
-               tm_file="sparc/sol2-sld-64.h sparc/sol2-64.h sparc/sol2-gld.h"
-       else
-               tm_file=sparc/sol2-sld-64.h
+sparc64-*-solaris2*)
+       tm_file="sparc/biarch64.h sparc/sol2-64.h ${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/sol2.h sparc/sol2-bi.h"
+       if test x$gnu_ld = xyes; then
+               tm_file="${tm_file} sparc/sol2-gld.h sparc/sol2-gld-bi.h"
        fi
        xm_defines=POSIX
        tmake_file="sparc/t-sol2 sparc/t-sol2-64 sparc/t-crtfm"
@@ -3121,33 +3119,32 @@ sparc-hal-solaris2*)
         esac
        thread_file='solaris'
         ;;
-sparc-*-solaris2*)
-       if test x$gnu_ld = xyes
-       then
-               tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/sol2.h sparc/sol2-gld.h"
-       else
-               tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/sol2.h sparc/sol2-sld.h"
+sparc-*-solaris2* | sparcv9-*-solaris2*)
+       tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/sol2.h"
+       if test x$gnu_ld = xyes; then
+               tm_file="${tm_file} sparc/sol2-gld.h"
        fi
-       xm_defines=POSIX
        tmake_file="sparc/t-sol2 sparc/t-crtfm"
        if test x$gnu_ld = xyes; then
                tmake_file="$tmake_file t-slibgcc-elf-ver"
        else
                tmake_file="$tmake_file t-slibgcc-sld"
        fi
-       extra_parts="crt1.o crti.o crtn.o gcrt1.o gmon.o crtbegin.o crtend.o"
        case $machine in
-       *-*-solaris2.[0-6] | *-*-solaris2.[0-6].*) ;;
-       *-*-solaris2*)
-               if test x$gnu_ld = xyes
-               then
-                       tm_file="sparc/sol2-sld-64.h sparc/sol2-64.h sparc/sol2-gld.h"
-               else
-                       tm_file="sparc/sol2-sld-64.h"
+       sparcv9-*)
+               tm_file="sparc/biarch64.h ${tm_file} sparc/sol2-bi.h"
+               if test x$gnu_ld = xyes; then
+                       tm_file="${tm_file} sparc/sol2-gld-bi.h"
                fi
                tmake_file="$tmake_file sparc/t-sol2-64"
                ;;
+       *-*-solaris2.[0-6] | *-*-solaris2.[0-6].*)
+               if test x$gnu_ld = xno; then
+                       tm_file="${tm_file} sparc/sol26-sld.h"
+               fi
        esac
+       xm_defines=POSIX
+       extra_parts="crt1.o crti.o crtn.o gcrt1.o gmon.o crtbegin.o crtend.o"
        case $machine in
        *-*-solaris2.[0-4])
                float_format=i128
index 40db497..ccdc8f3 100644 (file)
@@ -1,20 +1,7 @@
-/* Definitions of target machine for GNU compiler, for 64-bit SPARC
-   running Solaris 2 using the GNU linker.  */
+/* Definitions of target machine for GNU compiler, for bi-arch SPARC
+   running Solaris 2, defaulting to 64-bit code generation.  */
 
-#ifdef LINKER_DOES_NOT_WORK_WITH_DWARF2
-#undef LINKER_DOES_NOT_WORK_WITH_DWARF2
-#endif
-
-#ifdef AS_SPARC64_FLAG
-
-#ifdef LINK_ARCH_SPEC
-#undef LINK_ARCH_SPEC
-#endif
-
-#define LINK_ARCH_SPEC "\
-%{m32:-m elf32_sparc %(link_arch32)} \
-%{m64:-m elf64_sparc %(link_arch64)} \
-%{!m32:%{!m64:%(link_arch_default)}} \
-"
-
-#endif
+#undef TARGET_DEFAULT
+#define TARGET_DEFAULT \
+  (MASK_V9 + MASK_PTR64 + MASK_64BIT /* + MASK_HARD_QUAD */ + \
+   MASK_STACK_BIAS + MASK_FPU + MASK_LONG_DOUBLE_128)
similarity index 79%
rename from gcc/config/sparc/sol2-sld-64.h
rename to gcc/config/sparc/sol2-bi.h
index 2a8eafc..63a4d66 100644 (file)
@@ -1,35 +1,6 @@
-/* Definitions of target machine for GNU compiler, for 64-bit SPARC
+/* Definitions of target machine for GNU compiler, for bi-arch SPARC
    running Solaris 2 using the system linker.  */
 
-#ifdef AS_SPARC64_FLAG
-#include "sparc/biarch64.h"
-#endif
-
-#include "sparc/sparc.h"
-#include "dbxelf.h"
-#include "elfos.h"
-#include "svr4.h"
-#include "sparc/sysv4.h"
-#include "sparc/sol2.h"
-
-#ifdef AS_SPARC64_FLAG
-
-/* At least up through Solaris 2.6,
-   the system linker does not work with DWARF or DWARF2,
-   since it does not have working support for relocations
-   to unaligned data.  */
-
-#define LINKER_DOES_NOT_WORK_WITH_DWARF2
-
-/* A 64 bit v9 compiler with stack-bias */
-
-#if TARGET_CPU_DEFAULT == TARGET_CPU_v9 || TARGET_CPU_DEFAULT == TARGET_CPU_ultrasparc
-#undef TARGET_DEFAULT
-#define TARGET_DEFAULT \
-  (MASK_V9 + MASK_PTR64 + MASK_64BIT /* + MASK_HARD_QUAD */ + \
-   MASK_STACK_BIAS + MASK_FPU + MASK_LONG_DOUBLE_128)
-#endif
-
 /* The default code model.  */
 #undef SPARC_DEFAULT_CMODEL
 #define SPARC_DEFAULT_CMODEL CM_MEDANY
 %{ansi:/usr/lib/sparcv9/values-Xc.o%s} \
 %{!ansi:/usr/lib/sparcv9/values-Xa.o%s}"
  
-#ifdef SPARC_BI_ARCH
-
 #if DEFAULT_ARCH32_P
 #define STARTFILE_ARCH_SPEC "\
 %{m32:" STARTFILE_SPEC32 "} \
 %{!m32:%{!m64:" STARTFILE_SPEC64 "}}"
 #endif
 
-#else /* !SPARC_BI_ARCH */
-
-/* In this case we define MD_STARTFILE_PREFIX to /usr/lib/sparcv9/ */
-#define STARTFILE_ARCH_SPEC STARTFILE_SPEC32
-
-#endif /* !SPARC_BI_ARCH */
-
 #undef STARTFILE_SPEC
 #define STARTFILE_SPEC "%{!shared: \
                         %{!symbolic: \
                        crti.o%s " STARTFILE_ARCH_SPEC " \
                        crtbegin.o%s"
 
-#ifdef SPARC_BI_ARCH
-
 #undef CPP_CPU_DEFAULT_SPEC
 #define CPP_CPU_DEFAULT_SPEC \
 (DEFAULT_ARCH32_P ? "\
 #define MULTILIB_DEFAULTS { "m64" }
 #endif
 
-#else /* !SPARC_BI_ARCH */
-
-/*
- * This should be the same as in sol2-sld.h, except with "/sparcv9"
- * appended to the paths and /usr/ccs/lib is no longer necessary
- */
-#undef LINK_SPEC
-#define LINK_SPEC \
-  "%{h*} %{v:-V} \
-   %{b} %{Wl,*:%*} \
-   %{static:-dn -Bstatic} \
-   %{shared:-G -dy %{!mimpure-text:-z text}} \
-   %{symbolic:-Bsymbolic -G -dy -z text} \
-   %{mcmodel=medlow:-M /usr/lib/ld/sparcv9/map.below4G} \
-   %{G:-G} \
-   %{YP,*} \
-   %{R*} \
-   %{compat-bsd: \
-     %{!YP,*:%{p:-Y P,/usr/ucblib/sparcv9:/usr/lib/libp/sparcv9:/usr/lib/sparcv9} \
-       %{pg:-Y P,/usr/ucblib/sparcv9:/usr/lib/libp/sparcv9:/usr/lib/sparcv9} \
-       %{!p:%{!pg:-Y P,/usr/ucblib/sparcv9:/usr/lib/sparcv9}}} \
-     -R /usr/ucblib} \
-   %{!compat-bsd: \
-     %{!YP,*:%{p:-Y P,/usr/lib/libp/sparcv9:/usr/lib/sparcv9} \
-       %{pg:-Y P,/usr/lib/libp/sparcv9:/usr/lib/sparcv9} \
-       %{!p:%{!pg:-Y P,/usr/lib/sparcv9}}}} \
-   %{Qy:} %{!Qn:-Qy}"
-   
-#undef MD_STARTFILE_PREFIX
-#define MD_STARTFILE_PREFIX "/usr/lib/sparcv9/"
-#endif /* ! SPARC_BI_ARCH */
-
-#endif
+/* We use stabs-in-elf in 32-bit mode, because that is what the native
+   toolchain uses.  But gdb can't handle truncated 32-bit stabs so we
+   use dwarf2 in 64-bit mode.  */
+#undef PREFERRED_DEBUGGING_TYPE
+#define PREFERRED_DEBUGGING_TYPE (TARGET_ARCH32 ? DBX_DEBUG : DWARF2_DEBUG)
diff --git a/gcc/config/sparc/sol2-gld-bi.h b/gcc/config/sparc/sol2-gld-bi.h
new file mode 100644 (file)
index 0000000..81a1ff2
--- /dev/null
@@ -0,0 +1,9 @@
+/* Definitions of target machine for GNU compiler, for bi-arch SPARC
+   running Solaris 2 using the GNU linker.  */
+
+#undef LINK_ARCH_SPEC
+#define LINK_ARCH_SPEC "\
+%{m32:-m elf32_sparc %(link_arch32)} \
+%{m64:-m elf64_sparc %(link_arch64)} \
+%{!m32:%{!m64:%(link_arch_default)}} \
+"
diff --git a/gcc/config/sparc/sol2-sld.h b/gcc/config/sparc/sol2-sld.h
deleted file mode 100644 (file)
index 3847fae..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/* Definitions of target machine for GNU compiler, for SPARC running Solaris 2
-   using the system linker.  */
-
-/* At least up through Solaris 2.6,
-   the system linker does not work with DWARF or DWARF2,
-   since it does not have working support for relocations
-   to unaligned data.  */
-
-#define LINKER_DOES_NOT_WORK_WITH_DWARF2
index 305129b..69ba9f5 100644 (file)
@@ -1,6 +1,6 @@
 /* Definitions of target machine for GNU compiler, for SPARC running Solaris 2
-   Copyright 1992, 1995, 1996, 1997, 1998, 1999, 2000,
-   2001 Free Software Foundation, Inc.
+   Copyright 1992, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
+   Free Software Foundation, Inc.
    Contributed by Ron Guilmette (rfg@netcom.com).
    Additional changes by David V. Henkel-Wallace (gumby@cygnus.com).
 
@@ -89,12 +89,12 @@ Boston, MA 02111-1307, USA.  */
 /* However it appears that Solaris 2.0 uses the same reg numbering as
    the old BSD-style system did.  */
 
-#undef DBX_REGISTER_NUMBER
 /* Same as sparc.h */
+#undef DBX_REGISTER_NUMBER
 #define DBX_REGISTER_NUMBER(REGNO) \
   (TARGET_FLAT && (REGNO) == HARD_FRAME_POINTER_REGNUM ? 31 : REGNO)
 
-/* We use stabs-in-elf for debugging, because that is what the native
+/* We use stabs-in-elf by default, because that is what the native
    toolchain uses.  */
 #undef PREFERRED_DEBUGGING_TYPE
 #define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
diff --git a/gcc/config/sparc/sol26-sld.h b/gcc/config/sparc/sol26-sld.h
new file mode 100644 (file)
index 0000000..74b5433
--- /dev/null
@@ -0,0 +1,6 @@
+/* Up through Solaris 2.6, the system linker does not work with DWARF
+   or DWARF2, since it does not have working support for relocations
+   to unaligned data.  */
+
+#undef DWARF_DEBUGGING_INFO
+#undef DWARF2_DEBUGGING_INFO
index 0e14fcf..c2c9423 100755 (executable)
@@ -7515,8 +7515,8 @@ EOF
 
     fi
 
-    case "$tm_file" in
-    *64*)
+    case "$target" in
+    sparcv9-* | sparc64-*)
        echo $ac_n "checking for 64 bit support in assembler ($gcc_cv_as)""... $ac_c" 1>&6
 echo "configure:7522: checking for 64 bit support in assembler ($gcc_cv_as)" >&5
 if eval "test \"`echo '$''{'gcc_cv_as_flags64'+set}'`\" = set"; then
@@ -7546,10 +7546,8 @@ 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, $,,'`
-
+           { echo "configure: error: Assembler does not support 64-bit compilation." 1>&2; exit 1; }
+           exit 1
        else
            cat >> confdefs.h <<EOF
 #define AS_SPARC64_FLAG "$gcc_cv_as_flags64"
@@ -7563,7 +7561,7 @@ EOF
 
     if test "x$gcc_cv_as_flags64" != xno; then
        echo $ac_n "checking for assembler offsetable %lo() support""... $ac_c" 1>&6
-echo "configure:7567: checking for assembler offsetable %lo() support" >&5
+echo "configure:7565: 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
@@ -7603,7 +7601,7 @@ EOF
 
   i[34567]86-*-* | x86_64-*-*)
     echo $ac_n "checking assembler instructions""... $ac_c" 1>&6
-echo "configure:7607: checking assembler instructions" >&5
+echo "configure:7605: checking assembler instructions" >&5
     gcc_cv_as_instructions=
     if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
       if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 9 -o "$gcc_cv_gas_major_version" -gt 2; then
@@ -7630,7 +7628,7 @@ EOF
     echo "$ac_t""$gcc_cv_as_instructions" 1>&6
 
     echo $ac_n "checking assembler GOTOFF in data directives""... $ac_c" 1>&6
-echo "configure:7634: checking assembler GOTOFF in data directives" >&5
+echo "configure:7632: checking assembler GOTOFF in data directives" >&5
     gcc_cv_as_gotoff_in_data=no
     if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x
     then
@@ -7660,7 +7658,7 @@ EOF
 esac
 
 echo $ac_n "checking assembler dwarf2 debug_line support""... $ac_c" 1>&6
-echo "configure:7664: checking assembler dwarf2 debug_line support" >&5
+echo "configure:7662: 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
@@ -7716,7 +7714,7 @@ 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:7720: checking assembler --gdwarf2 support" >&5
+echo "configure:7718: checking assembler --gdwarf2 support" >&5
 gcc_cv_as_gdwarf2_flag=no
 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x;
 then
@@ -7745,7 +7743,7 @@ fi
 echo "$ac_t""$gcc_cv_as_gdwarf2_flag" 1>&6
 
 echo $ac_n "checking assembler --gstabs support""... $ac_c" 1>&6
-echo "configure:7749: checking assembler --gstabs support" >&5
+echo "configure:7747: checking assembler --gstabs support" >&5
 gcc_cv_as_gstabs_flag=no
 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x;
 then
@@ -7773,7 +7771,7 @@ fi
 echo "$ac_t""$gcc_cv_as_gstabs_flag" 1>&6
 
 echo $ac_n "checking linker PT_GNU_EH_FRAME support""... $ac_c" 1>&6
-echo "configure:7777: checking linker PT_GNU_EH_FRAME support" >&5
+echo "configure:7775: checking linker PT_GNU_EH_FRAME support" >&5
 gcc_cv_ld_eh_frame_hdr=no
 if test x$gcc_cv_gld_major_version != x -a x$gcc_cv_gld_minor_version != x; 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 && grep 'EMUL = elf' ../ld/Makefile > /dev/null; then
@@ -7936,7 +7934,7 @@ fi
 
 
 echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6
-echo "configure:7940: checking whether to enable maintainer-specific portions of Makefiles" >&5
+echo "configure:7938: 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"
index 4dd68db..1a33773 100644 (file)
@@ -1794,8 +1794,8 @@ EOF
                [Define if your assembler and linker support unaligned PC relative relocs against hidden symbols.])
     fi
 
-    case "$tm_file" in
-    *64*)
+    case "$target" in
+    sparcv9-* | sparc64-*)
        AC_CACHE_CHECK([for 64 bit support in assembler ($gcc_cv_as)],
            gcc_cv_as_flags64, [
                if test -n "$gcc_cv_as"; then
@@ -1818,10 +1818,8 @@ EOF
                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([, ])
+           AC_MSG_ERROR([Assembler does not support 64-bit compilation.])
+           exit 1
        else
            AC_DEFINE_UNQUOTED(AS_SPARC64_FLAG, "$gcc_cv_as_flags64",
                        [Define if the assembler supports 64bit sparc.])
index 3e3e258..990db06 100644 (file)
@@ -3464,6 +3464,18 @@ option instead, which should be safe from those bugs and produce code
 that, unlike full 64-bit code, can still run on non-UltraSPARC
 machines.
 
+The target tuple @code{sparc-sun-solaris} will be used for 
+configurations in which only 32-bit SPARC binaries may be executed;
+@code{sparcv9-sun-solaris} will be used when either 32-bit or 64-bit
+binaries may be executed, but the compiler will produce 32-bit 
+binaries unless the @option{-m64} switch is used; @code{sparc64-sun-solaris}
+should be used when the compiler should produce 64-bit binaries
+by default.
+
+Unless otherwise specified, @command{configure} will select either
+@code{sparc} or @code{sparcv9} based on the output of @command{isalist}.
+It will never select @code{sparc64} by default.
+
 @html
 </p>
 <hr>
index 94b2a35..3fe01db 100644 (file)
@@ -3972,7 +3972,7 @@ ignoring option `%s' due to invalid debug level specification",
 
              if (da_len > 1 && strncmp (arg, "gdb", da_len) == 0)
                {
-#if defined (DWARF2_DEBUGGING_INFO) && !defined (LINKER_DOES_NOT_WORK_WITH_DWARF2)
+#ifdef DWARF2_DEBUGGING_INFO
                  type = DWARF2_DEBUG;
 #else
 #ifdef DBX_DEBUGGING_INFO