]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Simplify Solaris 2 configuration
authorRainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
Wed, 30 Apr 2014 14:10:44 +0000 (14:10 +0000)
committerRainer Orth <ro@gcc.gnu.org>
Wed, 30 Apr 2014 14:10:44 +0000 (14:10 +0000)
* config/sol2-10.h (TARGET_LIBC_HAS_FUNCTION): Move ...
* config/sol2.h: ... here.
* config/sol2-10.h: Remove.

* config/sol2-bi.h (WCHAR_TYPE, WCHAR_TYPE_SIZE, WINT_TYPE)
(WINT_TYPE_SIZE, MULTILIB_DEFAULTS, DEF_ARCH32_SPEC)
(DEF_ARCH64_SPEC, ASM_CPU_DEFAULT_SPEC, LINK_ARCH64_SPEC_BASE)
(LINK_ARCH64_SPEC, ARCH_DEFAULT_EMULATION, TARGET_LD_EMULATION)
(LINK_ARCH_SPEC, SUBTARGET_EXTRA_SPECS): Move ...
* config/sol2.h: ... here.
(SECTION_NAME_FORMAT): Don't redefine.
(STARTFILE_ARCH32_SPEC): Rename to ...
(STARTFILE_ARCH_SPEC): ... this.
(ASM_OUTPUT_ALIGNED_COMMON): Move ...
* config/sparc/sol2.h: ... here.
(SECTION_NAME_FORMAT): Don't undef.
* config/i386/sol2.h (ASM_CPU_DEFAULT_SPEC)
(SUBTARGET_EXTRA_SPECS): Remove.
* config/sparc/sol2.h (ASM_CPU_DEFAULT_SPEC): Remove.

* config/i386/sol2-bi.h (TARGET_SUBTARGET_DEFAULT)
(MD_STARTFILE_PREFIX): Remove.
(SUBTARGET_OPTIMIZATION_OPTIONS, ASM_CPU32_DEFAULT_SPEC)
(ASM_CPU64_DEFAULT_SPEC, ASM_CPU_SPEC, ASM_SPEC, DEFAULT_ARCH32_P)
(ARCH64_SUBDIR, ARCH32_EMULATION, ARCH64_EMULATION)
(ASM_COMMENT_START, JUMP_TABLES_IN_TEXT_SECTION)
(ASM_OUTPUT_DWARF_PCREL, ASM_OUTPUT_ALIGNED_COMMON)
(USE_IX86_FRAME_POINTER, USE_X86_64_FRAME_POINTER): Move ...
* config/i386/sol2.h: ... here.
(TARGET_SUBTARGET_DEFAULT, SIZE_TYPE, PTRDIFF_TYPE): Remove.
* config/i386/sol2-bi.h: Remove.
* config/sol2.h (MD_STARTFILE_PREFIX): Remove.
(LINK_ARCH32_SPEC_BASE): Remove /usr/ccs/lib/libp, /usr/ccs/lib.

* config/i386/t-sol2-64: Rename to ...
* config/i386/t-sol2: ... this.
* config/sparc/t-sol2-64: Rename to ...
* config/sparc/t-sol2: ... this.

* config.gcc (*-*-solaris2*): Split sol2_tm_file into
sol2_tm_file_head, sol2_tm_file_tail.
Include ${cpu_type}/sol2.h before sol2.h.
Remove sol2-10.h.
(i[34567]86-*-solaris2* | x86_64-*-solaris2.1[0-9]*): Include
i386/x86-64.h between sol2_tm_file_head and sol2_tm_file_tail.
Remove i386/sol2-bi.h, sol2-bi.h from tm_file.
Reflect i386/t-sol2-64 renaming.
(sparc*-*-solaris2*): Remove sol2-bi.h from tm_file.
Reflect sparc/t-sol2-64 renaming.

From-SVN: r209931

gcc/ChangeLog
gcc/config.gcc
gcc/config/i386/sol2-bi.h [deleted file]
gcc/config/i386/sol2.h
gcc/config/i386/t-sol2 [moved from gcc/config/i386/t-sol2-64 with 100% similarity]
gcc/config/sol2-10.h [deleted file]
gcc/config/sol2-bi.h [deleted file]
gcc/config/sol2.h
gcc/config/sparc/sol2.h
gcc/config/sparc/t-sol2 [moved from gcc/config/sparc/t-sol2-64 with 100% similarity]

