This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Remove obsolete Solaris 9 support


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:

* David: In target-supports.exp (add_options_for_tls), the comment needs
  to be updated with Solaris 9 support gone.  Is it completely accurate
  for AIX, even wrt. __tls_get_addr/___tls_get_addr?

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

* Eric: In libgcc/config/sparc/sol2-unwind.h, I've removed the Solaris 9
  cases after verifying that the cuh_pattern's used there only occur in
  Solaris 9 (from FCS to the latest libthread.so.1 patch), but not even
  in Solaris 10 FCS.

  For Solaris 10, do you have any more details on when the 2-frame case
  occurs?  I've found that patch submission

	http://gcc.gnu.org/ml/gcc-patches/2010-10/msg02370.html

  but no details on what S10 update/patch this happens with.

* Ian: I've removed Solaris 8 and 9 support from libgo.  I'm uncertain
  if you want this or rather keep that support for the 4.[789] branches?

* I'm removing the <sys/loadavg.h> check from classpath.  Again, I'm
  uncertain if this is desirable.  In the past, classpath changes were
  merged upstream by one of the libjava maintainers.

I've already verified that trunk fails to build no sparc-sun-solaris2.9
and i386-pc-solaris2.9.  Bootstraps on {i386,sparc}-*-solaris2.{10,11}
(and x86_64-unknown-linux-gnu for good measure) are in progress.  I'll
verify that there are no unexpected fixincludes changes and differences
in gcc configure results.

If testing goes well, unless someone objects I'll probably check in
everything but the classpath and libgo parts after the easter weekend.

