Uros Bizjak <ubiz...@gmail.com> writes: > On Wed, Apr 16, 2014 at 1:16 PM, Rainer Orth > <r...@cebitec.uni-bielefeld.de> wrote: >> Now that 4.9 has branched, it's time to actually remove the obsolete >> Solaris 9 configuration. Most of this is just legwork and falls under >> my Solaris maintainership. >> >> A couple of questions, though: >> >> * Uros: I'm removing all sse_os_support() checks from the testsuite. >> Solaris 9 was the only consumer, so it seems best to do away with it. > > This is OK, but please leave sse-os-check.h (and corresponding > sse_os_support calls) in the testsuite. Just remove the Solaris 9 > specific code from sse-os-check.h and always return 1, perhaps with > the comment that all currently supported OSes support SSE > instructions.
Here's the final patch I've checked in, incorporating all review comments. I've left out the libgo (already checked in by Ian) and classpath parts. Rainer 2014-01-06 Rainer Orth <r...@cebitec.uni-bielefeld.de> libstdc++-v3: * configure.host: Remove solaris2.9 handling. Change os_include_dir to os/solaris/solaris2.10. * acinclude.m4 (ac_has_gthreads): Remove solaris2.9* handling. * crossconfig.m4: Remove *-solaris2.9 handling, simplify. * configure: Regenerate. * config/abi/post/solaris2.9: Remove. * config/os/solaris/solaris2.9: Rename to ... * config/os/solaris/solaris2.10: ... this. * config/os/solaris/solaris2.10/os_defines.h (CLOCK_MONOTONIC): Remove. * doc/xml/manual/configure.xml (--enable-libstdcxx-threads): Remove Solaris 9 reference. * doc/html/manual/configure.html: Regenerate. * testsuite/27_io/basic_istream/extractors_arithmetic/char/12.cc: Remove *-*-solaris2.9 xfail. * testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/12.cc: Likewise. * testsuite/ext/enc_filebuf/char/13598.cc: Remove *-*-solaris2.9 xfail. libjava: * configure.ac (THREADLIBS, THREADSPEC): Remove *-*-solaris2.9 handling. * configure: Regenerate. libgfortran: * config/fpu-387.h [__sun__ && __svr4__]: Remove SSE execution check. libgcc: * config/i386/crtfastmath.c (set_fast_math): Remove SSE execution check. * config/i386/sol2-unwind.h (x86_fallback_frame_state): Remove Solaris 9 single-threaded support. * config/sparc/sol2-unwind.h (sparc64_is_sighandler): Remove Solaris 9 single-threaded support. Add call_user_handler code sequences. (sparc_is_sighandler): Likewise. libcpp: * lex.c: Remove Solaris 9 reference. gcc/testsuite: * gcc.c-torture/compile/pr28865.c: Remove dg-xfail-if. * gcc.dg/c99-stdint-6.c: Remove dg-options for *-*-solaris2.9. * gcc.dg/lto/20090210_0.c: Remove dg-extra-ld-options for *-*-solaris2.9. * gcc.dg/torture/pr47917.c: Remove dg-options for *-*-solaris2.9. * gcc.target/i386/pr22076.c: Remove i?86-*-solaris2.9 handling from dg-options. * gcc.target/i386/pr22152.c: Remove i?86-*-solaris2.9 handling from dg-additional-options. * gcc.target/i386/vect8-ret.c: Remove i?86-*-solaris2.9 handling from dg-options. * gcc.dg/vect/tree-vect.h (check_vect): Remove Solaris 9 SSE2 execution check. * gcc.target/i386/sse-os-support.h [__sun__ && __svr4__] (sigill_hdlr): Remove. (sse_os_support) [__sun__ && __svr4__]: Remove SSE execution check. * gfortran.dg/erf_3.F90: Remove sparc*-*-solaris2.9* handling. * gfortran.dg/fmt_en.f90: Remove i?86-*-solaris2.9* handling. * gfortran.dg/round_4.f90: Remove *-*-solaris2.9* handling. * lib/target-supports.exp (add_options_for_tls): Remove *-*-solaris2.9* handling. gcc: * config.gcc (enable_obsolete): Remove *-*-solaris2.9*. (*-*-solaris2.[0-9] | *-*-solaris2.[0-9].*): Mark unsupported. (*-*-solaris2*): Simplify. (i[34567]86-*-solaris2* | x86_64-*-solaris2.1[0-9]*): Likewise. (i[34567]86-*-solaris2* | x86_64-*-solaris2.1[0-9]*): Remove *-*-solaris2.9* handling. * configure.ac (gcc_cv_as_hidden): Remove test for Solaris 9/x86 as bug. (gcc_cv_ld_hidden): Remove *-*-solaris2.9* handling. (ld_tls_support): Remove i?86-*-solaris2.9, sparc*-*-solaris2.9 handling, simplify. (gcc_cv_as_gstabs_flag): Remove workaround for Solaris 9/x86 as bug. * configure: Regenerate. * config/i386/sol2-9.h: Remove. * doc/install.texi (Specific, i?86-*-solaris2.9): Remove. (Specific, *-*-solaris2*): Mention Solaris 9 support removal. Remove Solaris 9 references. fixincludes: * inclhack.def (math_exception): Bypass on *-*-solaris2.1[0-9]*. (solaris_int_types): Remove. (solaris_longjmp_noreturn): Remove. (solaris_mutex_init_2): Remove. (solaris_once_init_2): Remove. (solaris_sys_va_list): Remove. * fixincl.x: Regenerate. * tests/base/iso/setjmp_iso.h: Remove. * tests/base/pthread.h [SOLARIS_MUTEX_INIT_2_CHECK]: Remove. [SOLARIS_ONCE_INIT_1_CHECK]: Remove wrapping done by solaris_once_init_2. [SOLARIS_ONCE_INIT_2_CHECK]: Remove. * tests/base/sys/int_types.h: Remove. * tests/base/sys/va_list.h: Remove. contrib: * config-list.mk (LIST): Remove sparc-sun-solaris2.9, i686-solaris2.9.
# HG changeset patch # Parent 38d681ec07686a092be2c779b81b171605c2db1c Remove obsolete Solaris 9 support diff --git a/contrib/config-list.mk b/contrib/config-list.mk --- a/contrib/config-list.mk +++ b/contrib/config-list.mk @@ -75,7 +75,6 @@ LIST = aarch64-elf aarch64-linux-gnu \ x86_64-knetbsd-gnu x86_64-w64-mingw32 \ x86_64-mingw32OPT-enable-sjlj-exceptions=yes xstormy16-elf xtensa-elf \ xtensa-linux \ - sparc-sun-solaris2.9OPT-enable-obsolete i686-solaris2.9OPT-enable-obsolete \ i686-interix3OPT-enable-obsolete score-elfOPT-enable-obsolete LOGFILES = $(patsubst %,log/%-make.out,$(LIST)) diff --git a/fixincludes/inclhack.def b/fixincludes/inclhack.def --- a/fixincludes/inclhack.def +++ b/fixincludes/inclhack.def @@ -2767,6 +2767,9 @@ fix = { */ bypass = 'We have a problem when using C\+\+|for C\+\+, ' '_[a-z0-9A-Z_]+_exception; for C, exception'; + /* The Solaris 10 headers already get this right. */ + mach = '*-*-solaris2.1[0-9]*'; + not_machine = true; c_fix = wrap; c_fix_arg = "#ifdef __cplusplus\n" @@ -3407,42 +3410,6 @@ fix = { }; /* - * Sun Solaris up to 9 has a version of sys/int_types.h that forbids use - * of Standard C99 64-bit types in 32-bit mode. - */ -fix = { - hackname = solaris_int_types; - select = "__STDC__ - 0 == 0"; - bypass = "_LONGLONG_TYPE"; - files = sys/int_types.h; - c_fix = format; - c_fix_arg = - "(defined(_STDC_C99) || !defined(_STRICT_STDC) || defined(__GNUC__))"; - test_text = - "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n" - "typedef long long int64_t;\n" - "#endif\n\n" - "#if defined(_LP64) || (__STDC__ - 0 == 0 && !defined(_NO_LONGLONG))\n" - "typedef int64_t intmax_t;\n" - "#endif"; -}; - -/* - * Before Solaris 10, <iso/setjmp_iso.h> doesn't mark longjump noreturn. - */ -fix = { - hackname = solaris_longjmp_noreturn; - mach = "*-*-solaris2*"; - files = "iso/setjmp_iso.h"; - bypass = "__NORETURN"; - select = "(.*longjmp\\(jmp_buf.*[^)]+\\));"; - c_fix = format; - c_fix_arg = "%1 __attribute__ ((__noreturn__));"; - - test_text = "extern void longjmp(jmp_buf, int);"; -}; - -/* * Sun Solaris 10 defines several C99 math macros in terms of * builtins specific to the Studio compiler, in particular not * compatible with the GNU compiler. @@ -3595,44 +3562,6 @@ fix = { }; /* - * Sun Solaris defines PTHREAD_MUTEX_INITIALIZER with a trailing - * "0" for the last field of the pthread_mutex_t structure, which is - * of type upad64_t, which itself is typedef'd to int64_t, but with - * __STDC__ defined (e.g. by -ansi) it is a union. So change the - * initializer to "{0}" instead - */ -fix = { - hackname = solaris_mutex_init_2; - select = '@\(#\)pthread.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI"; - files = pthread.h; - /* - * On Solaris 10, this fix is unnecessary because upad64_t is - * always defined correctly regardless of the definition of the - * __STDC__ macro. The first "mach" pattern matches up to - * solaris9. The second "mach" pattern will not match any two (or - * more) digit solaris version, but it will match e.g. 2.5.1. - */ - mach = '*-*-solaris2.[0-9]', '*-*-solaris2.[0-9][!0-9]*'; - c_fix = format; - c_fix_arg = "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n" - "%0\n" - "#else\n" - "%1, {0}}%4\n" - "#endif"; - c_fix_arg = "(^#define[ \t]+PTHREAD_(MUTEX|COND)_INITIALIZER[ \t]+" - "(|/\*.*\*/[ \t]*\\\\\n[ \t]*)\\{.*)" - ",[ \t]*0\\}" "(|[ \t].*)$"; - test_text = - '#ident "@(#)pthread.h 1.26 98/04/12 SMI"'"\n" - "#define PTHREAD_MUTEX_INITIALIZER\t{{{0},0}, {{{0}}}, 0}\n" - "#define PTHREAD_COND_INITIALIZER\t{{{0}, 0}, 0}\t/* DEFAULTCV */\n" - "#define PTHREAD_MUTEX_INITIALIZER /* = DEFAULTMUTEX */ \\\\\n" - " {{0, 0, 0, DEFAULT_TYPE, _MUTEX_MAGIC}, {{{0}}}, 0}\n" - "#define PTHREAD_COND_INITIALIZER /* = DEFAULTCV */ \\\\\n" - " {{{0, 0, 0, 0}, DEFAULT_TYPE, _COND_MAGIC}, 0}"; -}; - -/* * Sun Solaris defines PTHREAD_ONCE_INIT as an array containing a * structure. As such, it need two levels of brackets, but only * contains one. Wrap the macro definition in an extra layer. @@ -3651,38 +3580,6 @@ fix = { }; /* - * Sun Solaris defines PTHREAD_ONCE_INIT with a "0" for some - * fields of the pthread_once_t structure, which are of type - * upad64_t, which itself is typedef'd to int64_t, but with __STDC__ - * defined (e.g. by -ansi) it is a union. So change the initializer - * to "{0}" instead. This test relies on solaris_once_init_1. - */ -fix = { - hackname = solaris_once_init_2; - select = '@\(#\)pthread.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI"; - files = pthread.h; - /* - * On Solaris 10, this fix is unnecessary because upad64_t is - * always defined correctly regardless of the definition of the - * __STDC__ macro. The first "mach" pattern matches up to - * solaris9. The second "mach" pattern will not match any two (or - * more) digit solaris version, but it will match e.g. 2.5.1. - */ - mach = '*-*-solaris2.[0-9]', '*-*-solaris2.[0-9][!0-9]*'; - c_fix = format; - c_fix_arg = "#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)\n" - "%0\n" - "#else\n" - "%1{0}, {0}, {0}, {%3}%4\n" - "#endif"; - c_fix_arg = "(^#define[ \t]+PTHREAD_ONCE_INIT[ \t]+\\{\\{)" - "(0, 0, 0, )(PTHREAD_[A-Z_]+)(\\}\\})[ \t]*$"; - test_text = - '#ident "@(#)pthread.h 1.26 98/04/12 SMI"'"\n" - "#define PTHREAD_ONCE_INIT\t{{0, 0, 0, PTHREAD_ONCE_NOTDONE}}\n"; -}; - -/* * Solaris 10+ <spawn.h> uses char *const argv[_RESTRICT_KYWD] in the * posix_spawn declarations, which doesn't work with C++. */ @@ -3780,33 +3677,6 @@ fix = { }; /* - * On Solaris 9, __va_list needs to become a typedef for - * __builtin_va_list to make -Wmissing-format-attribute work. - */ -fix = { - hackname = solaris_sys_va_list; - files = sys/va_list.h; - mach = '*-*-solaris2.9'; - select = "#if.*__STDC__.*\n" - "typedef void \\*__va_list;\n" - "#else\n" - "typedef char \\*__va_list;\n" - "#endif"; - - c_fix = format; - c_fix_arg = "#ifdef __GNUC__\n" - "typedef __builtin_va_list __va_list;\n" - "#else\n" - "%0\n" - "#endif"; - test_text = "#if defined(__STDC__) && !defined(__ia64)\n" - "typedef void *__va_list;\n" - "#else\n" - "typedef char *__va_list;\n" - "#endif"; -}; - -/* * a missing semi-colon at the end of the statsswtch structure definition. */ fix = { diff --git a/fixincludes/tests/base/iso/setjmp_iso.h b/fixincludes/tests/base/iso/setjmp_iso.h deleted file mode 100644 --- a/fixincludes/tests/base/iso/setjmp_iso.h +++ /dev/null @@ -1,14 +0,0 @@ -/* DO NOT EDIT THIS FILE. - - It has been auto-edited by fixincludes from: - - "fixinc/tests/inc/iso/setjmp_iso.h" - - This had to be done to correct non-standard usages in the - original, manufacturer supplied header file. */ - - - -#if defined( SOLARIS_LONGJMP_NORETURN_CHECK ) -extern void longjmp(jmp_buf, int) __attribute__ ((__noreturn__)); -#endif /* SOLARIS_LONGJMP_NORETURN_CHECK */ diff --git a/fixincludes/tests/base/pthread.h b/fixincludes/tests/base/pthread.h --- a/fixincludes/tests/base/pthread.h +++ b/fixincludes/tests/base/pthread.h @@ -96,56 +96,12 @@ extern int __sigsetjmp (struct __jmp_buf #endif /* PTHREAD_INCOMPLETE_STRUCT_ARGUMENT_CHECK */ -#if defined( SOLARIS_MUTEX_INIT_2_CHECK ) -#ident "@(#)pthread.h 1.26 98/04/12 SMI" -#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG) -#define PTHREAD_MUTEX_INITIALIZER {{{0},0}, {{{0}}}, 0} -#else -#define PTHREAD_MUTEX_INITIALIZER {{{0},0}, {{{0}}}, {0}} -#endif -#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG) -#define PTHREAD_COND_INITIALIZER {{{0}, 0}, 0} /* DEFAULTCV */ -#else -#define PTHREAD_COND_INITIALIZER {{{0}, 0}, {0}} /* DEFAULTCV */ -#endif -#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG) -#define PTHREAD_MUTEX_INITIALIZER /* = DEFAULTMUTEX */ \ - {{0, 0, 0, DEFAULT_TYPE, _MUTEX_MAGIC}, {{{0}}}, 0} -#else -#define PTHREAD_MUTEX_INITIALIZER /* = DEFAULTMUTEX */ \ - {{0, 0, 0, DEFAULT_TYPE, _MUTEX_MAGIC}, {{{0}}}, {0}} -#endif -#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG) -#define PTHREAD_COND_INITIALIZER /* = DEFAULTCV */ \ - {{{0, 0, 0, 0}, DEFAULT_TYPE, _COND_MAGIC}, 0} -#else -#define PTHREAD_COND_INITIALIZER /* = DEFAULTCV */ \ - {{{0, 0, 0, 0}, DEFAULT_TYPE, _COND_MAGIC}, {0}} -#endif -#endif /* SOLARIS_MUTEX_INIT_2_CHECK */ - - #if defined( SOLARIS_ONCE_INIT_1_CHECK ) #pragma ident "@(#)pthread.h 1.37 04/09/28 SMI" -#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG) #define PTHREAD_ONCE_INIT {{0, 0, 0, PTHREAD_ONCE_NOTDONE}} -#else -#define PTHREAD_ONCE_INIT {{{0}, {0}, {0}, {PTHREAD_ONCE_NOTDONE}}} -#endif #endif /* SOLARIS_ONCE_INIT_1_CHECK */ -#if defined( SOLARIS_ONCE_INIT_2_CHECK ) -#ident "@(#)pthread.h 1.26 98/04/12 SMI" -#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG) -#define PTHREAD_ONCE_INIT {{0, 0, 0, PTHREAD_ONCE_NOTDONE}} -#else -#define PTHREAD_ONCE_INIT {{{0}, {0}, {0}, {PTHREAD_ONCE_NOTDONE}}} -#endif - -#endif /* SOLARIS_ONCE_INIT_2_CHECK */ - - #if defined( SOLARIS_RWLOCK_INIT_1_CHECK ) #ident "@(#)pthread.h 1.26 98/04/12 SMI" #if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG) diff --git a/fixincludes/tests/base/sys/int_types.h b/fixincludes/tests/base/sys/int_types.h deleted file mode 100644 --- a/fixincludes/tests/base/sys/int_types.h +++ /dev/null @@ -1,20 +0,0 @@ -/* DO NOT EDIT THIS FILE. - - It has been auto-edited by fixincludes from: - - "fixinc/tests/inc/sys/int_types.h" - - This had to be done to correct non-standard usages in the - original, manufacturer supplied header file. */ - - - -#if defined( SOLARIS_INT_TYPES_CHECK ) -#if (defined(_STDC_C99) || !defined(_STRICT_STDC) || defined(__GNUC__)) && !defined(_NO_LONGLONG) -typedef long long int64_t; -#endif - -#if defined(_LP64) || ((defined(_STDC_C99) || !defined(_STRICT_STDC) || defined(__GNUC__)) && !defined(_NO_LONGLONG)) -typedef int64_t intmax_t; -#endif -#endif /* SOLARIS_INT_TYPES_CHECK */ diff --git a/fixincludes/tests/base/sys/va_list.h b/fixincludes/tests/base/sys/va_list.h deleted file mode 100644 --- a/fixincludes/tests/base/sys/va_list.h +++ /dev/null @@ -1,22 +0,0 @@ -/* DO NOT EDIT THIS FILE. - - It has been auto-edited by fixincludes from: - - "fixinc/tests/inc/sys/va_list.h" - - This had to be done to correct non-standard usages in the - original, manufacturer supplied header file. */ - - - -#if defined( SOLARIS_SYS_VA_LIST_CHECK ) -#ifdef __GNUC__ -typedef __builtin_va_list __va_list; -#else -#if defined(__STDC__) && !defined(__ia64) -typedef void *__va_list; -#else -typedef char *__va_list; -#endif -#endif -#endif /* SOLARIS_SYS_VA_LIST_CHECK */ diff --git a/gcc/config.gcc b/gcc/config.gcc --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -246,7 +246,6 @@ md_file= case ${target} in picochip-* \ | score-* \ - | *-*-solaris2.9* \ ) if test "x$enable_obsolete" != xyes; then echo "*** Configuration ${target} is obsolete." >&2 @@ -287,8 +286,8 @@ case ${target} in | *-*-rtemsaout* \ | *-*-rtemscoff* \ | *-*-solaris2 \ - | *-*-solaris2.[0-8] \ - | *-*-solaris2.[0-8].* \ + | *-*-solaris2.[0-9] \ + | *-*-solaris2.[0-9].* \ | *-*-sysv* \ | vax-*-vms* \ ) @@ -810,15 +809,8 @@ case ${target} in # 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" - case ${target} in - *-*-solaris2.1[0-9]*) - sol2_tm_file="${sol2_tm_file} sol2-10.h" - use_gcc_stdint=wrap - ;; - *) - use_gcc_stdint=provide - ;; - esac + sol2_tm_file="${sol2_tm_file} sol2-10.h" + use_gcc_stdint=wrap if test x$gnu_ld = xyes; then tm_file="usegld.h ${tm_file}" fi @@ -1526,42 +1518,27 @@ i[34567]86-*-solaris2* | x86_64-*-solari 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*. - case ${target} in - *-*-solaris2.9*) - # Solaris 9/x86 cannot execute SSE/SSE2 instructions by default. - with_arch_32=${with_arch_32:-pentiumpro} - ;; - *) - with_arch_32=${with_arch_32:-pentium4} - ;; - esac + with_arch_32=${with_arch_32:-pentium4} with_tune_32=${with_tune_32:-generic} - case ${target} in - *-*-solaris2.9*) - tm_file="${tm_file} i386/sol2-9.h" - ;; - *-*-solaris2.1[0-9]*) - tm_file="${tm_file} i386/x86-64.h i386/sol2-bi.h sol2-bi.h" - tm_defines="${tm_defines} TARGET_BI_ARCH=1" - tmake_file="$tmake_file i386/t-sol2-64" - need_64bit_isa=yes - if test x$with_cpu = x; then - if test x$with_cpu_64 = x; then - with_cpu_64=generic - fi - else - case " $x86_cpus $x86_archs $x86_64_archs " in - *" $with_cpu "*) - ;; - *) - echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2 - echo "$x86_cpus $x86_archs $x86_64_archs" 1>&2 - exit 1 - ;; - esac + tm_file="${tm_file} i386/x86-64.h i386/sol2-bi.h sol2-bi.h" + tm_defines="${tm_defines} TARGET_BI_ARCH=1" + tmake_file="$tmake_file i386/t-sol2-64" + need_64bit_isa=yes + if test x$with_cpu = x; then + if test x$with_cpu_64 = x; then + with_cpu_64=generic fi - ;; - esac + else + case " $x86_cpus $x86_archs $x86_64_archs " in + *" $with_cpu "*) + ;; + *) + echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2 + echo "$x86_cpus $x86_archs $x86_64_archs" 1>&2 + exit 1 + ;; + esac + fi ;; i[4567]86-wrs-vxworks|i[4567]86-wrs-vxworksae) tm_file="${tm_file} i386/unix.h i386/att.h elfos.h vx-common.h" diff --git a/gcc/config/i386/sol2-9.h b/gcc/config/i386/sol2-9.h deleted file mode 100644 --- a/gcc/config/i386/sol2-9.h +++ /dev/null @@ -1,23 +0,0 @@ -/* Target definitions for GCC for Intel 80386 running Solaris 9 - Copyright (C) 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 9 only guarantees 4-byte stack alignment as required by the i386 - psABI, so realign it as necessary for SSE instructions. */ -#undef STACK_REALIGN_DEFAULT -#define STACK_REALIGN_DEFAULT 1 diff --git a/gcc/configure.ac b/gcc/configure.ac --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -2314,35 +2314,7 @@ gcc_GAS_CHECK_FEATURE([.nsubspa comdat], gcc_GAS_CHECK_FEATURE([.hidden], gcc_cv_as_hidden, [elf,2,13,0],, [ .hidden foobar -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* | 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 - .hidden hidden -hidden: -.globl default - .set default,hidden -EOF - if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \ - && $gcc_cv_objdump -t conftest.o 2>/dev/null | \ - grep '\.hidden default' > /dev/null; then - gcc_cv_as_hidden=no - else - gcc_cv_as_hidden=yes - fi - else - # Assume bug is present if objdump is missing. - gcc_cv_as_hidden=no - fi - ;; - *) - gcc_cv_as_hidden=yes - ;; -esac]) +foobar:]) case "${target}" in *-*-darwin*) # Darwin as has some visibility support, though with a different syntax. @@ -2458,7 +2430,7 @@ else hppa64*-*-hpux* | ia64*-*-hpux*) gcc_cv_ld_hidden=yes ;; - *-*-solaris2.9* | *-*-solaris2.1[0-9]*) + *-*-solaris2.1[0-9]*) # Support for .hidden in Sun ld appeared in Solaris 9 FCS, but # .symbolic was only added in Solaris 9 12/02. gcc_cv_ld_hidden=yes @@ -3344,32 +3316,7 @@ case "$target" in # TLS on x86 was only introduced in Solaris 9 4/04, replacing the earlier # Sun style that Sun ld and GCC don't support any longer. *-*-solaris2.*) - AC_MSG_CHECKING(linker and ld.so.1 TLS support) - ld_tls_support=no - # Check ld and ld.so.1 TLS support. - if echo "$ld_ver" | grep GNU > /dev/null; then - # Assume all interesting versions of GNU ld have TLS support. - # FIXME: still need ld.so.1 support, i.e. ld version checks below. - ld_tls_support=yes - else - case "$target" in - # Solaris 9/x86 ld has GNU style TLS support since version 1.374. - i?86-*-solaris2.9) - min_tls_ld_vers_minor=374 - ;; - # Solaris 9/SPARC and Solaris 10+ ld have TLS support since FCS. - sparc*-*-solaris2.9 | *-*-solaris2.1[[0-9]]*) - min_tls_ld_vers_minor=343 - ;; - esac - if test "$ld_vers_major" -gt 1 || \ - test "$ld_vers_minor" -ge "$min_tls_ld_vers_minor"; then - ld_tls_support=yes - else - set_have_as_tls=no - fi - fi - AC_MSG_RESULT($ld_tls_support) + ld_tls_support=yes save_LIBS="$LIBS" save_LDFLAGS="$LDFLAGS" @@ -4436,14 +4383,7 @@ if test x"$insn" != x; then gcc_GAS_CHECK_FEATURE([--gstabs option], gcc_cv_as_gstabs_flag, - [elf,2,11,0], [--gstabs], [$insn], - [# The native Solaris 9/Intel assembler doesn't understand --gstabs - # and warns about it, but still exits successfully. So check for - # this. - if AC_TRY_COMMAND([$gcc_cv_as --gstabs -o conftest.o conftest.s 2>&1 | grep -i warning > /dev/null]) - then : - else gcc_cv_as_gstabs_flag=yes - fi], + [elf,2,11,0], [--gstabs], [$insn],, [AC_DEFINE(HAVE_AS_GSTABS_DEBUG_FLAG, 1, [Define if your assembler supports the --gstabs option.])]) diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi --- a/gcc/doc/install.texi +++ b/gcc/doc/install.texi @@ -3110,8 +3110,6 @@ information have to. @item @uref{#ix86-x-linux,,i?86-*-linux*} @item -@uref{#ix86-x-solaris289,,i?86-*-solaris2.9} -@item @uref{#ix86-x-solaris210,,i?86-*-solaris2.10} @item @uref{#ia64-x-linux,,ia64-*-linux} @@ -3676,27 +3674,6 @@ found on @uref{http://www.bitwizard.nl/s @html <hr /> @end html -@anchor{ix86-x-solaris29} -@heading i?86-*-solaris2.9 -The Sun assembler in Solaris 9 has several bugs and limitations. -While GCC works around them, several features are missing, so it is -@c FIXME: which ones? -recommended to use the GNU assembler instead. There is no bundled -version, but the current version, from GNU binutils 2.22, is known to -work. - -Solaris@tie{}2/x86 doesn't support the execution of SSE/SSE2 instructions -before Solaris@tie{}9 4/04, even if the CPU supports them. Programs will -receive @code{SIGILL} if they try. The fix is available both in -Solaris@tie{}9 Update@tie{}6 and kernel patch 112234-12 or newer. To -avoid this problem, -@option{-march} defaults to @samp{pentiumpro} on Solaris 9. If -you have the patch installed, you can configure GCC with an appropriate -@option{--with-arch} option, but need GNU @command{as} for SSE2 support. - -@html -<hr /> -@end html @anchor{ix86-x-solaris210} @heading i?86-*-solaris2.10 Use this for Solaris 10 or later on x86 and x86-64 systems. Starting @@ -4250,10 +4227,9 @@ supported as cross-compilation target on @c alone is too unspecific and must be avoided. @anchor{x-x-solaris2} @heading *-*-solaris2* -Support for Solaris 9 has been obsoleted in GCC 4.9, but can still be -enabled by configuring with @option{--enable-obsolete}. Support will be -removed in GCC 4.10. Support for Solaris 8 has removed in GCC 4.8. -Support for Solaris 7 has been removed in GCC 4.6. +Support for Solaris 9 has been removed in GCC 4.10. Support for Solaris +8 has been removed in GCC 4.8. Support for Solaris 7 has been removed +in GCC 4.6. Sun does not ship a C compiler with Solaris 2 before Solaris 10, though you can download the Sun Studio compilers for free. In Solaris 10 and @@ -4333,25 +4309,6 @@ program which is used only by the GCC te causes the @command{expect} program to miss anticipated output, extra testsuite failures appear. -There are patches for Solaris 9 (117171-11 or newer for -SPARC, 117172-11 or newer for Intel) that address this problem. - -Thread-local storage (TLS) is supported in Solaris@tie{}9, but requires -some patches. The @samp{libthread} patches provide the -@code{__tls_get_addr} (SPARC, 64-bit x86) resp.@ @code{___tls_get_addr} -(32-bit x86) functions. On Solaris@tie{}9, the necessary support -on SPARC is present since FCS, while 114432-05 or newer is required on -Intel. Additionally, on Solaris@tie{}9/x86, patch 113986-02 or newer is -required for the Sun @command{ld} and runtime linker (@command{ld.so.1}) -support, while Solaris@tie{}9/SPARC works since FCS. The linker -patches must be installed even if GNU @command{ld} is used. Sun -@command{as} in Solaris@tie{}9 doesn't support the necessary -relocations, so GNU @command{as} must be used. The @command{configure} -script checks for those prerequisites and automatically enables TLS -support if they are met. Although those minimal patch versions should -work, it is recommended to use the latest patch versions which include -additional bug fixes. - @html <hr /> @end html diff --git a/gcc/testsuite/gcc.c-torture/compile/pr28865.c b/gcc/testsuite/gcc.c-torture/compile/pr28865.c --- a/gcc/testsuite/gcc.c-torture/compile/pr28865.c +++ b/gcc/testsuite/gcc.c-torture/compile/pr28865.c @@ -1,5 +1,3 @@ -/* { dg-xfail-if "PR target/60602" { sparc*-*-solaris2.9* && { ! gas } } { "-O0" } } */ - struct var_len { int field1; diff --git a/gcc/testsuite/gcc.dg/c99-stdint-6.c b/gcc/testsuite/gcc.dg/c99-stdint-6.c --- a/gcc/testsuite/gcc.dg/c99-stdint-6.c +++ b/gcc/testsuite/gcc.dg/c99-stdint-6.c @@ -2,7 +2,6 @@ with any system <inttypes.h> header. */ /* { dg-do compile { target inttypes_types } } */ /* { dg-options "-std=iso9899:1999 -pedantic-errors" } */ -/* { dg-options "-std=gnu99 -pedantic-errors -DNO_FAST_TYPES" { target *-*-solaris2.9* } } */ #include <inttypes.h> #ifndef SIGNAL_SUPPRESS diff --git a/gcc/testsuite/gcc.dg/lto/20090210_0.c b/gcc/testsuite/gcc.dg/lto/20090210_0.c --- a/gcc/testsuite/gcc.dg/lto/20090210_0.c +++ b/gcc/testsuite/gcc.dg/lto/20090210_0.c @@ -2,7 +2,6 @@ /* { dg-require-effective-target fpic } */ /* { dg-suppress-ld-options {-fPIC} } */ /* { dg-require-effective-target tls_runtime } */ -/* { dg-extra-ld-options "-pthread" { target *-*-solaris2.9 } } */ int foo (int x) { return x; diff --git a/gcc/testsuite/gcc.dg/torture/pr47917.c b/gcc/testsuite/gcc.dg/torture/pr47917.c --- a/gcc/testsuite/gcc.dg/torture/pr47917.c +++ b/gcc/testsuite/gcc.dg/torture/pr47917.c @@ -1,6 +1,5 @@ /* { dg-do run } */ /* { dg-options "-std=c99" } */ -/* { dg-options "-std=c99 -D_XOPEN_SOURCE=500" { target *-*-solaris2.9 } } */ /* { dg-options "-std=gnu99" { target *-*-hpux* } } */ /* { dg-additional-options "-D__USE_MINGW_ANSI_STDIO=1" { target *-*-mingw* } } */ /* { dg-xfail-run-if "no C99 snprintf function" { *-*-hpux10* } } */ diff --git a/gcc/testsuite/gcc.dg/vect/tree-vect.h b/gcc/testsuite/gcc.dg/vect/tree-vect.h --- a/gcc/testsuite/gcc.dg/vect/tree-vect.h +++ b/gcc/testsuite/gcc.dg/vect/tree-vect.h @@ -41,11 +41,6 @@ check_vect (void) want_level = 1, want_c = bit_SSSE3, want_d = 0; # else want_level = 1, want_c = 0, want_d = bit_SSE2; -# if defined(__sun__) && defined(__svr4__) - /* Before Solaris 9 4/04, trying to execute an SSE2 instruction gives - SIGILL even if the CPU can handle them. */ - asm volatile ("unpcklpd %xmm0,%xmm2"); -# endif # endif if (!__get_cpuid (want_level, &a, &b, &c, &d) diff --git a/gcc/testsuite/gcc.target/i386/pr22076.c b/gcc/testsuite/gcc.target/i386/pr22076.c --- a/gcc/testsuite/gcc.target/i386/pr22076.c +++ b/gcc/testsuite/gcc.target/i386/pr22076.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fomit-frame-pointer -flax-vector-conversions -mmmx" } */ -/* { dg-options "-O2 -fomit-frame-pointer -flax-vector-conversions -mmmx -mno-vect8-ret-in-mem" { target i?86-*-solaris2.9 *-*-vxworks* } } */ +/* { dg-options "-O2 -fomit-frame-pointer -flax-vector-conversions -mmmx -mno-vect8-ret-in-mem" { target *-*-vxworks* } } */ #include <mmintrin.h> diff --git a/gcc/testsuite/gcc.target/i386/pr22152.c b/gcc/testsuite/gcc.target/i386/pr22152.c --- a/gcc/testsuite/gcc.target/i386/pr22152.c +++ b/gcc/testsuite/gcc.target/i386/pr22152.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-O2 -msse2 -mtune=core2" } */ -/* { dg-additional-options "-mno-vect8-ret-in-mem" { target i?86-*-solaris2.9 *-*-vxworks* } } */ +/* { dg-additional-options "-mno-vect8-ret-in-mem" { target *-*-vxworks* } } */ /* { dg-additional-options "-mabi=sysv" { target x86_64-*-mingw* } } */ #include <mmintrin.h> diff --git a/gcc/testsuite/gcc.target/i386/sse-os-support.h b/gcc/testsuite/gcc.target/i386/sse-os-support.h --- a/gcc/testsuite/gcc.target/i386/sse-os-support.h +++ b/gcc/testsuite/gcc.target/i386/sse-os-support.h @@ -1,55 +1,8 @@ -#if defined(__sun__) && defined(__svr4__) -/* Make sure sigaction() is declared even with -std=c99. */ -#define __EXTENSIONS__ -#include <signal.h> -#include <ucontext.h> - -static volatile sig_atomic_t sigill_caught; - -static void -sigill_hdlr (int sig __attribute((unused)), - siginfo_t *sip __attribute__((unused)), - ucontext_t *ucp) -{ - sigill_caught = 1; - /* Set PC to the instruction after the faulting one to skip over it, - otherwise we enter an infinite loop. */ - ucp->uc_mcontext.gregs[EIP] += 4; - setcontext (ucp); -} -#endif - -/* Check if the OS supports executing SSE instructions. This function is - only used in sse-check.h, sse2-check.h, and sse3-check.h so far since - Solaris 8 and 9 won't run on newer CPUs anyway. */ +/* Check if the OS supports executing SSE instructions. */ static int sse_os_support (void) { -#if defined(__sun__) && defined(__svr4__) - /* Solaris 2 before Solaris 9 4/04 cannot execute SSE instructions - even if the CPU supports them. Programs receive SIGILL instead, so - check for that at runtime. */ - - struct sigaction act, oact; - - act.sa_handler = sigill_hdlr; - sigemptyset (&act.sa_mask); - /* Need to set SA_SIGINFO so a ucontext_t * is passed to the handler. */ - act.sa_flags = SA_SIGINFO; - sigaction (SIGILL, &act, &oact); - - /* We need a single SSE instruction here so the handler can safely skip - over it. */ - __asm__ volatile ("movss %xmm2,%xmm1"); - - sigaction (SIGILL, &oact, NULL); - - if (sigill_caught) - exit (0); - else - return 1; -#else + /* All currently supported OSes do. */ return 1; -#endif /* __sun__ && __svr4__ */ } diff --git a/gcc/testsuite/gcc.target/i386/vect8-ret.c b/gcc/testsuite/gcc.target/i386/vect8-ret.c --- a/gcc/testsuite/gcc.target/i386/vect8-ret.c +++ b/gcc/testsuite/gcc.target/i386/vect8-ret.c @@ -1,5 +1,5 @@ /* { dg-do compile { target ia32 } } */ -/* { dg-options "-mmmx" { target i?86-*-solaris2.9 *-*-vxworks* } } */ +/* { dg-options "-mmmx" { target *-*-vxworks* } } */ /* { dg-options "-mmmx -mvect8-ret-in-mem" } */ #include <mmintrin.h> diff --git a/gcc/testsuite/gfortran.dg/erf_3.F90 b/gcc/testsuite/gfortran.dg/erf_3.F90 --- a/gcc/testsuite/gfortran.dg/erf_3.F90 +++ b/gcc/testsuite/gfortran.dg/erf_3.F90 @@ -1,7 +1,7 @@ ! { dg-do run { xfail spu-*-* ia64-*-linux* } } ! { dg-options "-fno-range-check -ffree-line-length-none -O0" } ! { dg-add-options ieee } -! { dg-skip-if "PR libfortran/59313" { sparc*-*-solaris2.9* hppa*-*-hpux* } } +! { dg-skip-if "PR libfortran/59313" { hppa*-*-hpux* } } ! ! Check that simplification functions and runtime library agree on ERF, ! ERFC and ERFC_SCALED, for quadruple-precision. diff --git a/gcc/testsuite/gfortran.dg/fmt_en.f90 b/gcc/testsuite/gfortran.dg/fmt_en.f90 --- a/gcc/testsuite/gfortran.dg/fmt_en.f90 +++ b/gcc/testsuite/gfortran.dg/fmt_en.f90 @@ -182,5 +182,5 @@ contains end subroutine end program -! { dg-final { scan-file fmt_en.res "All kinds rounded to nearest" { xfail { i?86-*-solaris2.9* hppa*-*-hpux* } } } } +! { dg-final { scan-file fmt_en.res "All kinds rounded to nearest" { xfail hppa*-*-hpux* } } } ! { dg-final { cleanup-saved-temps } } diff --git a/gcc/testsuite/gfortran.dg/round_4.f90 b/gcc/testsuite/gfortran.dg/round_4.f90 --- a/gcc/testsuite/gfortran.dg/round_4.f90 +++ b/gcc/testsuite/gfortran.dg/round_4.f90 @@ -1,6 +1,6 @@ ! { dg-do run } ! { dg-add-options ieee } -! { dg-skip-if "PR libfortran/58015" { *-*-solaris2.9* hppa*-*-hpux* } } +! { dg-skip-if "PR libfortran/58015" { hppa*-*-hpux* } } ! ! PR fortran/35862 ! diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -593,7 +593,7 @@ proc add_options_for_tls { flags } { # libthread, so always pass -pthread for native TLS. Same for AIX. # Need to duplicate native TLS check from # check_effective_target_tls_native to avoid recursion. - if { ([istarget *-*-solaris2.9*] || [istarget powerpc-ibm-aix*]) && + if { ([istarget powerpc-ibm-aix*]) && [check_no_messages_and_pattern tls_native "!emutls" assembly { __thread int i; int f (void) { return i; } diff --git a/libcpp/lex.c b/libcpp/lex.c --- a/libcpp/lex.c +++ b/libcpp/lex.c @@ -263,11 +263,9 @@ search_line_acc_char (const uchar *s, co } } -/* Disable on Solaris 2/x86 until the following problems can be properly +/* Disable on Solaris 2/x86 until the following problem can be properly autoconfed: - The Solaris 9 assembler cannot assemble SSE4.2 insns. - Before Solaris 9 Update 6, SSE insns cannot be executed. The Solaris 10+ assembler tags objects with the instruction set extensions used, so SSE4.2 executables cannot run on machines that don't support that extension. */ diff --git a/libgcc/config/i386/crtfastmath.c b/libgcc/config/i386/crtfastmath.c --- a/libgcc/config/i386/crtfastmath.c +++ b/libgcc/config/i386/crtfastmath.c @@ -70,28 +70,6 @@ set_fast_math (void) { unsigned int mxcsr; -#if defined __sun__ && defined __svr4__ - /* Solaris 2 before Solaris 9 4/04 cannot execute SSE instructions even - if the CPU supports them. Programs receive SIGILL instead, so check - for that at runtime. */ - struct sigaction act, oact; - - act.sa_handler = sigill_hdlr; - sigemptyset (&act.sa_mask); - /* Need to set SA_SIGINFO so a ucontext_t * is passed to the handler. */ - act.sa_flags = SA_SIGINFO; - sigaction (SIGILL, &act, &oact); - - /* We need a single SSE instruction here so the handler can safely skip - over it. */ - __asm__ volatile ("movaps %xmm0,%xmm0"); - - sigaction (SIGILL, &oact, NULL); - - if (sigill_caught) - return; -#endif /* __sun__ && __svr4__ */ - if (edx & bit_FXSAVE) { /* Check if DAZ is available. */ diff --git a/libgcc/config/i386/sol2-unwind.h b/libgcc/config/i386/sol2-unwind.h --- a/libgcc/config/i386/sol2-unwind.h +++ b/libgcc/config/i386/sol2-unwind.h @@ -144,26 +144,8 @@ x86_fallback_frame_state (struct _Unwind mcontext_t *mctx; long new_cfa; - if (/* Solaris 9 - single-threaded - ---------------------------- - <sigacthandler+16>: mov 0x244(%ebx),%ecx - <sigacthandler+22>: mov 0x8(%ebp),%eax - <sigacthandler+25>: mov (%ecx,%eax,4),%ecx - <sigacthandler+28>: pushl 0x10(%ebp) - <sigacthandler+31>: pushl 0xc(%ebp) - <sigacthandler+34>: push %eax - <sigacthandler+35>: call *%ecx - <sigacthandler+37>: add $0xc,%esp <--- PC - <sigacthandler+40>: pushl 0x10(%ebp) */ - (*(unsigned long *)(pc - 21) == 0x2448b8b - && *(unsigned long *)(pc - 17) == 0x458b0000 - && *(unsigned long *)(pc - 13) == 0x810c8b08 - && *(unsigned long *)(pc - 9) == 0xff1075ff - && *(unsigned long *)(pc - 5) == 0xff500c75 - && *(unsigned long *)(pc - 1) == 0xcc483d1) - - || /* Solaris 9 - multi-threaded, Solaris 10 - --------------------------------------- + if (/* Solaris 10 + ----------- <__sighndlr+0>: push %ebp <__sighndlr+1>: mov %esp,%ebp <__sighndlr+3>: pushl 0x10(%ebp) diff --git a/libgcc/config/sparc/sol2-unwind.h b/libgcc/config/sparc/sol2-unwind.h --- a/libgcc/config/sparc/sol2-unwind.h +++ b/libgcc/config/sparc/sol2-unwind.h @@ -36,44 +36,6 @@ see the files COPYING3 and COPYING.RUNTI static int sparc64_is_sighandler (unsigned int *pc, void *cfa, int *nframes) { - if (/* Solaris 9 - single-threaded - ---------------------------- - The pattern changes slightly in different versions of the - operating system, so we skip the comparison against pc[-6] for - Solaris 9. - - <sigacthandler+24>: sra %i0, 0, %l1 - - Solaris 9 5/02: - <sigacthandler+28>: ldx [ %o2 + 0xf68 ], %g5 - Solaris 9 9/05: - <sigacthandler+28>: ldx [ %o2 + 0xe50 ], %g5 - - <sigacthandler+32>: sllx %l1, 3, %g4 - <sigacthandler+36>: mov %l1, %o0 - <sigacthandler+40>: ldx [ %g4 + %g5 ], %l0 - <sigacthandler+44>: call %l0 - <sigacthandler+48>: mov %i2, %o2 - <sigacthandler+52>: cmp %l1, 8 <--- PC */ - ( pc[-7] == 0xa33e2000 - /* skip pc[-6] */ - && pc[-5] == 0x892c7003 - && pc[-4] == 0x90100011 - && pc[-3] == 0xe0590005 - && pc[-2] == 0x9fc40000 - && pc[-1] == 0x9410001a - && pc[ 0] == 0x80a46008)) - { - /* We need to move up one frame: - - <signal handler> <-- context->cfa - sigacthandler - <kernel> - */ - *nframes = 1; - return 1; - } - if (/* Solaris 8+ - multi-threaded ---------------------------- <__sighndlr>: save %sp, -176, %sp @@ -101,19 +63,35 @@ sparc64_is_sighandler (unsigned int *pc, = *(unsigned int *)(*(unsigned long *)(cfa + 15*8) - 4); if (cuh_pattern == 0x92100019) - /* This matches the call_user_handler pattern for Solaris 11. - This is the same setup as for Solaris 9, see below. */ + /* This matches the call_user_handler pattern in Solaris 11 + libc.so.1: + + <call_user_handler+864>: mov %i1, %o1 + <call_user_handler+868>: call __sighndlr + + This is the same setup as for Solaris 10, see below. */ *nframes = 3; else if (cuh_pattern == 0xd25fa7ef) { - /* This matches the call_user_handler pattern for Solaris 10. + /* This matches the call_user_handler pattern in Solaris 10 + libc.so.1: + + <call_user_handler+988>: ldx [ %fp + 0x7ef ], %o1 + <call_user_handler+992>: call __sighndlr + There are 2 cases so we look for the return address of the caller's caller frame in order to do more pattern matching. */ unsigned long sah_address = *(unsigned long *)(cfa + 176 + 15*8); if (sah_address && *(unsigned int *)(sah_address - 4) == 0x92100019) - /* This is the same setup as for Solaris 9, see below. */ + /* We need to move up three frames: + + <signal handler> <-- context->cfa + __sighndlr + call_user_handler + sigacthandler + <kernel> */ *nframes = 3; else /* The sigacthandler frame isn't present in the chain. @@ -121,22 +99,19 @@ sparc64_is_sighandler (unsigned int *pc, <signal handler> <-- context->cfa __sighndlr - call_user_handler frame - <kernel> - */ + call_user_handler + <kernel> */ *nframes = 2; } - else if (cuh_pattern == 0x9410001a || cuh_pattern == 0x94100013) - /* This matches the call_user_handler pattern for Solaris 9. - We need to move up three frames: + else if (cuh_pattern == 0x9410001a || cuh_pattern == 0x9410001b) + /* This matches the call_user_handler pattern in Solaris 9 + libthread.so.1: - <signal handler> <-- context->cfa - __sighndlr - call_user_handler - sigacthandler - <kernel> - */ + <call_user_handler+600>: mov %i2, %o2 + <call_user_handler+604>: call __sighndlr + + This is the same setup as for Solaris 10, see above. */ *nframes = 3; return 1; @@ -178,42 +153,6 @@ sparc64_frob_update_context (struct _Unw static int sparc_is_sighandler (unsigned int *pc, void *cfa, int *nframes) { - if (/* Solaris 9 - single-threaded - ---------------------------- - The pattern changes slightly in different versions of the operating - system, so we skip the comparison against pc[-6]. - - <sigacthandler+16>: add %o1, %o7, %o3 - <sigacthandler+20>: mov %i1, %o1 - - <sigacthandler+24>: ld [ %o3 + <offset> ], %o2 - - <sigacthandler+28>: sll %i0, 2, %o0 - <sigacthandler+32>: ld [ %o0 + %o2 ], %l0 - <sigacthandler+36>: mov %i0, %o0 - <sigacthandler+40>: call %l0 - <sigacthandler+44>: mov %i2, %o2 - <sigacthandler+48>: cmp %i0, 8 <--- PC */ - pc[-8] == 0x9602400f - && pc[-7] == 0x92100019 - /* skip pc[-6] */ - && pc[-5] == 0x912e2002 - && pc[-4] == 0xe002000a - && pc[-3] == 0x90100018 - && pc[-2] == 0x9fc40000 - && pc[-1] == 0x9410001a - && pc[ 0] == 0x80a62008) - { - /* We need to move up one frame: - - <signal handler> <-- context->cfa - sigacthandler - <kernel> - */ - *nframes = 1; - return 1; - } - if(/* Solaris 8+ - multi-threaded ---------------------------- <__sighndlr>: save %sp, -96, %sp @@ -241,19 +180,35 @@ sparc_is_sighandler (unsigned int *pc, v = *(unsigned int *)(*(unsigned int *)(cfa + 15*4) - 4); if (cuh_pattern == 0x92100019) - /* This matches the call_user_handler pattern for Solaris 11. - This is the same setup as for Solaris 9, see below. */ + /* This matches the call_user_handler pattern in Solaris 11 + libc.so.1: + + <call_user_handler+876>: mov %i1, %o1 + <call_user_handler+880>: call __sighndlr + + This is the same setup as for Solaris 10, see below. */ *nframes = 3; else if (cuh_pattern == 0xd407a04c) { - /* This matches the call_user_handler pattern for Solaris 10. + /* This matches the call_user_handler pattern in Solaris 10 + libc.so.1: + + <call_user_handler+948>: ld [ %fp + 0x4c ], %o2 + <call_user_handler+952>: call __sighndlr + There are 2 cases so we look for the return address of the caller's caller frame in order to do more pattern matching. */ unsigned int sah_address = *(unsigned int *)(cfa + 96 + 15*4); if (sah_address && *(unsigned int *)(sah_address - 4) == 0x92100019) - /* This is the same setup as for Solaris 9, see below. */ + /* We need to move up three frames: + + <signal handler> <-- context->cfa + __sighndlr + call_user_handler + sigacthandler + <kernel> */ *nframes = 3; else /* The sigacthandler frame isn't present in the chain. @@ -261,22 +216,19 @@ sparc_is_sighandler (unsigned int *pc, v <signal handler> <-- context->cfa __sighndlr - call_user_handler frame - <kernel> - */ + call_user_handler + <kernel> */ *nframes = 2; } else if (cuh_pattern == 0x9410001a || cuh_pattern == 0x9410001b) - /* This matches the call_user_handler pattern for Solaris 9. - We need to move up three frames: + /* This matches the call_user_handler pattern in Solaris 9 + libthread.so.1: - <signal handler> <-- context->cfa - __sighndlr - call_user_handler - sigacthandler - <kernel> - */ + <call_user_handler+560>: mov %i2, %o2 + <call_user_handler+564>: call __sighndlr + + This is the same setup as for Solaris 10, see above. */ *nframes = 3; return 1; diff --git a/libgfortran/config/fpu-387.h b/libgfortran/config/fpu-387.h --- a/libgfortran/config/fpu-387.h +++ b/libgfortran/config/fpu-387.h @@ -27,26 +27,6 @@ see the files COPYING3 and COPYING.RUNTI #include "cpuid.h" #endif -#if defined(__sun__) && defined(__svr4__) -#include <signal.h> -#include <ucontext.h> - -static volatile sig_atomic_t sigill_caught; - -static void -sigill_hdlr (int sig __attribute((unused)), - siginfo_t *sip __attribute__((unused)), - ucontext_t *ucp) -{ - sigill_caught = 1; - /* Set PC to the instruction after the faulting one to skip over it, - otherwise we enter an infinite loop. 3 is the size of the movaps - instruction. */ - ucp->uc_mcontext.gregs[EIP] += 3; - setcontext (ucp); -} -#endif - static int has_sse (void) { @@ -56,32 +36,6 @@ has_sse (void) if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx)) return 0; -#if defined(__sun__) && defined(__svr4__) - /* Solaris 2 before Solaris 9 4/04 cannot execute SSE instructions even - if the CPU supports them. Programs receive SIGILL instead, so check - for that at runtime. */ - - if (edx & bit_SSE) - { - struct sigaction act, oact; - - act.sa_handler = sigill_hdlr; - sigemptyset (&act.sa_mask); - /* Need to set SA_SIGINFO so a ucontext_t * is passed to the handler. */ - act.sa_flags = SA_SIGINFO; - sigaction (SIGILL, &act, &oact); - - /* We need a single SSE instruction here so the handler can safely skip - over it. */ - __asm__ __volatile__ ("movaps\t%xmm0,%xmm0"); - - sigaction (SIGILL, &oact, NULL); - - if (sigill_caught) - return 0; - } -#endif /* __sun__ && __svr4__ */ - return edx & bit_SSE; #else return 1; diff --git a/libjava/configure.ac b/libjava/configure.ac --- a/libjava/configure.ac +++ b/libjava/configure.ac @@ -1088,11 +1088,6 @@ case "$THREADS" in THREADLIBS='-lpthread -lrt' THREADSPEC='-lpthread -lrt' ;; - *-*-solaris2.9) - # Need libthread for TLS support. - THREADLIBS='-lpthread -lthread' - THREADSPEC='-lpthread -lthread' - ;; *-*-darwin*) # Don't set THREADLIBS or THREADSPEC as Darwin already # provides pthread via libSystem. diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4 --- a/libstdc++-v3/acinclude.m4 +++ b/libstdc++-v3/acinclude.m4 @@ -3523,25 +3523,7 @@ AC_DEFUN([GLIBCXX_CHECK_GTHREADS], [ #ifndef __GTHREADS_CXX0X #error #endif - ], [case $target_os in - # gthreads support breaks symbol versioning on Solaris 9 (PR - # libstdc++/52189). - solaris2.9*) - if test x$enable_symvers = xno; then - ac_has_gthreads=yes - elif test x$enable_libstdcxx_threads = xyes; then - AC_MSG_WARN([You have requested C++11 threads support, but]) - AC_MSG_WARN([this breaks symbol versioning.]) - ac_has_gthreads=yes - else - ac_has_gthreads=no - fi - ;; - *) - ac_has_gthreads=yes - ;; - esac], - [ac_has_gthreads=no]) + ], [ac_has_gthreads=yes], [ac_has_gthreads=no]) else ac_has_gthreads=no fi diff --git a/libstdc++-v3/config/abi/post/solaris2.9/baseline_symbols.txt b/libstdc++-v3/config/abi/post/solaris2.9/baseline_symbols.txt deleted file mode 100644 diff --git a/libstdc++-v3/config/abi/post/solaris2.9/sparcv9/baseline_symbols.txt b/libstdc++-v3/config/abi/post/solaris2.9/sparcv9/baseline_symbols.txt deleted file mode 100644 diff --git a/libstdc++-v3/config/os/solaris/solaris2.9/ctype_base.h b/libstdc++-v3/config/os/solaris/solaris2.10/ctype_base.h rename from libstdc++-v3/config/os/solaris/solaris2.9/ctype_base.h rename to libstdc++-v3/config/os/solaris/solaris2.10/ctype_base.h diff --git a/libstdc++-v3/config/os/solaris/solaris2.9/ctype_configure_char.cc b/libstdc++-v3/config/os/solaris/solaris2.10/ctype_configure_char.cc rename from libstdc++-v3/config/os/solaris/solaris2.9/ctype_configure_char.cc rename to libstdc++-v3/config/os/solaris/solaris2.10/ctype_configure_char.cc diff --git a/libstdc++-v3/config/os/solaris/solaris2.9/ctype_inline.h b/libstdc++-v3/config/os/solaris/solaris2.10/ctype_inline.h rename from libstdc++-v3/config/os/solaris/solaris2.9/ctype_inline.h rename to libstdc++-v3/config/os/solaris/solaris2.10/ctype_inline.h diff --git a/libstdc++-v3/config/os/solaris/solaris2.9/os_defines.h b/libstdc++-v3/config/os/solaris/solaris2.10/os_defines.h rename from libstdc++-v3/config/os/solaris/solaris2.9/os_defines.h rename to libstdc++-v3/config/os/solaris/solaris2.10/os_defines.h --- a/libstdc++-v3/config/os/solaris/solaris2.9/os_defines.h +++ b/libstdc++-v3/config/os/solaris/solaris2.10/os_defines.h @@ -1,4 +1,4 @@ -// Specific definitions for Solaris 9+ -*- C++ -*- +// Specific definitions for Solaris 10+ -*- C++ -*- // Copyright (C) 2000-2014 Free Software Foundation, Inc. // @@ -35,10 +35,5 @@ #define __CORRECT_ISO_CPP_WCHAR_H_PROTO #endif -/* Solaris 9 uses the non-standard CLOCK_HIGHRES instead. */ -#ifndef CLOCK_MONOTONIC -#define CLOCK_MONOTONIC CLOCK_HIGHRES #endif -#endif - diff --git a/libstdc++-v3/configure.host b/libstdc++-v3/configure.host --- a/libstdc++-v3/configure.host +++ b/libstdc++-v3/configure.host @@ -301,11 +301,11 @@ case "${host_os}" in solaris2) # This too-vague configuration does not provide enough information # to select a ctype include, and thus os_include_dir is a crap shoot. - echo "Please specify the full version of Solaris, ie. solaris2.9 " 1>&2 + echo "Please specify the full version of Solaris, ie. solaris2.10 " 1>&2 exit 1 ;; - solaris2.9 | solaris2.1[0-9]) - os_include_dir="os/solaris/solaris2.9" + solaris2.1[0-9]) + os_include_dir="os/solaris/solaris2.10" ;; tpf) os_include_dir="os/tpf" @@ -356,10 +356,6 @@ case "${host}" in powerpc*-*-darwin*) port_specific_symbol_files="\$(srcdir)/../config/os/bsd/darwin/ppc-extra.ver" ;; - *-*-solaris2.9) - abi_baseline_pair=solaris2.9 - abi_baseline_subdir_switch=--print-multi-os-directory - ;; *-*-solaris2.1[0-9]) abi_baseline_pair=solaris2.10 abi_baseline_subdir_switch=--print-multi-os-directory diff --git a/libstdc++-v3/crossconfig.m4 b/libstdc++-v3/crossconfig.m4 --- a/libstdc++-v3/crossconfig.m4 +++ b/libstdc++-v3/crossconfig.m4 @@ -205,24 +205,16 @@ case "${host}" in GLIBCXX_CHECK_STDLIB_SUPPORT ;; *-solaris*) - case "$target" in - *-solaris2.9 | *-solaris2.10) - GLIBCXX_CHECK_LINKER_FEATURES - AC_DEFINE(HAVE_MBSTATE_T) - AC_DEFINE(HAVE_FINITE) - AC_DEFINE(HAVE_FPCLASS) - # All of the dependencies for wide character support are here, so - # turn it on. - AC_DEFINE(_GLIBCXX_USE_WCHAR_T) - ;; - esac - case "$target" in - *-*-solaris2.10) - # These two C99 functions are present only in Solaris >= 10 - AC_DEFINE(HAVE_STRTOF) - AC_DEFINE(HAVE_STRTOLD) - ;; - esac + GLIBCXX_CHECK_LINKER_FEATURES + AC_DEFINE(HAVE_MBSTATE_T) + AC_DEFINE(HAVE_FINITE) + AC_DEFINE(HAVE_FPCLASS) + # All of the dependencies for wide character support are here, so + # turn it on. + AC_DEFINE(_GLIBCXX_USE_WCHAR_T) + # These two C99 functions are present only in Solaris >= 10 + AC_DEFINE(HAVE_STRTOF) + AC_DEFINE(HAVE_STRTOLD) AC_DEFINE(HAVE_ISNAN) AC_DEFINE(HAVE_ISNANF) AC_DEFINE(HAVE_MODFF) diff --git a/libstdc++-v3/doc/xml/manual/configure.xml b/libstdc++-v3/doc/xml/manual/configure.xml --- a/libstdc++-v3/doc/xml/manual/configure.xml +++ b/libstdc++-v3/doc/xml/manual/configure.xml @@ -162,8 +162,7 @@ <varlistentry><term><code>--enable-libstdcxx-threads</code></term> <listitem><para>Enable C++11 threads support. If not explicitly specified, - the configure process enables it if possible. It defaults to 'off' - on Solaris 9, where it would break symbol versioning. This + the configure process enables it if possible. This option can change the library ABI. </para> </listitem></varlistentry> diff --git a/libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/12.cc b/libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/12.cc --- a/libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/12.cc +++ b/libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/12.cc @@ -19,10 +19,7 @@ // 27.6.1.2.2 arithmetic extractors -// XXX This test fails on Solaris 9 because of a bug in libc -// XXX sscanf for very long input. See: -// XXX http://gcc.gnu.org/ml/gcc/2002-12/msg01422.html -// { dg-do run { xfail { { *-*-solaris2.9 } || lax_strtofp } } } +// { dg-do run { xfail { lax_strtofp } } } #include <istream> #include <sstream> diff --git a/libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/12.cc b/libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/12.cc --- a/libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/12.cc +++ b/libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/12.cc @@ -17,10 +17,7 @@ // 27.6.1.2.2 arithmetic extractors -// XXX This test fails on Solaris 9 because of a bug in libc -// XXX sscanf for very long input. See: -// XXX http://gcc.gnu.org/ml/gcc/2002-12/msg01422.html -// { dg-do run { xfail { { *-*-solaris2.9 } || lax_strtofp } } } +// { dg-do run { xfail { lax_strtofp } } } #include <istream> #include <sstream> diff --git a/libstdc++-v3/testsuite/ext/enc_filebuf/char/13598.cc b/libstdc++-v3/testsuite/ext/enc_filebuf/char/13598.cc --- a/libstdc++-v3/testsuite/ext/enc_filebuf/char/13598.cc +++ b/libstdc++-v3/testsuite/ext/enc_filebuf/char/13598.cc @@ -1,7 +1,7 @@ // Before Solaris 11, iconv -f ISO-8859-1 -t ISO-8859-1 fails with // Not supported ISO-8859-1 to ISO-8859-1 // -// { dg-do run { xfail *-*-solaris2.9 *-*-solaris2.10 } } +// { dg-do run { xfail *-*-solaris2.10 } } // { dg-require-iconv "ISO-8859-1" } // Copyright (C) 2004-2014 Free Software Foundation, Inc.
-- ----------------------------------------------------------------------------- Rainer Orth, Center for Biotechnology, Bielefeld University