index 5b771ea4fc8c0ad96fa81d7cb12f398dc7082795..704dfc16278cd221e1d662532ff20c0a7c1582ca 100644 (file)
@@ -1,3 +1,55 @@
+2014-04-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+       * config/sol2-10.h (TARGET_LIBC_HAS_FUNCTION): Move ...
+       * config/sol2.h: ... here.
+       * config/sol2-10.h: Remove.
+
+       * config/sol2-bi.h (WCHAR_TYPE, WCHAR_TYPE_SIZE, WINT_TYPE)
+       (WINT_TYPE_SIZE, MULTILIB_DEFAULTS, DEF_ARCH32_SPEC)
+       (DEF_ARCH64_SPEC, ASM_CPU_DEFAULT_SPEC, LINK_ARCH64_SPEC_BASE)
+       (LINK_ARCH64_SPEC, ARCH_DEFAULT_EMULATION, TARGET_LD_EMULATION)
+       (LINK_ARCH_SPEC, SUBTARGET_EXTRA_SPECS): Move ...
+       * config/sol2.h: ... here.
+       (SECTION_NAME_FORMAT): Don't redefine.
+       (STARTFILE_ARCH32_SPEC): Rename to ...
+       (STARTFILE_ARCH_SPEC): ... this.
+       (ASM_OUTPUT_ALIGNED_COMMON): Move ...
+       * config/sparc/sol2.h: ... here.
+       (SECTION_NAME_FORMAT): Don't undef.
+       * config/i386/sol2.h (ASM_CPU_DEFAULT_SPEC)
+       (SUBTARGET_EXTRA_SPECS): Remove.
+       * config/sparc/sol2.h (ASM_CPU_DEFAULT_SPEC): Remove.
+
+       * config/i386/sol2-bi.h (TARGET_SUBTARGET_DEFAULT)
+       (MD_STARTFILE_PREFIX): Remove.
+       (SUBTARGET_OPTIMIZATION_OPTIONS, ASM_CPU32_DEFAULT_SPEC)
+       (ASM_CPU64_DEFAULT_SPEC, ASM_CPU_SPEC, ASM_SPEC, DEFAULT_ARCH32_P)
+       (ARCH64_SUBDIR, ARCH32_EMULATION, ARCH64_EMULATION)
+       (ASM_COMMENT_START, JUMP_TABLES_IN_TEXT_SECTION)
+       (ASM_OUTPUT_DWARF_PCREL, ASM_OUTPUT_ALIGNED_COMMON)
+       (USE_IX86_FRAME_POINTER, USE_X86_64_FRAME_POINTER): Move ...
+       * config/i386/sol2.h: ... here.
+       (TARGET_SUBTARGET_DEFAULT, SIZE_TYPE, PTRDIFF_TYPE): Remove.
+       * config/i386/sol2-bi.h: Remove.
+       * config/sol2.h (MD_STARTFILE_PREFIX): Remove.
+       (LINK_ARCH32_SPEC_BASE): Remove /usr/ccs/lib/libp, /usr/ccs/lib.
+
+       * config/i386/t-sol2-64: Rename to ...
+       * config/i386/t-sol2: ... this.
+       * config/sparc/t-sol2-64: Rename to ...
+       * config/sparc/t-sol2: ... this.
+
+       * config.gcc (*-*-solaris2*): Split sol2_tm_file into
+       sol2_tm_file_head, sol2_tm_file_tail.
+       Include ${cpu_type}/sol2.h before sol2.h.
+       Remove sol2-10.h.
+       (i[34567]86-*-solaris2* | x86_64-*-solaris2.1[0-9]*): Include
+       i386/x86-64.h between sol2_tm_file_head and sol2_tm_file_tail.
+       Remove i386/sol2-bi.h, sol2-bi.h from tm_file.
+       Reflect i386/t-sol2-64 renaming.
+       (sparc*-*-solaris2*): Remove sol2-bi.h from tm_file.
+       Reflect sparc/t-sol2-64 renaming.
+
 2014-04-30  Richard Biener  <rguenther@suse.de>
 
        * passes.c (execute_function_todo): Move TODO_verify_stmts
index 92f8a94b3e67e1eeda3a246f83c6fb6df213de8c..81205ff0c8f6fd17178183c72fad322d1b0ff1b4 100644 (file)
@@ -808,8 +808,9 @@ case ${target} in
 *-*-solaris2*)
   # i?86-*-solaris2* needs to insert headers between cpu default and
   # Solaris 2 specific ones.
-  sol2_tm_file="dbxelf.h elfos.h ${cpu_type}/sysv4.h sol2.h ${cpu_type}/sol2.h"
-  sol2_tm_file="${sol2_tm_file} sol2-10.h"
+  sol2_tm_file_head="dbxelf.h elfos.h ${cpu_type}/sysv4.h"
+  sol2_tm_file_tail="${cpu_type}/sol2.h sol2.h"
+  sol2_tm_file="${sol2_tm_file_head} ${sol2_tm_file_tail}"
   use_gcc_stdint=wrap
   if test x$gnu_ld = xyes; then
     tm_file="usegld.h ${tm_file}"
@@ -1515,14 +1516,13 @@ i[34567]86-*-rtems*)
        tmake_file="${tmake_file} i386/t-rtems"
        ;;
 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*.
        with_arch_32=${with_arch_32:-pentium4}
        with_tune_32=${with_tune_32:-generic}
-       tm_file="${tm_file} i386/x86-64.h i386/sol2-bi.h sol2-bi.h"
+       tm_file="${tm_file} i386/unix.h i386/att.h ${sol2_tm_file_head} i386/x86-64.h ${sol2_tm_file_tail}"
        tm_defines="${tm_defines} TARGET_BI_ARCH=1"
-       tmake_file="$tmake_file i386/t-sol2-64"
+       tmake_file="$tmake_file i386/t-sol2"
        need_64bit_isa=yes
        if test x$with_cpu = x; then
                if test x$with_cpu_64 = x; then
@@ -2661,7 +2661,7 @@ sparc-*-netbsdelf*)
        tmake_file="${tmake_file} sparc/t-sparc"
        ;;
 sparc*-*-solaris2*)
-       tm_file="sparc/biarch64.h ${tm_file} ${sol2_tm_file} sol2-bi.h sparc/tso.h"
+       tm_file="sparc/biarch64.h ${tm_file} ${sol2_tm_file} sparc/tso.h"
        case ${target} in
            sparc64-*-* | sparcv9-*-*)
                tm_file="sparc/default-64.h ${tm_file}"
@@ -2670,7 +2670,7 @@ sparc*-*-solaris2*)
                test x$with_cpu != x || with_cpu=v9
                ;;
        esac
-       tmake_file="${tmake_file} sparc/t-sparc sparc/t-sol2-64"
+       tmake_file="${tmake_file} sparc/t-sparc sparc/t-sol2"
        ;;
 sparc-wrs-vxworks)
        tm_file="${tm_file} elfos.h sparc/sysv4.h vx-common.h vxworks.h sparc/vxworks.h"