After that patch, all Solaris configurations are bi-arch, so I'll later
post another patch to merge and/or rename some of the t-* fragments and
config headers.  There's probably more cleanup potential even after that.

	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.

	libjava/classpath:
	* configure.ac: Don't check for sys/loadavg.h.
	* configure: Regenerate.
	* include/config.h.in: Regenerate.
	* native/jni/java-lang/gnu_java_lang_management_VMOperatingSystemMXBeanImpl.c
	[HAVE_SYS_LOADAVG_H]: Don't include <sys/loadavg.h>.

	libgo:
	* configure.ac (OSCFLAGS): Remove *-*-solaris2.[89] handling.
	(libgo_cv_lib_makecontext_stack_top): Remove.
	* configure: Regenerate.
	* config.h.in: Regenerate.
	* go/math/ldexp.go (Ldexp): Remove Solaris 9 workaround.
	* runtime/proc.c (runtime_newextram) [MAKECONTEXT_STACK_TOP]:
	Remove.

	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 support.
	* config/sparc/sol2-unwind.h (sparc64_is_sighandler): Remove
	Solaris 9 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: Remove.
	* gcc.target/i386/pr52754.c: Don't include sse-os-support.h.
	(main): Remove call to sse_os_support().
	* gcc.target/i386/sse-check.h: Likewise.
	* gcc.target/i386/sse2-check.h: Likewise.
	* gcc.target/i386/sse3-check.h: Likewise.
	* gcc.target/i386/vperm-v2df.c: Likewise.
	* gcc.target/i386/vperm-v2di.c: Likewise.
	* gcc.target/i386/vperm-v4sf-1.c: Likewise.
	* gcc.target/i386/vperm-v4si-1.c: Likewise.

	* 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_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 099c882a83d8f31c504c7954a8506de3dad578ed
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
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,35 +96,6 @@ 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)
@@ -135,17 +106,6 @@ extern int __sigsetjmp (struct __jmp_buf
 #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
diff --git a/fixincludes/tests/base/sys/va_list.h b/fixincludes/tests/base/sys/va_list.h
deleted file mode 100644
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
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
@@ -3345,32 +3317,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"
@@ -4437,14 +4384,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/pr52754.c b/gcc/testsuite/gcc.target/i386/pr52754.c
--- a/gcc/testsuite/gcc.target/i386/pr52754.c
+++ b/gcc/testsuite/gcc.target/i386/pr52754.c
@@ -5,7 +5,6 @@
 #include <x86intrin.h>
 
 #include "isa-check.h"
-#include "sse-os-support.h"
 
 int main()
 {
@@ -16,9 +15,6 @@ int main()
 
     check_isa ();
 
-    if (!sse_os_support ())
-      exit (0);
-
     __m128 x = _mm_setr_ps(0, 1, 2, 3);
     for (unsigned int i = 0; i + 4 < 6; ++i) {
         const unsigned int *ii = &indexes[i];
diff --git a/gcc/testsuite/gcc.target/i386/sse-check.h b/gcc/testsuite/gcc.target/i386/sse-check.h
--- a/gcc/testsuite/gcc.target/i386/sse-check.h
+++ b/gcc/testsuite/gcc.target/i386/sse-check.h
@@ -1,7 +1,6 @@
 #include <stdlib.h>
 #include "m128-check.h"
 #include "cpuid.h"
-#include "sse-os-support.h"
 
 static void sse_test (void);
 
@@ -21,7 +20,7 @@ main ()
     return 0;
 
   /* Run SSE test only if host has SSE support.  */
-  if ((edx & bit_SSE) && sse_os_support ())
+  if ((edx & bit_SSE))
     do_test ();
 
   return 0;
diff --git a/gcc/testsuite/gcc.target/i386/sse-os-support.h b/gcc/testsuite/gcc.target/i386/sse-os-support.h
deleted file mode 100644
--- a/gcc/testsuite/gcc.target/i386/sse-os-support.h
+++ /dev/null
@@ -1,55 +0,0 @@
-#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.  */
-
-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
-  return 1;
-#endif /* __sun__ && __svr4__ */
-}
diff --git a/gcc/testsuite/gcc.target/i386/sse2-check.h b/gcc/testsuite/gcc.target/i386/sse2-check.h
--- a/gcc/testsuite/gcc.target/i386/sse2-check.h
+++ b/gcc/testsuite/gcc.target/i386/sse2-check.h
@@ -1,7 +1,6 @@
 #include <stdlib.h>
 #include "cpuid.h"
 #include "m128-check.h"
-#include "sse-os-support.h"
 
 static void sse2_test (void);
 
@@ -21,7 +20,7 @@ main ()
     return 0;
 
   /* Run SSE2 test only if host has SSE2 support.  */
-  if ((edx & bit_SSE2) && sse_os_support ())
+  if ((edx & bit_SSE2))
     do_test ();
 
   return 0;
diff --git a/gcc/testsuite/gcc.target/i386/sse3-check.h b/gcc/testsuite/gcc.target/i386/sse3-check.h
--- a/gcc/testsuite/gcc.target/i386/sse3-check.h
+++ b/gcc/testsuite/gcc.target/i386/sse3-check.h
@@ -1,7 +1,6 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include "cpuid.h"
-#include "sse-os-support.h"
 
 static void sse3_test (void);
 
@@ -21,7 +20,7 @@ main ()
     return 0;
  
   /* Run SSE3 test only if host has SSE3 support.  */
-  if ((ecx & bit_SSE3) && sse_os_support ())
+  if ((ecx & bit_SSE3))
     do_test ();
 
   return 0;
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/gcc.target/i386/vperm-v2df.c b/gcc/testsuite/gcc.target/i386/vperm-v2df.c
--- a/gcc/testsuite/gcc.target/i386/vperm-v2df.c
+++ b/gcc/testsuite/gcc.target/i386/vperm-v2df.c
@@ -3,7 +3,6 @@
 /* { dg-require-effective-target sse2 } */
 
 #include "isa-check.h"
-#include "sse-os-support.h"
 
 typedef double S;
 typedef double V __attribute__((vector_size(16)));
@@ -28,9 +27,6 @@ int main()
 {
   check_isa ();
 
-  if (!sse_os_support ())
-    exit (0);
-
   i[0].s[0] = 0;
   i[0].s[1] = 1;
   i[0].s[2] = 2;
diff --git a/gcc/testsuite/gcc.target/i386/vperm-v2di.c b/gcc/testsuite/gcc.target/i386/vperm-v2di.c
--- a/gcc/testsuite/gcc.target/i386/vperm-v2di.c
+++ b/gcc/testsuite/gcc.target/i386/vperm-v2di.c
@@ -3,7 +3,6 @@
 /* { dg-require-effective-target sse2 } */
 
 #include "isa-check.h"
-#include "sse-os-support.h"
 
 typedef long long S;
 typedef long long V __attribute__((vector_size(16)));
@@ -28,9 +27,6 @@ int main()
 {
   check_isa ();
 
-  if (!sse_os_support ())
-    exit (0);
-
   i[0].s[0] = 0;
   i[0].s[1] = 1;
   i[0].s[2] = 2;
diff --git a/gcc/testsuite/gcc.target/i386/vperm-v4sf-1.c b/gcc/testsuite/gcc.target/i386/vperm-v4sf-1.c
--- a/gcc/testsuite/gcc.target/i386/vperm-v4sf-1.c
+++ b/gcc/testsuite/gcc.target/i386/vperm-v4sf-1.c
@@ -3,7 +3,6 @@
 /* { dg-require-effective-target sse } */
 
 #include "isa-check.h"
-#include "sse-os-support.h"
 
 typedef float S;
 typedef float V __attribute__((vector_size(16)));
@@ -30,9 +29,6 @@ int main()
 {
   check_isa ();
 
-  if (!sse_os_support ())
-    exit (0);
-
   i[0].s[0] = 0;
   i[0].s[1] = 1;
   i[0].s[2] = 2;
diff --git a/gcc/testsuite/gcc.target/i386/vperm-v4si-1.c b/gcc/testsuite/gcc.target/i386/vperm-v4si-1.c
--- a/gcc/testsuite/gcc.target/i386/vperm-v4si-1.c
+++ b/gcc/testsuite/gcc.target/i386/vperm-v4si-1.c
@@ -3,7 +3,6 @@
 /* { dg-require-effective-target sse2 } */
 
 #include "isa-check.h"
-#include "sse-os-support.h"
 
 typedef int S;
 typedef int V __attribute__((vector_size(16)));
@@ -30,9 +29,6 @@ int main()
 {
   check_isa ();
 
-  if (!sse_os_support ())
-    exit (0);
-
   i[0].s[0] = 0;
   i[0].s[1] = 1;
   i[0].s[2] = 2;
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,33 @@ 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 for Solaris 11:
+
+	   <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 for Solaris 10:
+
+	     <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,24 +97,11 @@ 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:
-
-		<signal handler>	<-- context->cfa
-		__sighndlr
-		call_user_handler
-		sigacthandler
-		<kernel>
-	*/
-	*nframes = 3;
-
       return 1;
     }
 
@@ -178,42 +141,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 +168,33 @@ 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 for Solaris 11:
+
+	   <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 for Solaris 10:
+
+	     <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,24 +202,11 @@ 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:
-
-		<signal handler>	<-- context->cfa
-		__sighndlr
-		call_user_handler
-		sigacthandler
-		<kernel>
-	*/
-	*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/libgo/configure.ac b/libgo/configure.ac
--- a/libgo/configure.ac
+++ b/libgo/configure.ac
@@ -316,11 +316,6 @@ case "$target" in
 	# msghdr in <sys/socket.h>.
 	OSCFLAGS="$OSCFLAGS -D_XOPEN_SOURCE=500"
 	;;
-    *-*-solaris2.[[89]])
-	# Solaris 8/9 need this so struct msghdr gets the msg_control
-	# etc. fields in <sys/socket.h> (_XPG4_2).
-	OSCFLAGS="$OSCFLAGS -D_XOPEN_SOURCE=500 -D_XOPEN_SOURCE_EXTENDED -D__EXTENSIONS__"
-	;;
     *-*-solaris2.1[[01]])
 	# Solaris 10+ needs this so struct msghdr gets the msg_control
 	# etc. fields in <sys/socket.h> (_XPG4_2).  _XOPEN_SOURCE=600 as
@@ -662,21 +657,6 @@ if test "$libgo_has_struct_exception" = 
             [Define to 1 if <math.h> defines struct exception])
 fi
 
-dnl Check if makecontext expects the uc_stack member of ucontext to point
-dnl to the top of the stack.
-case "$target" in
-  sparc*-*-solaris2.[[89]]*)
-    libgo_cv_lib_makecontext_stack_top=yes
-    ;;
-  *)
-    libgo_cv_lib_makecontext_stack_top=no
-    ;;
-esac
-if test "$libgo_cv_lib_makecontext_stack_top" = "yes"; then
-  AC_DEFINE(MAKECONTEXT_STACK_TOP, 1,
-	    [Define if makecontext expects top of stack in uc_stack.])
-fi
-
 dnl See whether setcontext changes the value of TLS variables.
 AC_CACHE_CHECK([whether setcontext clobbers TLS variables],
 [libgo_cv_lib_setcontext_clobbers_tls],
diff --git a/libgo/go/math/ldexp.go b/libgo/go/math/ldexp.go
--- a/libgo/go/math/ldexp.go
+++ b/libgo/go/math/ldexp.go
@@ -17,16 +17,6 @@ func libc_ldexp(float64, int) float64
 
 func Ldexp(frac float64, exp int) float64 {
 	r := libc_ldexp(frac, exp)
-
-	// Work around a bug in the implementation of ldexp on Solaris
-	// 9.  If multiplying a negative number by 2 raised to a
-	// negative exponent underflows, we want to return negative
-	// zero, but the Solaris 9 implementation returns positive
-	// zero.  This workaround can be removed when and if we no
-	// longer care about Solaris 9.
-	if r == 0 && frac < 0 && exp < 0 {
-		r = Copysign(0, frac)
-	}
 	return r
 }
 
diff --git a/libgo/runtime/proc.c b/libgo/runtime/proc.c
--- a/libgo/runtime/proc.c
+++ b/libgo/runtime/proc.c
@@ -1212,9 +1212,6 @@ runtime_newextram(void)
 	// here we need to set up the context for g0.
 	getcontext(&mp->g0->context);
 	mp->g0->context.uc_stack.ss_sp = g0_sp;
-#ifdef MAKECONTEXT_STACK_TOP
-	mp->g0->context.uc_stack.ss_sp += g0_spsize;
-#endif
 	mp->g0->context.uc_stack.ss_size = g0_spsize;
 	makecontext(&mp->g0->context, kickoff, 0);
 
diff --git a/libjava/classpath/configure.ac b/libjava/classpath/configure.ac
--- a/libjava/classpath/configure.ac
+++ b/libjava/classpath/configure.ac
@@ -488,7 +488,6 @@ if test "x${COMPILE_JNI}" = xyes; then
   dnl BSD_COMP is defined; just including sys/filio.h is simpler.
   dnl Check for crt_externs.h on Darwin.
   dnl Check for netinet/in_systm.h, netinet/ip.h and net/if.h for Windows CE.
-  dnl Check for sys/loadavg.h for getloadavg() on Solaris 9.
   dnl Check for sys/sockio.h for SIOCGIFFLAGS on OpenSolaris.
   AC_CHECK_HEADERS([unistd.h sys/types.h sys/config.h sys/ioctl.h \
 		    asm/ioctls.h \
@@ -502,7 +501,7 @@ if test "x${COMPILE_JNI}" = xyes; then
                     sys/event.h sys/epoll.h \
 		    ifaddrs.h \
 		    netinet/in_systm.h netinet/ip.h net/if.h \
-		    sys/loadavg.h sys/sockio.h])
+		    sys/sockio.h])
 
   AC_EGREP_HEADER(uint32_t, stdint.h, AC_DEFINE(HAVE_INT32_DEFINED, 1, [Define to 1 if you have uint32_t]))
   AC_EGREP_HEADER(uint32_t, inttypes.h, AC_DEFINE(HAVE_INT32_DEFINED, 1, [Define to 1 if you have uint32_t]))
diff --git a/libjava/classpath/native/jni/java-lang/gnu_java_lang_management_VMOperatingSystemMXBeanImpl.c b/libjava/classpath/native/jni/java-lang/gnu_java_lang_management_VMOperatingSystemMXBeanImpl.c
--- a/libjava/classpath/native/jni/java-lang/gnu_java_lang_management_VMOperatingSystemMXBeanImpl.c
+++ b/libjava/classpath/native/jni/java-lang/gnu_java_lang_management_VMOperatingSystemMXBeanImpl.c
@@ -38,11 +38,7 @@ exception statement from your version. *
 
 #include <config.h>
 
-#if defined HAVE_SYS_LOADAVG_H /* Get getloadavg() on Solaris 9 */
-#include <sys/loadavg.h>
-#else
 #include <stdlib.h>
-#endif
 
 #include "gnu_java_lang_management_VMOperatingSystemMXBeanImpl.h"
 
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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]