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