diff --git a/gcc/config/i386/sol2-bi.h b/gcc/config/i386/sol2-bi.h
deleted file mode 100644 (file)
index 66d1780..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-/* Definitions of target machine for GCC, for bi-arch Solaris 2/x86.
-   Copyright (C) 2004-2014 Free Software Foundation, Inc.
-   Contributed by CodeSourcery, LLC.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
-
-GCC is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING3.  If not see
-<http://www.gnu.org/licenses/>.  */
-
-/* Override i386/sol2.h version: return 8-byte vectors in MMX registers if
-   possible, matching Sun Studio 12 Update 1+ compilers and other x86
-   targets.  */
-#undef TARGET_SUBTARGET_DEFAULT
-#define TARGET_SUBTARGET_DEFAULT \
-       (MASK_80387 | MASK_IEEE_FP | MASK_FLOAT_RETURNS)
-
-#define SUBTARGET_OPTIMIZATION_OPTIONS                         \
-  { OPT_LEVELS_1_PLUS, OPT_momit_leaf_frame_pointer, NULL, 1 }
-
-/* 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
-#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>"  */
-#undef ASM_SPEC
-#define ASM_SPEC ASM_SPEC_BASE
-
-/* We do not need to search a special directory for startup files.  */
-#undef MD_STARTFILE_PREFIX
-
-#define DEFAULT_ARCH32_P !TARGET_64BIT_DEFAULT
-
-#define ARCH64_SUBDIR "amd64"
-
-#ifdef USE_GLD
-/* Since binutils 2.21, GNU ld supports new *_sol2 emulations to strictly
-   follow the Solaris 2 ABI.  Prefer them if present.  */
-#ifdef HAVE_LD_SOL2_EMULATION
-#define ARCH32_EMULATION "elf_i386_sol2"
-#define ARCH64_EMULATION "elf_x86_64_sol2"
-#else
-#define ARCH32_EMULATION "elf_i386"
-#define ARCH64_EMULATION "elf_x86_64"
-#endif
-#endif
-
-#undef ASM_COMMENT_START
-#define ASM_COMMENT_START "/"
-
-/* The native Solaris assembler can't calculate the difference between
-   symbols in different sections, which causes problems for -fPIC jump
-   tables in .rodata.  */
-#ifndef HAVE_AS_IX86_DIFF_SECT_DELTA
-#undef JUMP_TABLES_IN_TEXT_SECTION
-#define JUMP_TABLES_IN_TEXT_SECTION 1
-
-/* The native Solaris assembler cannot handle the SYMBOL-. syntax, but
-   requires SYMBOL@rel/@rel64 instead.  */
-#define ASM_OUTPUT_DWARF_PCREL(FILE, SIZE, LABEL)      \
-  do {                                                 \
-    fputs (integer_asm_op (SIZE, FALSE), FILE);                \
-    assemble_name (FILE, LABEL);                       \
-    fputs (SIZE == 8 ? "@rel64" : "@rel", FILE);       \
-  } while (0)
-#endif
-
-/* As in sol2.h, override the default from i386/x86-64.h to work around
-   Sun as TLS bug.  */
-#undef  ASM_OUTPUT_ALIGNED_COMMON
-#define ASM_OUTPUT_ALIGNED_COMMON(FILE, NAME, SIZE, ALIGN)             \
-  do                                                                   \
-    {                                                                  \
-      if (TARGET_SUN_TLS                                               \
-         && in_section                                                 \
-         && ((in_section->common.flags & SECTION_TLS) == SECTION_TLS)) \
-       switch_to_section (bss_section);                                \
-      x86_elf_aligned_common (FILE, NAME, SIZE, ALIGN);                        \
-    }                                                                  \
-  while  (0)
-
-#define USE_IX86_FRAME_POINTER 1
-#define USE_X86_64_FRAME_POINTER 1
-
-#undef NO_PROFILE_COUNTERS
-
-#undef MCOUNT_NAME
-#define MCOUNT_NAME "_mcount"
index 6676941f67aa023b88a601c2feff827fd92e530d..9c3a6f49662b013bb827dfa9295a4d221b941b36 100644 (file)
@@ -18,12 +18,8 @@ You should have received a copy of the GNU General Public License
 along with GCC; see the file COPYING3.  If not see
 <http://www.gnu.org/licenses/>.  */
 
-/* Augment i386/unix.h version to return 8-byte vectors in memory, matching
-   Sun Studio compilers until version 12, the only ones supported on
-   Solaris 9.  */
-#undef TARGET_SUBTARGET_DEFAULT
-#define TARGET_SUBTARGET_DEFAULT \
-       (MASK_80387 | MASK_IEEE_FP | MASK_FLOAT_RETURNS | MASK_VECT8_RETURNS)
+#define SUBTARGET_OPTIMIZATION_OPTIONS                         \
+  { OPT_LEVELS_1_PLUS, OPT_momit_leaf_frame_pointer, NULL, 1 }
 
 /* Old versions of the Solaris assembler can not handle the difference of
    labels in different sections, so force DW_EH_PE_datarel if so.  */
@@ -50,27 +46,46 @@ along with GCC; see the file COPYING3.  If not see
 #undef TARGET_SUN_TLS
 #define TARGET_SUN_TLS 1
 
-#undef  SIZE_TYPE
-#define SIZE_TYPE "unsigned int"
-
-#undef  PTRDIFF_TYPE
-#define PTRDIFF_TYPE "int"
-
 /* Solaris 2/Intel as chokes on #line directives before Solaris 10.  */
 #undef CPP_SPEC
 #define CPP_SPEC "%{,assembler-with-cpp:-P} %(cpp_subtarget)"
 
