* Provide 64-bit default Solaris/x86 configuration (PR target/39150)
@ 2011-07-06 11:51 Rainer Orth
2011-07-06 15:34 ` Eric Botcazou
2011-07-07 10:04 ` Rainer Orth
0 siblings, 2 replies; 9+ messages in thread
From: Rainer Orth @ 2011-07-06 11:51 UTC (permalink / raw)
To: gcc-patches
Cc: Eric Botcazou, Ian Lance Taylor, Ralf Wildenhues, Arnaud Charlet,
Joseph S. Myers, Gerald Pfeifer
There has long been some clamoring for a amd64-*-solaris2 configuration
similar to sparcv9-sun-solaris2. I've resisted this for quite some
time, primarily because it doubles the maintenance effort of testing
both the 32-bit default and 64-bit default configurations.
After the recent cleanup patches to the Solaris configuration, it proved
to be quite easy and straight forward to implement. Only a few changes
are worth mentioning:
* TRY_EMPTY_VM_SPACE for amd64 had to be massively reduced in
host-solaris2.c, otherwise mmap would fail with ENOMEM. The old value
had been in the middle of the 64-bit address space, which obviously
doesn't work.
* The TARGET_LD_EMULATION macro needed a clause to properly deal with
the default case: at first, I had used a 32-bit GNU ld for the 64-bit
configuation, which only works if you explicitly specify the 64-bit
emulation. I'm leaving this in although a 32-bit gld doesn't work
properly: the lto-plugin is built as 64-bit object, thus all -flto
tests fail in such a configuration.
I think practically the whole patch falls under the Solaris
maintainership, with the possible exception of the change to the copy of
libtool.m4 in libgo/config. This is not for the technical content, but
for the special commit rules to that directory. Ian?
Anyway, this part of the patch will have to go to upstream libtool.
Ralf, could you take care of that?
Bootstrapped without regression on i386-pc-solaris2.10 (both 32-bit
default and 64-bit default configurations), i386-pc-solaris2.11 and
sparc-sun-solaris2.11 in progress.
There are two caveats, which will be addressed subsequently:
* libstdc++-abi/abi_check FAILs for the 64-bit ABI due to a mismatch
between --print-multi-directory and --print-multi-os-directory. I'll
report and hopefully address this subsequently; the problem already
exists in the the existing sparcv9-sun-solaris2 configurations.
* In the sparcv9-sun-solaris2.11 builds, the 32-bit libgo tests fail to
link since they have unresolved references to
__sync_bool_compare_and_swap_8 and __sync_add_and_fetch_8. I could
trace this to -mv8plus being missing in that configuration. I'm
uncertain where best to handle this. Eric?
Once all the bootstraps have finished, I'll commit this patch (at least
the non-libgo parts) unless anything unexpected comes up.
Rainer
2011-07-02 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
gcc:
PR target/39150
* configure.ac (gcc_cv_as_hidden): Also accept
x86_64-*-solaris2.1[0-9]*.
(gcc_cv_as_cfi_directive): Likewise.
(gcc_cv_as_comdat_group_group): Likewise.
(set_have_as_tls): Likewise.
* configure: Regenerate.
* config.gcc (i[34567]86-*-solaris2*): Also handle
x86_64-*-solaris2.1[0-9]*.
* config.host (i[34567]86-*-solaris2*): Likewise.
* config/sparc/sol2.h (ASM_CPU_DEFAULT_SPEC): Remove.
* config/sol2-bi.h (ASM_CPU_DEFAULT_SPEC): Redefine.
[USE_GLD] (ARCH_DEFAULT_EMULATION): Define.
(TARGET_LD_EMULATION): Use it.
* config/i386/sol2.h (ASM_CPU_DEFAULT_SPEC): Define.
(SUBTARGET_CPU_EXTRA_SPECS): Add asm_cpu_default.
* config/i386/sol2-bi.h (ASM_CPU32_DEFAULT_SPEC): Define.
(ASM_CPU64_DEFAULT_SPEC): Define.
(ASM_CPU_SPEC): Use %(asm_cpu_default).
(ASM_SPEC): Redefine.
(DEFAULT_ARCH32_P): Define using TARGET_64BIT_DEFAULT.
* config/host-solaris.c [__x86_64__] (TRY_EMPTY_VM_SPACE): Reduce.
* doc/install.texi (Specific, amd64-*-solaris2.1[0-9]*):
Document.
(Specific, i?86-*-solaris2.10): Mention x86_64-*-solaris2.1[0-9]*
configuration.
(Specific, x86_64-*-solaris2.1[0-9]*): Document.
gcc/ada:
PR target/39150
* gcc-interface/Makefile.in: Handle x86_64-solaris2.
libgcc:
PR target/39150
* config.host (*-*-solaris2*): Handle x86_64-*-solaris2.1[0-9]*
like i?86-*-solaris2.1[0-9]*.
(i[34567]86-*-solaris2*): Also handle x86_64-*-solaris2.1[0-9]*.
* configure.ac (i?86-*-solaris2*): Likewise.
* configure: Regenerate.
gcc/testsuite:
PR target/39150
* gcc.misc-tests/linkage.exp: Handle x86_64-*-solaris2.1[0-9]*.
toplevel:
PR target/39150
* configure.ac (i[3456789]86-*-solaris2*): Also accept
x86_64-*-solaris2.1[0-9]*.
* configure: Regenerate.
boehm-gc:
PR target/39150
* configure.ac (i?86-*-solaris2.[89]): Also accept
x86_64-*-solaris2.1?.
* configure: Regenerate.
gnattools:
PR target/39150
* configure.ac (*86-*-solaris2*): Also accept
x86_64-*-solaris2.1[0-9]*.
* configure: Regenerate.
libcpp:
PR target/39150
* configure.ac (host_wide_int): Handle x86_64-*-solaris2.1[0-9]
like i[34567]86-*-solaris2.1[0-9]*.
* configure: Regenerate.
libgo:
PR target/39150
* config/libtool.m4: Handle x86_64-*-solaris2.1[0-9]* like
i?86-*-solaris*.
* configure: Regenerate.
libjava:
PR target/39150
* configure.host (x86_64-*): Add -Usun to libgcj_flags.
(x86_64-*-solaris2.1[0-9]*): New case.
(i?86-*-solaris2*): Also accept x86_64-*-solaris2.1[0-9]*.
diff --git a/boehm-gc/configure.ac b/boehm-gc/configure.ac
--- a/boehm-gc/configure.ac
+++ b/boehm-gc/configure.ac
@@ -400,7 +400,7 @@ case "$host" in
alpha*-*-linux*)
machdep="alpha_mach_dep.lo"
;;
- i?86-*-solaris2.[[89]] | i?86-*-solaris2.1?)
+ i?86-*-solaris2.[[89]] | i?86-*-solaris2.1? | x86_64-*-solaris2.1?)
AC_DEFINE(SOLARIS25_PROC_VDB_BUG_FIXED,1,[PROC_VDB in Solaris 2.5 gives wrong values for dirty bits])
;;
mipstx39-*-elf*)
diff --git a/configure.ac b/configure.ac
--- a/configure.ac
+++ b/configure.ac
@@ -923,7 +923,7 @@ case "${target}" in
i[[3456789]]86-*-sco*)
noconfigdirs="$noconfigdirs gprof target-libgloss"
;;
- i[[3456789]]86-*-solaris2*)
+ i[[3456789]]86-*-solaris2* | x86_64-*-solaris2.1[[0-9]]*)
noconfigdirs="$noconfigdirs target-libgloss"
;;
i[[3456789]]86-*-sysv4*)
diff --git a/gcc/ada/gcc-interface/Makefile.in b/gcc/ada/gcc-interface/Makefile.in
--- a/gcc/ada/gcc-interface/Makefile.in
+++ b/gcc/ada/gcc-interface/Makefile.in
@@ -1011,8 +1011,8 @@ ifeq ($(strip $(filter-out sparc% sun so
endif
endif
-ifeq ($(strip $(filter-out %86 solaris2%,$(arch) $(osys))),)
- LIBGNAT_TARGET_PAIRS = \
+ifeq ($(strip $(filter-out %86 %x86_64 solaris2%,$(arch) $(osys))),)
+ LIBGNAT_TARGET_PAIRS_COMMON = \
a-numaux.adb<a-numaux-x86.adb \
a-numaux.ads<a-numaux-x86.ads \
a-intnam.ads<a-intnam-solaris.ads \
@@ -1028,13 +1028,29 @@ ifeq ($(strip $(filter-out %86 solaris2%
s-tpopsp.adb<s-tpopsp-solaris.adb \
g-soliop.ads<g-soliop-solaris.ads
- ifeq ($(strip $(MULTISUBDIR)),/amd64)
- LIBGNAT_TARGET_PAIRS += \
- system.ads<system-solaris-x86_64.ads
+ LIBGNAT_TARGET_PAIRS_32 = \
+ g-bytswa.adb<g-bytswa-x86.adb \
+ system.ads<system-solaris-x86.ads
+
+ LIBGNAT_TARGET_PAIRS_64 = \
+ system.ads<system-solaris-x86_64.ads
+
+ ifeq ($(strip $(filter-out %86 solaris2%,$(arch) $(osys))),)
+ ifeq ($(strip $(MULTISUBDIR)),/amd64)
+ LIBGNAT_TARGET_PAIRS = \
+ $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_64)
+ else
+ LIBGNAT_TARGET_PAIRS = \
+ $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_32)
+ endif
else
- LIBGNAT_TARGET_PAIRS += \
- g-bytswa.adb<g-bytswa-x86.adb \
- system.ads<system-solaris-x86.ads
+ ifeq ($(strip $(MULTISUBDIR)),/32)
+ LIBGNAT_TARGET_PAIRS = \
+ $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_32)
+ else
+ LIBGNAT_TARGET_PAIRS = \
+ $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_64)
+ endif
endif
TOOLS_TARGET_PAIRS=mlib-tgt-specific.adb<mlib-tgt-specific-solaris.adb
diff --git a/gcc/config.gcc b/gcc/config.gcc
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -1369,7 +1369,7 @@ i[34567]86-*-rtems*)
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h i386/i386elf.h i386/rtemself.h rtems.h newlib-stdint.h"
tmake_file="${tmake_file} i386/t-rtems t-rtems"
;;
-i[34567]86-*-solaris2*)
+i[34567]86-*-solaris2* | x86_64-*-solaris2.1[0-9]*)
tm_file="${tm_file} i386/unix.h i386/att.h ${sol2_tm_file}"
# Set default arch_32 to pentium4, tune_32 to generic like the other
# i386 targets, although config.guess defaults to i386-pc-solaris2*.
@@ -3529,7 +3529,7 @@ case ${target} in
i[34567]86-*-gnu*)
tmake_file="${tmake_file} i386/t-fprules-softfp soft-fp/t-softfp i386/t-linux"
;;
- i[34567]86-*-solaris2*)
+ i[34567]86-*-solaris2* | x86_64-*-solaris2.1[0-9]*)
tmake_file="${tmake_file} i386/t-fprules-softfp soft-fp/t-softfp"
;;
i[34567]86-*-cygwin* | i[34567]86-*-mingw* | x86_64-*-mingw*)
diff --git a/gcc/config.host b/gcc/config.host
--- a/gcc/config.host
+++ b/gcc/config.host
@@ -197,7 +197,7 @@ case ${host} in
i370-*-opened* | i370-*-mvs* ) # IBM 360/370/390 Architecture
host_xm_defines='FATAL_EXIT_CODE=12'
;;
- i[34567]86-*-solaris2*)
+ i[34567]86-*-solaris2* | x86_64-*-solaris2.1[0-9]*)
out_host_hook_obj=host-solaris.o
host_xmake_file="${host_xmake_file} x-solaris"
;;
diff --git a/gcc/config/host-solaris.c b/gcc/config/host-solaris.c
--- a/gcc/config/host-solaris.c
+++ b/gcc/config/host-solaris.c
@@ -73,7 +73,7 @@ mmap_fixed (void *addr, size_t len, int
#elif defined(__sparc__)
# define TRY_EMPTY_VM_SPACE 0x80000000
#elif defined(__x86_64__)
-# define TRY_EMPTY_VM_SPACE 0x8000000000000000
+# define TRY_EMPTY_VM_SPACE 0x80000000000
#elif defined(__i386__)
# define TRY_EMPTY_VM_SPACE 0xB0000000
#else
diff --git a/gcc/config/i386/sol2-bi.h b/gcc/config/i386/sol2-bi.h
--- a/gcc/config/i386/sol2-bi.h
+++ b/gcc/config/i386/sol2-bi.h
@@ -31,12 +31,16 @@ along with GCC; see the file COPYING3.
/* GNU as understands --32 and --64, but the native Solaris
assembler requires -xarch=generic or -xarch=generic64 instead. */
+#ifdef USE_GAS
+#define ASM_CPU32_DEFAULT_SPEC "--32"
+#define ASM_CPU64_DEFAULT_SPEC "--64"
+#else
+#define ASM_CPU32_DEFAULT_SPEC "-xarch=generic"
+#define ASM_CPU64_DEFAULT_SPEC "-xarch=generic64"
+#endif
+
#undef ASM_CPU_SPEC
-#ifdef USE_GAS
-#define ASM_CPU_SPEC "%{m32:--32} %{m64:--64}"
-#else
-#define ASM_CPU_SPEC "%{m32:-xarch=generic} %{m64:-xarch=generic64}"
-#endif
+#define ASM_CPU_SPEC "%(asm_cpu_default)"
/* Don't let i386/x86-64.h override i386/sol2.h version. Still cannot use
-K PIC with the Solaris 10+ assembler, it gives many warnings:
@@ -47,8 +51,7 @@ along with GCC; see the file COPYING3.
/* We do not need to search a special directory for startup files. */
#undef MD_STARTFILE_PREFIX
-/* No 64-bit default configurations. */
-#define DEFAULT_ARCH32_P 1
+#define DEFAULT_ARCH32_P !TARGET_64BIT_DEFAULT
#define ARCH64_SUBDIR "amd64"
diff --git a/gcc/config/i386/sol2.h b/gcc/config/i386/sol2.h
--- a/gcc/config/i386/sol2.h
+++ b/gcc/config/i386/sol2.h
@@ -59,6 +59,8 @@ along with GCC; see the file COPYING3.
#undef CPP_SPEC
#define CPP_SPEC "%{,assembler-with-cpp:-P} %(cpp_subtarget)"
+#define ASM_CPU_DEFAULT_SPEC ""
+
#define ASM_CPU_SPEC ""
/* Don't include ASM_PIC_SPEC. While the Solaris 8 and 9 assembler accepts
@@ -70,7 +72,8 @@ along with GCC; see the file COPYING3.
#define SUBTARGET_CPU_EXTRA_SPECS \
{ "cpp_subtarget", CPP_SUBTARGET_SPEC }, \
- { "asm_cpu", ASM_CPU_SPEC }
+ { "asm_cpu", ASM_CPU_SPEC }, \
+ { "asm_cpu_default", ASM_CPU_DEFAULT_SPEC }, \
#undef SUBTARGET_EXTRA_SPECS
#define SUBTARGET_EXTRA_SPECS \
diff --git a/gcc/config/sol2-bi.h b/gcc/config/sol2-bi.h
--- a/gcc/config/sol2-bi.h
+++ b/gcc/config/sol2-bi.h
@@ -56,6 +56,16 @@
#define DEF_ARCH64_SPEC(__str) "%{!m32:" __str "}"
#endif
+#undef ASM_CPU_DEFAULT_SPEC
+#define ASM_CPU_DEFAULT_SPEC \
+(DEFAULT_ARCH32_P ? "\
+%{m64:" ASM_CPU64_DEFAULT_SPEC "} \
+%{!m64:" ASM_CPU32_DEFAULT_SPEC "} \
+" : "\
+%{m32:" ASM_CPU32_DEFAULT_SPEC "} \
+%{!m32:" ASM_CPU64_DEFAULT_SPEC "} \
+")
+
/* This should be the same as LINK_ARCH32_SPEC_BASE, except with
ARCH64_SUBDIR appended to the paths and /usr/ccs/lib is no longer
necessary. */
@@ -78,8 +88,14 @@
#endif
#ifdef USE_GLD
+#if DEFAULT_ARCH32_P
+#define ARCH_DEFAULT_EMULATION ARCH32_EMULATION
+#else
+#define ARCH_DEFAULT_EMULATION ARCH64_EMULATION
+#endif
#define TARGET_LD_EMULATION "%{m32:-m " ARCH32_EMULATION "}" \
- "%{m64:-m " ARCH64_EMULATION "} "
+ "%{m64:-m " ARCH64_EMULATION "}" \
+ "%{!m32:%{!m64:-m " ARCH_DEFAULT_EMULATION "}} "
#else
#define TARGET_LD_EMULATION ""
#endif
diff --git a/gcc/config/sparc/sol2.h b/gcc/config/sparc/sol2.h
--- a/gcc/config/sparc/sol2.h
+++ b/gcc/config/sparc/sol2.h
@@ -205,16 +205,6 @@ along with GCC; see the file COPYING3.
%{!mcpu*:%(asm_cpu_default)} \
"
-#undef ASM_CPU_DEFAULT_SPEC
-#define ASM_CPU_DEFAULT_SPEC \
-(DEFAULT_ARCH32_P ? "\
-%{m64:" ASM_CPU64_DEFAULT_SPEC "} \
-%{!m64:" ASM_CPU32_DEFAULT_SPEC "} \
-" : "\
-%{m32:" ASM_CPU32_DEFAULT_SPEC "} \
-%{!m32:" ASM_CPU64_DEFAULT_SPEC "} \
-")
-
#undef ASM_ARCH32_SPEC
#define ASM_ARCH32_SPEC ""
diff --git a/gcc/configure.ac b/gcc/configure.ac
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -2168,7 +2168,7 @@ foobar:],[
# Solaris 9/x86 as incorrectly emits an alias for a hidden symbol with
# STV_HIDDEN, so disable .hidden support if so.
case "${target}" in
- i?86-*-solaris2*)
+ i?86-*-solaris2* | x86_64-*-solaris2.1[[0-9]]*)
if test x$gcc_cv_as != x && test x$gcc_cv_objdump != x; then
cat > conftest.s <<EOF
.globl hidden
@@ -2423,7 +2423,7 @@ gcc_GAS_CHECK_FEATURE([cfi directives],
gcc_cv_as_cfi_directive=no
else
case "$target" in
- i?86-*-solaris2.1[[0-9]]*)
+ i?86-*-solaris2.1[[0-9]]* | x86_64-*-solaris2.1[[0-9]]*)
# On Solaris/x86, make sure that GCC and gas agree on using
# read-only .eh_frame sections for 64-bit.
if $gcc_cv_as --64 -o conftest.o conftest.s > /dev/null 2>&1 && \
@@ -2627,7 +2627,7 @@ else
foo:
'
;;
- i?86-*-solaris2*)
+ i?86-*-solaris2* | x86_64-*-solaris2.1[[0-9]]*)
conftest_s='
.group foo,.text%foo,#comdat
.section .text%foo, "ax", @progbits
@@ -2805,12 +2805,16 @@ foo: .long 25
tls_first_major=2
tls_first_minor=17
;;
- i[34567]86-*-*)
+ i[34567]86-*-* | x86_64-*-solaris2.1[0-9]*)
case "$target" in
i[34567]86-*-solaris2.*)
on_solaris=yes
tga_func=___tls_get_addr
;;
+ x86_64-*-solaris2.1[0-9]*)
+ on_solaris=yes
+ tga_func=__tls_get_addr
+ ;;
*)
on_solaris=no
;;
diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi
--- a/gcc/doc/install.texi
+++ b/gcc/doc/install.texi
@@ -2957,6 +2957,8 @@ information are.
@item
@uref{#alpha-dec-osf51,,alpha*-dec-osf5.1}
@item
+@uref{#amd64-x-solaris210,,amd64-*-solaris2.10}
+@item
@uref{#arm-x-elf,,arm-*-elf}
@item
@uref{#avr,,avr}
@@ -3057,6 +3059,8 @@ information are.
@item
@uref{#x86-64-x-x,,x86_64-*-*, amd64-*-*}
@item
+@uref{#x86-64-x-solaris210,,x86_64-*-solaris2.1[0-9]*}
+@item
@uref{#xtensa-x-elf,,xtensa*-*-elf}
@item
@uref{#xtensa-x-linux,,xtensa*-*-linux*}
@@ -3157,6 +3161,13 @@ provide a fix shortly.
@html
<hr />
@end html
+@heading @anchor{amd64-x-solaris210}amd64-*-solaris2.1[0-9]*
+
+This is a synonym for @samp{x86_64-*-solaris2.1[0-9]*}.
+
+@html
+<hr />
+@end html
@heading @anchor{arm-x-elf}arm-*-elf
ARM-family processors. Subtargets that use the ELF object format
require GNU binutils 2.13 or newer. Such subtargets include:
@@ -3537,10 +3548,10 @@ you have the patch installed, you can co
@end html
@heading @anchor{ix86-x-solaris210}i?86-*-solaris2.10
Use this for Solaris 10 or later on x86 and x86-64 systems. This
-configuration is supported by GCC 4.0 and later versions only. Unlike
-@samp{sparcv9-sun-solaris2*}, there is no corresponding 64-bit
-configuration like @samp{amd64-*-solaris2*} or @samp{x86_64-*-solaris2*}.
-@c FIXME: will there ever be?
+configuration is supported by GCC 4.0 and later versions only. Starting
+with GCC 4.7, there is also a 64-bit @samp{amd64-*-solaris2.1[0-9]*} or
+@samp{x86_64-*-solaris2.1[0-9]*} configuration that corresponds to
+@samp{sparcv9-sun-solaris2*}.
It is recommended that you configure GCC to use the GNU assembler, in
@file{/usr/sfw/bin/gas}. The versions included in Solaris 10, from GNU
@@ -4400,6 +4411,22 @@ both 64-bit x86-64 and 32-bit x86 code (
@html
<hr />
@end html
+@heading @anchor{x86-64-x-solaris2.10}x86_64-*-solaris2.1[0-9]*
+
+GCC also supports the x86-64 architecture implemented by the AMD64
+processor (@samp{amd64-*-*} is an alias for @samp{x86_64-*-*}) on
+Solaris 10 or later. Unlike other systems, without special options a
+bi-arch compiler is built which generates 32-bit code by default, but
+can generate 64-bit x86-64 code with the @option{-m64} switch. Since
+GCC 4.7, there is also configuration that defaults to 64-bit code, but
+can generate 32-bit code with @option{-m32}. To configure and build
+this way, you have to provide all support libraries like @file{libgmp}
+as 64-bit code, configure with @option{--target=x86_64-pc-solaris2.1x}
+and @samp{CC=gcc -m64}.
+
+@html
+<hr />
+@end html
@heading @anchor{xtensa-x-elf}xtensa*-*-elf
This target is intended for embedded Xtensa systems using the
diff --git a/gcc/testsuite/gcc.misc-tests/linkage.exp b/gcc/testsuite/gcc.misc-tests/linkage.exp
--- a/gcc/testsuite/gcc.misc-tests/linkage.exp
+++ b/gcc/testsuite/gcc.misc-tests/linkage.exp
@@ -46,7 +46,8 @@ if { [isnative] && ![is_remote host] } t
set native_cflags "-xarch=v9"
}
}
- if [istarget "i?86*-*-solaris2*"] {
+ if {[istarget "i?86*-*-solaris2*"]
+ || [istarget "x86_64-*-solaris2.1\[0-9\]*"]} {
set file_string [exec file "linkage-x.o"]
if [ string match "*64*" $file_string ] {
set native_cflags "-xarch=amd64"
diff --git a/gnattools/configure.ac b/gnattools/configure.ac
--- a/gnattools/configure.ac
+++ b/gnattools/configure.ac
@@ -81,7 +81,7 @@ case "${target}" in
sparc-sun-solaris*)
TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-solaris.adb"
;;
- *86-*-solaris2*)
+ *86-*-solaris2* | x86_64-*-solaris2.1[[0-9]]*)
TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-solaris.adb"
;;
*86-*-linux* \
diff --git a/libcpp/configure.ac b/libcpp/configure.ac
--- a/libcpp/configure.ac
+++ b/libcpp/configure.ac
@@ -145,7 +145,7 @@ case $target in
ia64-*-* | \
hppa*64*-*-* | \
i[34567]86-*-darwin* | \
- i[34567]86-*-solaris2.1[0-9]* | \
+ i[34567]86-*-solaris2.1[0-9]* | x86_64-*-solaris2.1[0-9]* | \
i[34567]86-w64-mingw* | \
mips*-*-* | \
mmix-*-* | \
diff --git a/libgcc/config.host b/libgcc/config.host
--- a/libgcc/config.host
+++ b/libgcc/config.host
@@ -188,7 +188,7 @@ case ${host} in
tmake_file="$tmake_file $cpu_type/t-sol2"
extra_parts="gmon.o crtbegin.o crtend.o"
case ${host} in
- i?86-*-solaris2.1[0-9]*)
+ i?86-*-solaris2.1[0-9]* | x86_64-*-solaris2.1[0-9]*)
# Solaris 10+/x86 provides crt1.o, crti.o, crtn.o, and gcrt1.o as
# part of the base system.
;;
@@ -378,7 +378,7 @@ i[34567]86-*-rtems*)
extra_parts="crtbegin.o crtend.o crti.o crtn.o"
tmake_file="${tmake_file} t-crtin i386/t-softfp i386/t-crtstuff t-rtems"
;;
-i[34567]86-*-solaris2*)
+i[34567]86-*-solaris2* | x86_64-*-solaris2.1[0-9]*)
tmake_file="$tmake_file i386/t-crtfm"
extra_parts="$extra_parts crtfastmath.o"
md_unwind_header=i386/sol2-unwind.h
@@ -692,7 +692,7 @@ i[34567]86-*-darwin* | x86_64-*-darwin*
i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu | \
i[34567]86-*-linux* | x86_64-*-linux* | \
i[34567]86-*-gnu* | \
- i[34567]86-*-solaris2* | \
+ i[34567]86-*-solaris2* | x86_64-*-solaris2.1[0-9]* | \
i[34567]86-*-cygwin* | i[34567]86-*-mingw* | x86_64-*-mingw* | \
i[34567]86-*-freebsd* | x86_64-*-freebsd*)
if test "${host_address}" = 32; then
diff --git a/libgcc/configure.ac b/libgcc/configure.ac
--- a/libgcc/configure.ac
+++ b/libgcc/configure.ac
@@ -207,7 +207,7 @@ esac
# Link with -nostartfiles -nodefaultlibs since neither are present while
# building libgcc.
case ${host} in
-i?86-*-solaris2*)
+i?86-*-solaris2* | x86_64-*-solaris2.1[[0-9]]*)
cat > conftest.s <<EOF
.section .eh_frame,"a",@unwind
.zero 4
diff --git a/libgo/config/libtool.m4 b/libgo/config/libtool.m4
--- a/libgo/config/libtool.m4
+++ b/libgo/config/libtool.m4
@@ -1296,7 +1296,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*
case $lt_cv_prog_gnu_ld in
yes*)
case $host in
- i?86-*-solaris*)
+ i?86-*-solaris* | x86_64-*-solaris2.1[[0-9]]*)
LD="${LD-ld} -m elf_x86_64"
;;
sparc*-*-solaris*)
diff --git a/libjava/configure.host b/libjava/configure.host
--- a/libjava/configure.host
+++ b/libjava/configure.host
@@ -141,6 +141,9 @@ case "${host}" in
libgcj_flags="${libgcj_flags} -ffloat-store" ;;
esac
libgcj_flags="${libgcj_flags} -fomit-frame-pointer"
+ # On Solaris we have defined 'sun' which later conflicts with
+ # namespace usage. So to work this away we use the below undefine.
+ libgcj_flags="${libgcj_flags} -Usun"
libgcj_cxxflags=
libgcj_cflags=
DIVIDESPEC=-fno-use-divide-subroutine
@@ -285,6 +288,10 @@ EOF
sysdeps_dir=i386
DIVIDESPEC=-f%{m32:no-}%{!m32:%{!m64:no-}}%{m64:}use-divide-subroutine
;;
+ x86_64-*-solaris2.1[0-9]* )
+ sysdeps_dir=i386
+ DIVIDESPEC=-f%{m32:no-}use-divide-subroutine
+ ;;
mips-sgi-irix6* )
can_unwind_signal=yes
sysdeps_dir=mips
@@ -322,7 +329,7 @@ EOF
DIVIDESPEC=-fuse-divide-subroutine
CHECKREFSPEC=-fcheck-references
;;
- i?86-*-solaris2*)
+ i?86-*-solaris2* | x86_64-*-solaris2.1[0-9]*)
can_unwind_signal=yes
;;
*-*-freebsd*)
--
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Provide 64-bit default Solaris/x86 configuration (PR target/39150)
2011-07-06 11:51 Provide 64-bit default Solaris/x86 configuration (PR target/39150) Rainer Orth
@ 2011-07-06 15:34 ` Eric Botcazou
2011-07-06 15:57 ` Rainer Orth
2011-07-07 10:04 ` Rainer Orth
1 sibling, 1 reply; 9+ messages in thread
From: Eric Botcazou @ 2011-07-06 15:34 UTC (permalink / raw)
To: Rainer Orth
Cc: gcc-patches, Ian Lance Taylor, Ralf Wildenhues, Arnaud Charlet,
Joseph S. Myers, Gerald Pfeifer java-patches@gcc.gnu.org,
libstd++
> * In the sparcv9-sun-solaris2.11 builds, the 32-bit libgo tests fail to
> link since they have unresolved references to
> __sync_bool_compare_and_swap_8 and __sync_add_and_fetch_8. I could
> trace this to -mv8plus being missing in that configuration. I'm
> uncertain where best to handle this. Eric?
Probably add MASK_V8PLUS to the 64-bit TARGET_DEFAULT in sol2.h, it will be
disabled in 64-bit mode by sparc_override_options.
--
Eric Botcazou
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Provide 64-bit default Solaris/x86 configuration (PR target/39150)
2011-07-06 15:34 ` Eric Botcazou
@ 2011-07-06 15:57 ` Rainer Orth
2011-07-06 16:23 ` Eric Botcazou
0 siblings, 1 reply; 9+ messages in thread
From: Rainer Orth @ 2011-07-06 15:57 UTC (permalink / raw)
To: Eric Botcazou
Cc: gcc-patches, Ian Lance Taylor, Ralf Wildenhues, Arnaud Charlet,
Joseph S. Myers, Gerald Pfeifer java-patches@gcc.gnu.org,
libstdc++
Eric Botcazou <ebotcazou@adacore.com> writes:
>> * In the sparcv9-sun-solaris2.11 builds, the 32-bit libgo tests fail to
>> link since they have unresolved references to
>> __sync_bool_compare_and_swap_8 and __sync_add_and_fetch_8. I could
>> trace this to -mv8plus being missing in that configuration. I'm
>> uncertain where best to handle this. Eric?
>
> Probably add MASK_V8PLUS to the 64-bit TARGET_DEFAULT in sol2.h, it will be
> disabled in 64-bit mode by sparc_override_options.
Thanks, I'll give it a try. I just seemd weird to have MASK_V8PLUS and
MASK_V9 at the same time.
Rainer
--
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Provide 64-bit default Solaris/x86 configuration (PR target/39150)
2011-07-06 15:57 ` Rainer Orth
@ 2011-07-06 16:23 ` Eric Botcazou
0 siblings, 0 replies; 9+ messages in thread
From: Eric Botcazou @ 2011-07-06 16:23 UTC (permalink / raw)
To: Rainer Orth
Cc: gcc-patches, Ian Lance Taylor, Ralf Wildenhues, Arnaud Charlet,
Joseph S. Myers, gerald, libstdc++
> Thanks, I'll give it a try. I just seemd weird to have MASK_V8PLUS and
> MASK_V9 at the same time.
Yes, that's why the existing comment should also be enhanced. I'll fix it.
--
Eric Botcazou
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Provide 64-bit default Solaris/x86 configuration (PR target/39150)
2011-07-06 11:51 Provide 64-bit default Solaris/x86 configuration (PR target/39150) Rainer Orth
2011-07-06 15:34 ` Eric Botcazou
@ 2011-07-07 10:04 ` Rainer Orth
2011-07-07 19:14 ` Ian Lance Taylor
1 sibling, 1 reply; 9+ messages in thread
From: Rainer Orth @ 2011-07-07 10:04 UTC (permalink / raw)
To: gcc-patches
Cc: Eric Botcazou, Ian Lance Taylor, Ralf Wildenhues, Arnaud Charlet,
Joseph S. Myers, Gerald Pfeifer
Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> writes:
> There has long been some clamoring for a amd64-*-solaris2 configuration
> similar to sparcv9-sun-solaris2. I've resisted this for quite some
> time, primarily because it doubles the maintenance effort of testing
> both the 32-bit default and 64-bit default configurations.
[...]
> I think practically the whole patch falls under the Solaris
> maintainership, with the possible exception of the change to the copy of
> libtool.m4 in libgo/config. This is not for the technical content, but
> for the special commit rules to that directory. Ian?
>
> Anyway, this part of the patch will have to go to upstream libtool.
> Ralf, could you take care of that?
>
> Bootstrapped without regression on i386-pc-solaris2.10 (both 32-bit
> default and 64-bit default configurations), i386-pc-solaris2.11 and
> sparc-sun-solaris2.11 in progress.
[...]
> Once all the bootstraps have finished, I'll commit this patch (at least
> the non-libgo parts) unless anything unexpected comes up.
All bootstraps have completed without regressions, so I've installed the
patch as is, after verifying that the libgo parts aren't present in the
upstream Go repo.
I've also synced the toplevel configure.ac/configure changes to src.
One other issue: it was suggested that the 64-bit compiler might
actually be faster than a 32-bit one. At least bootstrap times speak
another language: on a Sun Fire X4450 running Solaris 10 with 4 x 2.93
GHz Quad-Core Xeon Xeon X7350, I find for make -j32 + make -j32 -k check
for both multilibs:
64-bit 32-bit
as/ld
real 1:59:28.66 1:52:15.55
user 7:14:33.93 6:43:25.84
sys 5:26:30.66 4:41:02.78
gas/ld
2:02:47.64 1:54:24.51
7:10:41.93 6:39:39.39
5:37:15.86 4:51:41.02
gas/gld
1:59:57.13 1:45:13.18
7:57:37.13 7:11:41.83
5:11:58.14 4:04:26.97
Same picture on a Sun Fire X4600 M2 running Solaris 11 with 8 x 2.6 GHz
Dual-Core Opteron 8218.
Rainer
--
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Provide 64-bit default Solaris/x86 configuration (PR target/39150)
2011-07-07 10:04 ` Rainer Orth
@ 2011-07-07 19:14 ` Ian Lance Taylor
2011-07-08 12:39 ` Rainer Orth
0 siblings, 1 reply; 9+ messages in thread
From: Ian Lance Taylor @ 2011-07-07 19:14 UTC (permalink / raw)
To: Rainer Orth; +Cc: gcc-patches, gofrontend-dev
[-- Attachment #1: Type: text/plain, Size: 292 bytes --]
Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> writes:
> All bootstraps have completed without regressions, so I've installed the
> patch as is, after verifying that the libgo parts aren't present in the
> upstream Go repo.
I committed the libgo patch to the upstream repository.
Thanks.
Ian
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: patch --]
[-- Type: text/x-diff, Size: 422 bytes --]
diff -r 70b5a35b2d19 libgo/config/libtool.m4
--- a/libgo/config/libtool.m4 Wed Jul 06 12:44:38 2011 -0700
+++ b/libgo/config/libtool.m4 Thu Jul 07 09:47:14 2011 -0700
@@ -1296,7 +1296,7 @@
case $lt_cv_prog_gnu_ld in
yes*)
case $host in
- i?86-*-solaris*)
+ i?86-*-solaris* | x86_64-*-solaris2.1[[0-9]]*)
LD="${LD-ld} -m elf_x86_64"
;;
sparc*-*-solaris*)
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Provide 64-bit default Solaris/x86 configuration (PR target/39150)
2011-07-07 19:14 ` Ian Lance Taylor
@ 2011-07-08 12:39 ` Rainer Orth
2011-07-08 14:35 ` Ian Lance Taylor
0 siblings, 1 reply; 9+ messages in thread
From: Rainer Orth @ 2011-07-08 12:39 UTC (permalink / raw)
To: Ian Lance Taylor; +Cc: gcc-patches, gofrontend-dev
Ian Lance Taylor <iant@google.com> writes:
> Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> writes:
>
>> All bootstraps have completed without regressions, so I've installed the
>> patch as is, after verifying that the libgo parts aren't present in the
>> upstream Go repo.
>
> I committed the libgo patch to the upstream repository.
I completely missed that: at least in https://go.googlecode.com/hg/
libtool.m4 isn't present.
Thanks.
Rainer
--
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Provide 64-bit default Solaris/x86 configuration (PR target/39150)
2011-07-08 12:39 ` Rainer Orth
@ 2011-07-08 14:35 ` Ian Lance Taylor
2011-07-08 15:49 ` Rainer Orth
0 siblings, 1 reply; 9+ messages in thread
From: Ian Lance Taylor @ 2011-07-08 14:35 UTC (permalink / raw)
To: Rainer Orth; +Cc: gcc-patches, gofrontend-dev
Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> writes:
> Ian Lance Taylor <iant@google.com> writes:
>
>> Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> writes:
>>
>>> All bootstraps have completed without regressions, so I've installed the
>>> patch as is, after verifying that the libgo parts aren't present in the
>>> upstream Go repo.
>>
>> I committed the libgo patch to the upstream repository.
>
> I completely missed that: at least in https://go.googlecode.com/hg/
> libtool.m4 isn't present.
The immediate upstream project for libgo is
https://gofrontend.googlecode.com/hg/ . Most of the files in the libgo
directory in that project come from https://go.googlecode.com/hg/ , but
not the ones at top level, or in the config or syscalls directory.
Ian
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Provide 64-bit default Solaris/x86 configuration (PR target/39150)
2011-07-08 14:35 ` Ian Lance Taylor
@ 2011-07-08 15:49 ` Rainer Orth
0 siblings, 0 replies; 9+ messages in thread
From: Rainer Orth @ 2011-07-08 15:49 UTC (permalink / raw)
To: Ian Lance Taylor; +Cc: gcc-patches, gofrontend-dev
Ian,
>>> I committed the libgo patch to the upstream repository.
>>
>> I completely missed that: at least in https://go.googlecode.com/hg/
>> libtool.m4 isn't present.
>
> The immediate upstream project for libgo is
> https://gofrontend.googlecode.com/hg/ . Most of the files in the libgo
> directory in that project come from https://go.googlecode.com/hg/ , but
> not the ones at top level, or in the config or syscalls directory.
didn't know about that. Love you're using hg there :-)
Thanks.
Rainer
--
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2011-07-08 15:38 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-07-06 11:51 Provide 64-bit default Solaris/x86 configuration (PR target/39150) Rainer Orth
2011-07-06 15:34 ` Eric Botcazou
2011-07-06 15:57 ` Rainer Orth
2011-07-06 16:23 ` Eric Botcazou
2011-07-07 10:04 ` Rainer Orth
2011-07-07 19:14 ` Ian Lance Taylor
2011-07-08 12:39 ` Rainer Orth
2011-07-08 14:35 ` Ian Lance Taylor
2011-07-08 15:49 ` Rainer Orth
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).