diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog
index 25706ef3cd1612c22cb1288aff715a63552bb9a5..b2237e6d48f4cd13553407d6092f94766e6cc719 100644
--- a/libcpp/ChangeLog
+++ b/libcpp/ChangeLog
@@ -1,3 +1,8 @@
+2010-08-24  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* lex.c [__sun__ && __svr4__]: Disable init_vectorized_lexer
+	etc. on Solaris 2/x86.
+
 2010-08-21  Richard Henderson  <rth@redhat.com>
 	    Andi Kleen <ak@linux.intel.com>
 	    David S. Miller  <davem@davemloft.net>
diff --git a/libcpp/lex.c b/libcpp/lex.c
index bc0086df1d5e82b05ac7271a30c967144cc39b06..a94e57282d8f2f2cd2afd08be49fd25018053ef5 100644
--- a/libcpp/lex.c
+++ b/libcpp/lex.c
@@ -264,7 +264,17 @@ search_line_acc_char (const uchar *s, const uchar *end ATTRIBUTE_UNUSED)
     }
 }
 
-#if (GCC_VERSION >= 4005) && (defined(__i386__) || defined(__x86_64__))
+/* Disable on Solaris 2/x86 until the following problems can be properly
+   autoconfed:
+
+   The Solaris 8 assembler cannot assemble SSE2/SSE4.2 insns.
+   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.  */
+
+#if (GCC_VERSION >= 4005) && (defined(__i386__) || defined(__x86_64__)) && !(defined(__sun__) && defined(__svr4__))
 
 /* Replicated character data to be shared between implementations.
    Recall that outside of a context with vector support we can't