-#define ASM_CPU_DEFAULT_SPEC ""
+/* 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
+#define ASM_CPU_SPEC "%(asm_cpu_default)"
 
-#define ASM_CPU_SPEC ""
-/* Don't include ASM_PIC_SPEC.  While the Solaris 9 assembler accepts
-   -K PIC, it gives many warnings:
-       R_386_32 relocation is used for symbol "<symbol>"
+/* Don't include ASM_PIC_SPEC.  While the Solaris 10+ assembler accepts -K PIC,
+   it gives many warnings: 
+       Absolute relocation is used for symbol "<symbol>"
    GNU as doesn't recognize -K at all.  */
 #undef ASM_SPEC
 #define ASM_SPEC ASM_SPEC_BASE
 
+#define DEFAULT_ARCH32_P !TARGET_64BIT_DEFAULT
+
+#define ARCH64_SUBDIR "amd64"
+
+#ifdef USE_GLD
+/* Since binutils 2.21, GNU ld supports new *_sol2 emulations to strictly
+   follow the Solaris 2 ABI.  Prefer them if present.  */
+#ifdef HAVE_LD_SOL2_EMULATION
+#define ARCH32_EMULATION "elf_i386_sol2"
+#define ARCH64_EMULATION "elf_x86_64_sol2"
+#else
+#define ARCH32_EMULATION "elf_i386"
+#define ARCH64_EMULATION "elf_x86_64"
+#endif
+#endif
+
 #undef  ENDFILE_SPEC
 #define ENDFILE_SPEC \
   "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
@@ -84,23 +99,39 @@ along with GCC; see the file COPYING3.  If not see
   { "asm_cpu",          ASM_CPU_SPEC },                \
   { "asm_cpu_default",  ASM_CPU_DEFAULT_SPEC },        \
 
-#undef SUBTARGET_EXTRA_SPECS
-#define SUBTARGET_EXTRA_SPECS \
-  { "startfile_arch",  STARTFILE_ARCH_SPEC },          \
-  { "link_arch",       LINK_ARCH_SPEC },               \
-  SUBTARGET_CPU_EXTRA_SPECS
-
 /* Register the Solaris-specific #pragma directives.  */
 #define REGISTER_SUBTARGET_PRAGMAS() solaris_register_pragmas ()
 
 #undef LOCAL_LABEL_PREFIX
 #define LOCAL_LABEL_PREFIX "."
 
+/* The Solaris 10 FCS as doesn't accept "#" comments, while later versions
+   do.  */
+#undef ASM_COMMENT_START
+#define ASM_COMMENT_START "/"
+
 /* The 32-bit Solaris assembler does not support .quad.  Do not use it.  */
 #ifndef HAVE_AS_IX86_QUAD
 #undef ASM_QUAD
 #endif
 
