diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 4068530f8f522a9026af04a0306c6962e0f7c6cf..7b57efef3aaf25ea550913cafd4aabd831dcbf98 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,14 @@
+2013-03-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* scripts/extract_symvers.pl: Omit symbols bound to base
+	versions.
+	* scripts/extract_symvers.in: Likewise.
+	* config/abi/post/solaris2.9/baseline_symbols.txt: Regenerate.
+	* config/abi/post/solaris2.9/sparcv9/baseline_symbols.txt: Likewise.
+	* config/abi/post/solaris2.10/baseline_symbols.txt: Likewise.
+	* config/abi/post/solaris2.10/amd64/baseline_symbols.txt: Likewise.
+	* config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt: Likewise.
+
 2013-03-04  Ulrich Drepper  <drepper@gmail.com>
 
 	* include/ext/random (__gnu_cxx::von_mises_distribution<>):
diff --git a/libstdc++-v3/config/abi/post/solaris2.10/amd64/baseline_symbols.txt b/libstdc++-v3/config/abi/post/solaris2.10/amd64/baseline_symbols.txt
index 5072849bb55ea18110386b04c74b2b1167594bd7..8761f0e602e60024ba21cd090a335539b01fb40a 100644
--- a/libstdc++-v3/config/abi/post/solaris2.10/amd64/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/solaris2.10/amd64/baseline_symbols.txt
@@ -2485,12 +2485,6 @@ OBJECT:0:GLIBCXX_3.4.6
 OBJECT:0:GLIBCXX_3.4.7
 OBJECT:0:GLIBCXX_3.4.8
 OBJECT:0:GLIBCXX_3.4.9
-OBJECT:0:_DYNAMIC
-OBJECT:0:_GLOBAL_OFFSET_TABLE_
-OBJECT:0:_PROCEDURE_LINKAGE_TABLE_
-OBJECT:0:_edata
-OBJECT:0:_end
-OBJECT:0:_etext
 OBJECT:104:_ZTVSt10moneypunctIcLb0EE@@GLIBCXX_3.4
 OBJECT:104:_ZTVSt10moneypunctIcLb1EE@@GLIBCXX_3.4
 OBJECT:104:_ZTVSt10moneypunctIwLb0EE@@GLIBCXX_3.4
diff --git a/libstdc++-v3/config/abi/post/solaris2.10/baseline_symbols.txt b/libstdc++-v3/config/abi/post/solaris2.10/baseline_symbols.txt
index 3874be08f075e53901ff7eabb36042ee6be19b7e..b4c56b4902d921482166469c5da93ce0e67ea22a 100644
--- a/libstdc++-v3/config/abi/post/solaris2.10/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/solaris2.10/baseline_symbols.txt
@@ -2485,12 +2485,6 @@ OBJECT:0:GLIBCXX_3.4.6
 OBJECT:0:GLIBCXX_3.4.7
 OBJECT:0:GLIBCXX_3.4.8
 OBJECT:0:GLIBCXX_3.4.9
-OBJECT:0:_DYNAMIC
-OBJECT:0:_GLOBAL_OFFSET_TABLE_
-OBJECT:0:_PROCEDURE_LINKAGE_TABLE_
-OBJECT:0:_edata
-OBJECT:0:_end
-OBJECT:0:_etext
 OBJECT:1028:_ZNSt3tr18__detail12__prime_listE@@GLIBCXX_3.4.10
 OBJECT:1028:_ZNSt8__detail12__prime_listE@@GLIBCXX_3.4.10
 OBJECT:12:_ZTIN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
diff --git a/libstdc++-v3/config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt b/libstdc++-v3/config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt
index 3d3efcbaea93b13f529ba1c9b7b6f734d2e88149..225584726b4167125c6a8aa909721cca90784c60 100644
--- a/libstdc++-v3/config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt
@@ -2485,12 +2485,6 @@ OBJECT:0:GLIBCXX_3.4.6
 OBJECT:0:GLIBCXX_3.4.7
 OBJECT:0:GLIBCXX_3.4.8
 OBJECT:0:GLIBCXX_3.4.9
-OBJECT:0:_DYNAMIC
-OBJECT:0:_GLOBAL_OFFSET_TABLE_
-OBJECT:0:_PROCEDURE_LINKAGE_TABLE_
-OBJECT:0:_edata
-OBJECT:0:_end
-OBJECT:0:_etext
 OBJECT:104:_ZTVSt10moneypunctIcLb0EE@@GLIBCXX_3.4
 OBJECT:104:_ZTVSt10moneypunctIcLb1EE@@GLIBCXX_3.4
 OBJECT:104:_ZTVSt10moneypunctIwLb0EE@@GLIBCXX_3.4
diff --git a/libstdc++-v3/config/abi/post/solaris2.9/baseline_symbols.txt b/libstdc++-v3/config/abi/post/solaris2.9/baseline_symbols.txt
index 05fe095d63e1cd484c3e299eba9e9132024526eb..af51ca0633d9c5c41c9c0b69814aa6ef715352ce 100644
--- a/libstdc++-v3/config/abi/post/solaris2.9/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/solaris2.9/baseline_symbols.txt
@@ -2499,12 +2499,6 @@ OBJECT:0:GLIBCXX_3.4.6
 OBJECT:0:GLIBCXX_3.4.7
 OBJECT:0:GLIBCXX_3.4.8
 OBJECT:0:GLIBCXX_3.4.9
