diff mbox

Remove obsolete Solaris 9 support

Message ID yddzjjd5ypa.fsf@lokon.CeBiTec.Uni-Bielefeld.DE
State New
Headers show

Commit Message

Rainer Orth April 22, 2014, 12:35 p.m. UTC
Uros Bizjak <ubizjak@gmail.com> writes:

> On Wed, Apr 16, 2014 at 1:16 PM, Rainer Orth
> <ro@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  <ro@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.

Comments

Uros Bizjak April 23, 2014, 12:51 p.m. UTC | #1
On Tue, Apr 22, 2014 at 2:35 PM, Rainer Orth
<ro@cebitec.uni-bielefeld.de> wrote:
> Uros Bizjak <ubizjak@gmail.com> writes:
>
>> On Wed, Apr 16, 2014 at 1:16 PM, Rainer Orth
>> <ro@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.

It looks to me that one part was left in libgcc/config/i386/crtfastmath.c:

#if !defined __x86_64__ && defined __sun__ && defined __svr4__
#include <signal.h>
#include <ucontext.h>
...
#endif
Rainer Orth April 23, 2014, 2:12 p.m. UTC | #2
Uros Bizjak <ubizjak@gmail.com> writes:

> It looks to me that one part was left in libgcc/config/i386/crtfastmath.c:
>
> #if !defined __x86_64__ && defined __sun__ && defined __svr4__
> #include <signal.h>
> #include <ucontext.h>
> ...
> #endif

Right, missed it because it carried no Solaris 9 comment.  I'll remove
it after a round of testing.

Thanks.
        Rainer
diff mbox

Patch

# 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.