+/* The native Solaris assembler can't calculate the difference between
+   symbols in different sections, which causes problems for -fPIC jump
+   tables in .rodata.  */
+#ifndef HAVE_AS_IX86_DIFF_SECT_DELTA
+#undef JUMP_TABLES_IN_TEXT_SECTION
+#define JUMP_TABLES_IN_TEXT_SECTION 1
+
+/* The native Solaris assembler cannot handle the SYMBOL-. syntax, but
+   requires SYMBOL@rel/@rel64 instead.  */
+#define ASM_OUTPUT_DWARF_PCREL(FILE, SIZE, LABEL)      \
+  do {                                                 \
+    fputs (integer_asm_op (SIZE, FALSE), FILE);                \
+    assemble_name (FILE, LABEL);                       \
+    fputs (SIZE == 8 ? "@rel64" : "@rel", FILE);       \
+  } while (0)
+#endif
+
 /* The Solaris assembler wants a .local for non-exported aliases.  */
 #define ASM_OUTPUT_DEF_FROM_DECLS(FILE, DECL, TARGET)  \
   do {                                                 \
@@ -148,6 +179,20 @@ along with GCC; see the file COPYING3.  If not see
   while (0)
 #endif /* !USE_GAS */
 
+/* As in sparc/sol2.h, override the default from i386/x86-64.h to work
+   around Sun as TLS bug.  */
+#undef  ASM_OUTPUT_ALIGNED_COMMON
+#define ASM_OUTPUT_ALIGNED_COMMON(FILE, NAME, SIZE, ALIGN)             \
+  do                                                                   \
+    {                                                                  \
+      if (TARGET_SUN_TLS                                               \
+         && in_section                                                 \
+         && ((in_section->common.flags & SECTION_TLS) == SECTION_TLS)) \
+       switch_to_section (bss_section);                                \
+      x86_elf_aligned_common (FILE, NAME, SIZE, ALIGN);                        \
+    }                                                                  \
+  while  (0)
+
 /* Output a simple call for .init/.fini.  */
 #define ASM_OUTPUT_CALL(FILE, FN)                              \
   do                                                           \
@@ -174,6 +219,14 @@ along with GCC; see the file COPYING3.  If not see
 #define DTORS_SECTION_ASM_OP   "\t.section\t.dtors, \"aw\""
 #endif
 
+#define USE_IX86_FRAME_POINTER 1
+#define USE_X86_64_FRAME_POINTER 1
+
+#undef NO_PROFILE_COUNTERS
+
+#undef MCOUNT_NAME
+#define MCOUNT_NAME "_mcount"
+
 /* We do not need NT_VERSION notes.  */
 #undef X86_FILE_START_VERSION_DIRECTIVE
 #define X86_FILE_START_VERSION_DIRECTIVE false
diff --git a/gcc/config/sol2-10.h b/gcc/config/sol2-10.h
deleted file mode 100644 (file)
index 4488a40..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Operating system specific defines to be used when targeting GCC for any
-   Solaris 2 system starting from Solaris 10.
-   Copyright (C) 2006-2014 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
-
-GCC is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING3.  If not see
-<http://www.gnu.org/licenses/>.  */
-
-/* Solaris 10 has the float and long double forms of math functions.
-   We redefine this hook so the version from elfos.h header won't be used.  */
-#undef TARGET_LIBC_HAS_FUNCTION
-#define TARGET_LIBC_HAS_FUNCTION default_libc_has_function
diff --git a/gcc/config/sol2-bi.h b/gcc/config/sol2-bi.h
deleted file mode 100644 (file)
index fdb2a28..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-/* Definitions of target machine for GCC, for bi-arch Solaris 2.
-   Copyright (C) 2011-2014 Free Software Foundation, Inc.
-
-   This file is part of GCC.
-
-   GCC is free software; you can redistribute it and/or modify it under
-   the terms of the GNU General Public License as published by the Free
-   Software Foundation; either version 3, or (at your option) any later
-   version.
-
-   GCC is distributed in the hope that it will be useful, but WITHOUT ANY
-   WARRANTY; without even the implied warranty of MERCHANTABILITY or
-   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-   for more details.
-
-   Under Section 7 of GPL version 3, you are granted additional
-   permissions described in the GCC Runtime Library Exception, version
-   3.1, as published by the Free Software Foundation.
-
-   You should have received a copy of the GNU General Public License and
-   a copy of the GCC Runtime Library Exception along with this program;
-   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* wchar_t is called differently in <wchar.h> for 32 and 64-bit
-   compilations.  This is called for by SCD 2.4.1, p. 6-83, Figure 6-65
-   (32-bit) and p. 6P-10, Figure 6.38 (64-bit).  */
-
-#undef WCHAR_TYPE
-#define WCHAR_TYPE (TARGET_64BIT ? "int" : "long int")
-
-#undef WCHAR_TYPE_SIZE
-#define WCHAR_TYPE_SIZE 32
-
-/* Same for wint_t.  See SCD 2.4.1, p. 6-83, Figure 6-66 (32-bit).  There's
-   no corresponding 64-bit definition, but this is what Solaris 8
-   <iso/wchar_iso.h> uses.  */
-
-#undef WINT_TYPE
-#define WINT_TYPE (TARGET_64BIT ? "int" : "long int")
-
-#undef WINT_TYPE_SIZE
-#define WINT_TYPE_SIZE 32
-
-#if DEFAULT_ARCH32_P
-#define MULTILIB_DEFAULTS { "m32" }
-#else
-#define MULTILIB_DEFAULTS { "m64" }
-#endif
-
-#if DEFAULT_ARCH32_P
-#define DEF_ARCH32_SPEC(__str) "%{!m64:" __str "}"
-#define DEF_ARCH64_SPEC(__str) "%{m64:" __str "}"
-#else
-#define DEF_ARCH32_SPEC(__str) "%{m32:" __str "}"
-#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.  */
-#undef LINK_ARCH64_SPEC_BASE
-#define LINK_ARCH64_SPEC_BASE \
-  "%{G:-G} \
-   %{YP,*} \
-   %{R*} \
-   %{!YP,*:%{p|pg:-Y P,%R/usr/lib/libp/" ARCH64_SUBDIR ":%R/lib/" ARCH64_SUBDIR ":%R/usr/lib/" ARCH64_SUBDIR "}        \
-          %{!p:%{!pg:-Y P,%R/lib/" ARCH64_SUBDIR ":%R/usr/lib/" ARCH64_SUBDIR "}}}"
-
-#undef LINK_ARCH64_SPEC
-#ifndef USE_GLD
-/* FIXME: Used to be SPARC-only.  Not SPARC-specfic but for the model name!  */
-#define LINK_ARCH64_SPEC \
-  "%{mcmodel=medlow:-M /usr/lib/ld/" ARCH64_SUBDIR "/map.below4G} " \
-  LINK_ARCH64_SPEC_BASE
-#else
-#define LINK_ARCH64_SPEC LINK_ARCH64_SPEC_BASE
-#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 "}" \
-                           "%{!m32:%{!m64:-m " ARCH_DEFAULT_EMULATION "}} "
-#else
-#define TARGET_LD_EMULATION ""
-#endif
-
-#undef LINK_ARCH_SPEC
-#if DISABLE_MULTILIB
-#if DEFAULT_ARCH32_P
-#define LINK_ARCH_SPEC TARGET_LD_EMULATION " \
-%{m32:%(link_arch32)} \
-%{m64:%edoes not support multilib} \
-%{!m32:%{!m64:%(link_arch_default)}} \
-"
-#else
-#define LINK_ARCH_SPEC TARGET_LD_EMULATION " \
-%{m32:%edoes not support multilib} \
-%{m64:%(link_arch64)} \
-%{!m32:%{!m64:%(link_arch_default)}} \
-"
-#endif
-#else
-#define LINK_ARCH_SPEC TARGET_LD_EMULATION " \
-%{m32:%(link_arch32)} \
-%{m64:%(link_arch64)} \
-%{!m32:%{!m64:%(link_arch_default)}}"
-#endif
-
-#define LINK_ARCH_DEFAULT_SPEC \
-(DEFAULT_ARCH32_P ? LINK_ARCH32_SPEC : LINK_ARCH64_SPEC)
-
-#undef SUBTARGET_EXTRA_SPECS
-#define SUBTARGET_EXTRA_SPECS \
-  { "startfile_arch",   STARTFILE_ARCH_SPEC },         \
-  { "link_arch32",       LINK_ARCH32_SPEC },            \
-  { "link_arch64",       LINK_ARCH64_SPEC },            \
-  { "link_arch_default", LINK_ARCH_DEFAULT_SPEC },     \
-  { "link_arch",        LINK_ARCH_SPEC },              \
-  SUBTARGET_CPU_EXTRA_SPECS
index a21c953b0359b899b0492228f1e601734e5bf171..d88de37bd2e8721519b6e943ef7d154f486cee50 100644 (file)
@@ -21,20 +21,25 @@ along with GCC; see the file COPYING3.  If not see
 /* We are compiling for Solaris 2 now.  */
 #define TARGET_SOLARIS 1
 
-/* Solaris 2 (at least as of 2.5.1) uses a 32-bit wchar_t.  */
+/* wchar_t is called differently in <wchar.h> for 32 and 64-bit
+   compilations.  This is called for by SCD 2.4.1, p. 6-83, Figure 6-65
+   (32-bit) and p. 6P-10, Figure 6.38 (64-bit).  */
+
 #undef WCHAR_TYPE
-#define WCHAR_TYPE "long int"
+#define WCHAR_TYPE (TARGET_64BIT ? "int" : "long int")
 
 #undef WCHAR_TYPE_SIZE
-#define WCHAR_TYPE_SIZE BITS_PER_WORD
+#define WCHAR_TYPE_SIZE 32
+
+/* Same for wint_t.  See SCD 2.4.1, p. 6-83, Figure 6-66 (32-bit).  There's
+   no corresponding 64-bit definition, but this is what Solaris 8
+   <iso/wchar_iso.h> uses.  */
 
-/* Solaris 2 uses a wint_t different from the default. This is required
-   by the SCD 2.4.1, p. 6-83, Figure 6-66.  */
-#undef WINT_TYPE
-#define        WINT_TYPE "long int"
+#undef WINT_TYPE
+#define WINT_TYPE (TARGET_64BIT ? "int" : "long int")
 
-#undef WINT_TYPE_SIZE
-#define        WINT_TYPE_SIZE BITS_PER_WORD
+#undef WINT_TYPE_SIZE
+#define WINT_TYPE_SIZE 32
 
 #define SIG_ATOMIC_TYPE "int"
 
@@ -103,6 +108,19 @@ along with GCC; see the file COPYING3.  If not see
     solaris_override_options ();                       \
   } while (0)
 
