diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 97d4b993fe0edd19f9721ebc2b9d3cc4c4f3f4ce..fb68e07371b3e85ec874ade8af0be897b2db6fa0 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,8 @@
+2011-06-09  Simon Baldwin  <simonb@google.com>
+
+	* scripts/extract_symvers.in: Handle processor/OS specific or
+	unknown symbol binding strings from readelf.
+		
 2011-06-09  Paolo Carlini  <paolo.carlini@oracle.com>
 
 	* include/std/type_traits (__is_copy_assignable_impl,
diff --git a/libstdc++-v3/scripts/extract_symvers.in b/libstdc++-v3/scripts/extract_symvers.in
index a2ff3c40a446e883ba09e07d7be94723dbf33390..99dd11152a1081eeea37219c5d0add4f8d2b3663 100755
--- a/libstdc++-v3/scripts/extract_symvers.in
+++ b/libstdc++-v3/scripts/extract_symvers.in
@@ -52,6 +52,9 @@ SunOS)
   ${readelf} ${lib} |\
   sed -e 's/ \[<other>: [A-Fa-f0-9]*\] //' -e '/\.dynsym/,/^$/p;d' |\
   egrep -v ' (LOCAL|UND) ' |\
+  sed -e 's/ <processor specific>: / <processor_specific>:_/g' |\
+  sed -e 's/ <OS specific>: / <OS_specific>:_/g' |\
+  sed -e 's/ <unknown>: / <unknown>:_/g' |\
   awk '{ if ($4 == "FUNC" || $4 == "NOTYPE")
            printf "%s:%s\n", $4, $8;
          else if ($4 == "OBJECT" || $4 == "TLS")