aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog30
-rw-r--r--gcc/ada/ChangeLog5
-rw-r--r--gcc/ada/gcc-interface/Makefile.in32
-rw-r--r--gcc/config.gcc4
-rw-r--r--gcc/config.host2
-rw-r--r--gcc/config/host-solaris.c2
-rw-r--r--gcc/config/i386/sol2-bi.h13
-rw-r--r--gcc/config/i386/sol2.h5
-rw-r--r--gcc/config/sol2-bi.h18
-rw-r--r--gcc/config/sparc/sol2.h10
-rwxr-xr-xgcc/configure12
-rw-r--r--gcc/configure.ac12
-rw-r--r--gcc/doc/install.texi35
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.misc-tests/linkage.exp3
15 files changed, 146 insertions, 42 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ad790d3..b44a29f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,35 @@
2011-07-07 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+ 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.
+
+2011-07-07 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
* config/sol2.h (ASM_SPEC): Split into ...
(ASM_SPEC_BASE, ASM_PIC_SPEC): ... this.
* config/i386/sol2.h (ASM_SPEC): Define using ASM_SPEC_BASE.
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 66bc3e0..686aad1 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,8 @@
+2011-07-07 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ PR target/39150
+ * gcc-interface/Makefile.in: Handle x86_64-solaris2.
+
2011-07-06 Richard Guenther <rguenther@suse.de>
* gcc-interface/misc.c (gnat_init):
diff --git a/gcc/ada/gcc-interface/Makefile.in b/gcc/ada/gcc-interface/Makefile.in
index 7feb6d2..0b5c879 100644
--- a/gcc/ada/gcc-interface/Makefile.in
+++ b/gcc/ada/gcc-interface/Makefile.in
@@ -1011,8 +1011,8 @@ ifeq ($(strip $(filter-out sparc% sun solaris%,$(targ))),)
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%,$(arch) $(osys))),)
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
index c77f40b..d73cb45 100644
--- 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
index a2bde44..d55447c 100644
--- 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
index 12eab3c..15f1d78 100644
--- a/gcc/config/host-solaris.c
+++ b/gcc/config/host-solaris.c
@@ -73,7 +73,7 @@ mmap_fixed (void *addr, size_t len, int prot, int flags, int fd, off_t off)
#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
index a988fa0..04feeb9 100644
--- a/gcc/config/i386/sol2-bi.h
+++ b/gcc/config/i386/sol2-bi.h
@@ -31,13 +31,17 @@ along with GCC; see the file COPYING3. If not see
/* GNU as understands --32 and --64, but the native Solaris
assembler requires -xarch=generic or -xarch=generic64 instead. */
-#undef ASM_CPU_SPEC
#ifdef USE_GAS
-#define ASM_CPU_SPEC "%{m32:--32} %{m64:--64}"
+#define ASM_CPU32_DEFAULT_SPEC "--32"
+#define ASM_CPU64_DEFAULT_SPEC "--64"
#else
-#define ASM_CPU_SPEC "%{m32:-xarch=generic} %{m64:-xarch=generic64}"
+#define ASM_CPU32_DEFAULT_SPEC "-xarch=generic"
+#define ASM_CPU64_DEFAULT_SPEC "-xarch=generic64"
#endif
+#undef ASM_CPU_SPEC
+#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:
Absolute relocation is used for symbol "<symbol>" */
@@ -47,8 +51,7 @@ along with GCC; see the file COPYING3. If not see
/* 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
index 593e256..5b4e3d7 100644
--- a/gcc/config/i386/sol2.h
+++ b/gcc/config/i386/sol2.h
@@ -59,6 +59,8 @@ along with GCC; see the file COPYING3. If not see
#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. If not see
#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
index 371cdd6..5e41efd 100644
--- 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
index 392b171..6661c21 100644
--- a/gcc/config/sparc/sol2.h
+++ b/gcc/config/sparc/sol2.h
@@ -205,16 +205,6 @@ along with GCC; see the file COPYING3. If not see
%{!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 b/gcc/configure
index 68830c5..3c717c0 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -21784,7 +21784,7 @@ foobar:' > conftest.s
# 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
@@ -22099,7 +22099,7 @@ else
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 && \
@@ -22530,7 +22530,7 @@ $as_echo "$gcc_cv_as_comdat_group_percent" >&6; }
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
@@ -22760,12 +22760,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/configure.ac b/gcc/configure.ac
index 02c6089..f899991 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -2173,7 +2173,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
@@ -2428,7 +2428,7 @@ gcc_GAS_CHECK_FEATURE([cfi directives], gcc_cv_as_cfi_directive,
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 && \
@@ -2632,7 +2632,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
@@ -2810,12 +2810,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
index 78a6ee8..f93413f 100644
--- 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 configure GCC with an appropriate
@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 (via the @option{-m32} switch).
@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/ChangeLog b/gcc/testsuite/ChangeLog
index f176a44..a1b8bb8 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2011-07-07 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ PR target/39150
+ * gcc.misc-tests/linkage.exp: Handle x86_64-*-solaris2.1[0-9]*.
+
2011-07-06 Michael Meissner <meissner@linux.vnet.ibm.com>
* gcc.target/powerpc/no-r11-1.c: New test for -mr11, -mno-r11.
diff --git a/gcc/testsuite/gcc.misc-tests/linkage.exp b/gcc/testsuite/gcc.misc-tests/linkage.exp
index 954dc29..f6702e4 100644
--- 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] } then {
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"