+#if DEFAULT_ARCH32_P
+#define MULTILIB_DEFAULTS { "m32" }
+#else
+#define MULTILIB_DEFAULTS { "m64" }
+#endif
+
+#if DEFAULT_ARCH32_P
+#define DEF_ARCH32_SPEC(__str) "%{!m64:" __str "}"
+#define DEF_ARCH64_SPEC(__str) "%{m64:" __str "}"
+#else
+#define DEF_ARCH32_SPEC(__str) "%{m32:" __str "}"
+#define DEF_ARCH64_SPEC(__str) "%{!m32:" __str "}"
+#endif
 
 /* It's safe to pass -s always, even if -g is not used.  Those options are
    handled by both Sun as and GNU as.  */
@@ -111,6 +129,16 @@ along with GCC; see the file COPYING3.  If not see
 
 #define ASM_PIC_SPEC " %{fpic|fpie|fPIC|fPIE:-K PIC}"
 
+#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 LIB_SPEC
 #define LIB_SPEC \
   "%{!symbolic:\
@@ -120,17 +148,11 @@ along with GCC; see the file COPYING3.  If not see
 #ifndef CROSS_DIRECTORY_STRUCTURE
 #undef MD_EXEC_PREFIX
 #define MD_EXEC_PREFIX "/usr/ccs/bin/"
-
-#undef MD_STARTFILE_PREFIX
-#define MD_STARTFILE_PREFIX "/usr/ccs/lib/"
 #endif
 
-#undef STARTFILE_ARCH32_SPEC
-#define STARTFILE_ARCH32_SPEC "%{ansi:values-Xc.o%s} \
-                           %{!ansi:values-Xa.o%s}"
-
 #undef STARTFILE_ARCH_SPEC
-#define STARTFILE_ARCH_SPEC STARTFILE_ARCH32_SPEC
+#define STARTFILE_ARCH_SPEC "%{ansi:values-Xc.o%s} \
+                           %{!ansi:values-Xa.o%s}"
 
 /* We don't use the standard svr4 STARTFILE_SPEC because it's wrong for us.  */
 #undef STARTFILE_SPEC
@@ -153,14 +175,78 @@ along with GCC; see the file COPYING3.  If not see
   "%{G:-G} \
    %{YP,*} \
    %{R*} \
-   %{!YP,*:%{p|pg:-Y P,%R/usr/ccs/lib/libp:%R/usr/lib/libp:%R/usr/ccs/lib:%R/lib:%R/usr/lib} \
-          %{!p:%{!pg:-Y P,%R/usr/ccs/lib:%R/lib:%R/usr/lib}}}"
+   %{!YP,*:%{p|pg:-Y P,%R/usr/lib/libp%R/lib:%R/usr/lib} \
+          %{!p:%{!pg:-Y P,%R/lib:%R/usr/lib}}}"
 
 #undef LINK_ARCH32_SPEC
 #define LINK_ARCH32_SPEC LINK_ARCH32_SPEC_BASE
 
