config.gcc (sparcv9-*-solaris2): Default to 32-bit code.

* 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.

From-SVN: r52251
This commit is contained in:
Richard Henderson 2002-04-12 16:02:45 -07:00 committed by Richard Henderson
parent 2f15e255ed
commit 3fc602a055
12 changed files with 95 additions and 149 deletions

View File

@ -1,3 +1,20 @@
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.

View 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

View 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)

View 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
@ -107,8 +78,6 @@
%{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 "} \
@ -121,13 +90,6 @@
%{!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: \
@ -138,8 +100,6 @@
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 ? "\
@ -295,37 +255,8 @@
#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)

View File

@ -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)}} \
"

View File

@ -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

View 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

View File

@ -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

26
gcc/configure vendored
View File

@ -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"

View 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.])

View 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>

View 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