-OBJECT:0:_DYNAMIC
-OBJECT:0:_GLOBAL_OFFSET_TABLE_
-OBJECT:0:_PROCEDURE_LINKAGE_TABLE_
-OBJECT:0:_edata
-OBJECT:0:_end
-OBJECT:0:_etext
 OBJECT:1028:_ZNSt3tr18__detail12__prime_listE@@GLIBCXX_3.4.10
 OBJECT:1028:_ZNSt8__detail12__prime_listE@@GLIBCXX_3.4.10
 OBJECT:12:_ZTIN10__cxxabiv116__enum_type_infoE@@CXXABI_1.3
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
index 3183063f84df6fa78c8b2ed9690d760799a8b639..5509adfde6a12723cbb09b5a7f945bb591267993 100644
--- a/libstdc++-v3/config/abi/post/solaris2.9/sparcv9/baseline_symbols.txt
+++ b/libstdc++-v3/config/abi/post/solaris2.9/sparcv9/baseline_symbols.txt
@@ -2499,12 +2499,6 @@ OBJECT:0:GLIBCXX_3.4.6
 OBJECT:0:GLIBCXX_3.4.7
 OBJECT:0:GLIBCXX_3.4.8
 OBJECT:0:GLIBCXX_3.4.9
-OBJECT:0:_DYNAMIC
-OBJECT:0:_GLOBAL_OFFSET_TABLE_
-OBJECT:0:_PROCEDURE_LINKAGE_TABLE_
-OBJECT:0:_edata
-OBJECT:0:_end
-OBJECT:0:_etext
 OBJECT:104:_ZTVSt10moneypunctIcLb0EE@@GLIBCXX_3.4
 OBJECT:104:_ZTVSt10moneypunctIcLb1EE@@GLIBCXX_3.4
 OBJECT:104:_ZTVSt10moneypunctIwLb0EE@@GLIBCXX_3.4
diff --git a/libstdc++-v3/scripts/extract_symvers.in b/libstdc++-v3/scripts/extract_symvers.in
index eac2497986752bb3125f483f9e75ed59fac8c829..a262435de7aeb89120f0b5b1397e52a75371a750 100755
--- a/libstdc++-v3/scripts/extract_symvers.in
+++ b/libstdc++-v3/scripts/extract_symvers.in
@@ -49,9 +49,12 @@ SunOS)
   if readelf --help | grep -- --wide > /dev/null; then
     readelf="$readelf --wide"
   fi
+  # Omit _DYNAMIC etc. for consistency with extract_symvers.pl, only
+  # present on Solaris.
   ${readelf} ${lib} |\
   sed -e 's/ \[<other>: [A-Fa-f0-9]*\] //' -e '/\.dynsym/,/^$/p;d' |\
   egrep -v ' (LOCAL|UND) ' |\
+  egrep -v ' (_DYNAMIC|_GLOBAL_OFFSET_TABLE_|_PROCEDURE_LINKAGE_TABLE_|_edata|_end|_etext)$' |\
   sed -e 's/ <processor specific>: / <processor_specific>:_/g' |\
   sed -e 's/ <OS specific>: / <OS_specific>:_/g' |\
   sed -e 's/ <unknown>: / <unknown>:_/g' |\
diff --git a/libstdc++-v3/scripts/extract_symvers.pl b/libstdc++-v3/scripts/extract_symvers.pl
index 31723fbccc18d71cc4320ab427cf197c25a90cef..d43c53e231f361362cd8606f4eaabae5f213a659 100644
--- a/libstdc++-v3/scripts/extract_symvers.pl
+++ b/libstdc++-v3/scripts/extract_symvers.pl
@@ -67,7 +67,11 @@ while (<PVS>) {
     if ($version eq $symbol or $version eq $basever) {
 	# Emit versions or symbols bound to base versions as objects.
 	$type{$symbol} = "OBJECT";
-	$version{$symbol} = $symbol;
+	if ($version eq $basever) {
+	    $version{$symbol} = $version;
+	} else {
+	    $version{$symbol} = $symbol;
+	}
 	$size{$symbol} = 0;
     } else {
 	# Everything else without a size field is a function.
@@ -120,6 +124,10 @@ foreach $symbol (keys %type) {
     if ($type{$symbol} eq "FUNC" || $type{$symbol} eq "NOTYPE") {
 	push @lines, "$type{$symbol}:$symbol\@\@$version{$symbol}\n";
     } elsif ($type{$symbol} eq "OBJECT" and $size{$symbol} == 0) {
+	# Omit symbols bound to base version; details can differ depending
+	# on the toolchain used.
+	next if $version{$symbol} eq $basever;
+
 	push @lines, "$type{$symbol}:$size{$symbol}:$version{$symbol}\n";
     } else {
 	push @lines, "$type{$symbol}:$size{$symbol}:$symbol\@\@$version{$symbol}\n";