+/* This should be the same as LINK_ARCH32_SPEC_BASE, except with
+   ARCH64_SUBDIR appended to the paths.  */
+#undef LINK_ARCH64_SPEC_BASE
+#define LINK_ARCH64_SPEC_BASE \
+  "%{G:-G} \
+   %{YP,*} \
+   %{R*} \
+   %{!YP,*:%{p|pg:-Y P,%R/usr/lib/libp/" ARCH64_SUBDIR ":%R/lib/" ARCH64_SUBDIR ":%R/usr/lib/" ARCH64_SUBDIR "}        \
+          %{!p:%{!pg:-Y P,%R/lib/" ARCH64_SUBDIR ":%R/usr/lib/" ARCH64_SUBDIR "}}}"
+
+#undef LINK_ARCH64_SPEC
+#ifndef USE_GLD
+/* FIXME: Used to be SPARC-only.  Not SPARC-specfic but for the model name!  */
+#define LINK_ARCH64_SPEC \
+  "%{mcmodel=medlow:-M /usr/lib/ld/" ARCH64_SUBDIR "/map.below4G} " \
+  LINK_ARCH64_SPEC_BASE
+#else
+#define LINK_ARCH64_SPEC LINK_ARCH64_SPEC_BASE
+#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 "}" \
+                           "%{!m32:%{!m64:-m " ARCH_DEFAULT_EMULATION "}} "
+#else
+#define TARGET_LD_EMULATION ""
+#endif
+
 #undef LINK_ARCH_SPEC
-#define LINK_ARCH_SPEC LINK_ARCH32_SPEC
+#if DISABLE_MULTILIB
+#if DEFAULT_ARCH32_P
+#define LINK_ARCH_SPEC TARGET_LD_EMULATION " \
+%{m32:%(link_arch32)} \
+%{m64:%edoes not support multilib} \
+%{!m32:%{!m64:%(link_arch_default)}} \
+"
+#else
+#define LINK_ARCH_SPEC TARGET_LD_EMULATION " \
+%{m32:%edoes not support multilib} \
+%{m64:%(link_arch64)} \
+%{!m32:%{!m64:%(link_arch_default)}} \
+"
+#endif
+#else
+#define LINK_ARCH_SPEC TARGET_LD_EMULATION " \
+%{m32:%(link_arch32)} \
+%{m64:%(link_arch64)} \
+%{!m32:%{!m64:%(link_arch_default)}}"
+#endif
+
+#define LINK_ARCH_DEFAULT_SPEC \
+(DEFAULT_ARCH32_P ? LINK_ARCH32_SPEC : LINK_ARCH64_SPEC)
+
+#undef SUBTARGET_EXTRA_SPECS
+#define SUBTARGET_EXTRA_SPECS \
+  { "startfile_arch",   STARTFILE_ARCH_SPEC },         \
+  { "link_arch32",       LINK_ARCH32_SPEC },            \
+  { "link_arch64",       LINK_ARCH64_SPEC },            \
+  { "link_arch_default", LINK_ARCH_DEFAULT_SPEC },     \
+  { "link_arch",        LINK_ARCH_SPEC },              \
+  SUBTARGET_CPU_EXTRA_SPECS
 
 /* C++11 programs need -lrt for nanosleep.  */
 #define TIME_LIBRARY "rt"
@@ -235,7 +321,9 @@ along with GCC; see the file COPYING3.  If not see
 #define TARGET_CXX_DECL_MANGLING_CONTEXT solaris_cxx_decl_mangling_context
 
 /* Solaris/x86 as and gas support unquoted section names.  */
+#ifndef SECTION_NAME_FORMAT
 #define SECTION_NAME_FORMAT    "%s"
+#endif
 
 /* This is how to declare the size of a function.  For Solaris, we output
    any .init or .fini entries here.  */
@@ -249,23 +337,6 @@ along with GCC; see the file COPYING3.  If not see
     }                                                          \
   while (0)
 
-/* Solaris as has a bug: a .common directive in .tbss or .tdata section
-   behaves as .tls_common rather than normal non-TLS .common.  */
-#undef  ASM_OUTPUT_ALIGNED_COMMON
-#define ASM_OUTPUT_ALIGNED_COMMON(FILE, NAME, SIZE, ALIGN)             \
-  do                                                                   \
-    {                                                                  \
-      if (TARGET_SUN_TLS                                               \
-         && in_section                                                 \
-         && ((in_section->common.flags & SECTION_TLS) == SECTION_TLS)) \
-       switch_to_section (bss_section);                                \
-      fprintf ((FILE), "%s", COMMON_ASM_OP);                           \
-      assemble_name ((FILE), (NAME));                                  \
-      fprintf ((FILE), ","HOST_WIDE_INT_PRINT_UNSIGNED",%u\n",         \
-              (SIZE), (ALIGN) / BITS_PER_UNIT);                        \
-    }                                                                  \
-  while (0)
-
 #ifndef USE_GAS
 #undef TARGET_ASM_ASSEMBLE_VISIBILITY
 #define TARGET_ASM_ASSEMBLE_VISIBILITY solaris_assemble_visibility
@@ -291,8 +362,10 @@ along with GCC; see the file COPYING3.  If not see
 
 #define TARGET_POSIX_IO
 
+/* Solaris 10 has the float and long double forms of math functions.
+   We redefine this hook so the version from elfos.h header won't be used.  */
 #undef TARGET_LIBC_HAS_FUNCTION
-#define TARGET_LIBC_HAS_FUNCTION no_c99_libc_has_function
+#define TARGET_LIBC_HAS_FUNCTION default_libc_has_function
 
 extern GTY(()) tree solaris_pending_aligns;
 extern GTY(()) tree solaris_pending_inits;
index b50a937b26f331a5e545f0c067fa2e83992e5176..2fcdc85c81f509bd07004511d3a751ed5aabd7b5 100644 (file)
@@ -109,8 +109,6 @@ along with GCC; see the file COPYING3.  If not see
 #define CPP_CPU64_DEFAULT_SPEC ""
 #undef ASM_CPU32_DEFAULT_SPEC
 #define ASM_CPU32_DEFAULT_SPEC "-xarch=v8plus"
-#undef ASM_CPU_DEFAULT_SPEC
-#define ASM_CPU_DEFAULT_SPEC ASM_CPU32_DEFAULT_SPEC
 #endif
 
 #if TARGET_CPU_DEFAULT == TARGET_CPU_ultrasparc
@@ -120,8 +118,6 @@ along with GCC; see the file COPYING3.  If not see
 #define ASM_CPU32_DEFAULT_SPEC "-xarch=v8plusa"
 #undef ASM_CPU64_DEFAULT_SPEC
 #define ASM_CPU64_DEFAULT_SPEC "-xarch=v9a"
-#undef ASM_CPU_DEFAULT_SPEC
-#define ASM_CPU_DEFAULT_SPEC ASM_CPU32_DEFAULT_SPEC
 #endif
 
 #if TARGET_CPU_DEFAULT == TARGET_CPU_ultrasparc3
@@ -131,8 +127,6 @@ along with GCC; see the file COPYING3.  If not see
 #define ASM_CPU32_DEFAULT_SPEC "-xarch=v8plusb"
 #undef ASM_CPU64_DEFAULT_SPEC
 #define ASM_CPU64_DEFAULT_SPEC "-xarch=v9b"
-#undef ASM_CPU_DEFAULT_SPEC
-#define ASM_CPU_DEFAULT_SPEC ASM_CPU32_DEFAULT_SPEC
 #endif
 
 #if TARGET_CPU_DEFAULT == TARGET_CPU_niagara
@@ -142,8 +136,6 @@ along with GCC; see the file COPYING3.  If not see
 #define ASM_CPU32_DEFAULT_SPEC "-xarch=v8plusb"
 #undef ASM_CPU64_DEFAULT_SPEC
 #define ASM_CPU64_DEFAULT_SPEC "-xarch=v9b"
-#undef ASM_CPU_DEFAULT_SPEC
-#define ASM_CPU_DEFAULT_SPEC ASM_CPU32_DEFAULT_SPEC
 #endif
 
 #if TARGET_CPU_DEFAULT == TARGET_CPU_niagara2
@@ -153,8 +145,6 @@ along with GCC; see the file COPYING3.  If not see
 #define ASM_CPU32_DEFAULT_SPEC "-xarch=v8plusb"
 #undef ASM_CPU64_DEFAULT_SPEC
 #define ASM_CPU64_DEFAULT_SPEC "-xarch=v9b"
-#undef ASM_CPU_DEFAULT_SPEC
-#define ASM_CPU_DEFAULT_SPEC ASM_CPU32_DEFAULT_SPEC
 #endif
 
 #if TARGET_CPU_DEFAULT == TARGET_CPU_niagara3
@@ -164,8 +154,6 @@ along with GCC; see the file COPYING3.  If not see
 #define ASM_CPU32_DEFAULT_SPEC "-xarch=v8plus" AS_NIAGARA3_FLAG
 #undef ASM_CPU64_DEFAULT_SPEC
 #define ASM_CPU64_DEFAULT_SPEC "-xarch=v9" AS_NIAGARA3_FLAG
-#undef ASM_CPU_DEFAULT_SPEC
-#define ASM_CPU_DEFAULT_SPEC ASM_CPU32_DEFAULT_SPEC
 #endif
 
 #if TARGET_CPU_DEFAULT == TARGET_CPU_niagara4
@@ -175,8 +163,6 @@ along with GCC; see the file COPYING3.  If not see
 #define ASM_CPU32_DEFAULT_SPEC AS_SPARC32_FLAG AS_NIAGARA4_FLAG
 #undef ASM_CPU64_DEFAULT_SPEC
 #define ASM_CPU64_DEFAULT_SPEC AS_SPARC64_FLAG AS_NIAGARA4_FLAG
-#undef ASM_CPU_DEFAULT_SPEC
-#define ASM_CPU_DEFAULT_SPEC ASM_CPU32_DEFAULT_SPEC
 #endif
 
 #undef CPP_CPU_SPEC
@@ -361,6 +347,23 @@ extern const char *host_detect_local_cpu (int argc, const char **argv);
     }                                                                  \
   while (0)
 
+/* Solaris as has a bug: a .common directive in .tbss or .tdata section
+   behaves as .tls_common rather than normal non-TLS .common.  */
+#undef  ASM_OUTPUT_ALIGNED_COMMON
+#define ASM_OUTPUT_ALIGNED_COMMON(FILE, NAME, SIZE, ALIGN)             \
+  do                                                                   \
+    {                                                                  \
+      if (TARGET_SUN_TLS                                               \
+         && in_section                                                 \
+         && ((in_section->common.flags & SECTION_TLS) == SECTION_TLS)) \
+       switch_to_section (bss_section);                                \
+      fprintf ((FILE), "%s", COMMON_ASM_OP);                           \
+      assemble_name ((FILE), (NAME));                                  \
+      fprintf ((FILE), ","HOST_WIDE_INT_PRINT_UNSIGNED",%u\n",         \
+              (SIZE), (ALIGN) / BITS_PER_UNIT);                        \
+    }                                                                  \
+  while (0)
+
 #ifndef USE_GAS
 /* This is how to output an assembler line that says to advance
    the location counter to a multiple of 2**LOG bytes using the
@@ -376,7 +379,6 @@ extern const char *host_detect_local_cpu (int argc, const char **argv);
 
 /* Sun as requires doublequoted section names on SPARC.  While GNU as
    supports that, too, we prefer the standard variant.  */
-#undef SECTION_NAME_FORMAT
 #define SECTION_NAME_FORMAT    "\"%s\""
 #endif /* !USE_GAS */