diff --git a/libstdc++-v3/config/abi/pre/gnu.ver b/libstdc++-v3/config/abi/pre/gnu.ver
index 84ce874fe03663eba1648ab59b10306333339766..adadc62e3533959a6d0d0c439d2e776d227aeb50 100644
--- a/libstdc++-v3/config/abi/pre/gnu.ver
+++ b/libstdc++-v3/config/abi/pre/gnu.ver
@@ -2874,15 +2874,15 @@ CXXABI_1.3.15 {
 
 } CXXABI_1.3.14;
 
+#ifdef __riscv
 CXXABI_1.3.16 {
 
-#ifdef __riscv
     _ZTIDF16b;
     _ZTIPDF16b;
     _ZTIPKDF16b;
-#endif
 
 } CXXABI_1.3.15;
+#endif
 
 # Symbols in the support library (libsupc++) supporting transactional memory.
 CXXABI_TM_1 {
diff --git a/libstdc++-v3/scripts/extract_symvers.pl b/libstdc++-v3/scripts/extract_symvers.pl
index e0e6e5b70c4a75b62cc3f03f414305f9b4a2de2a..fb18e11a1b3ef5caa159193c7ea0a2b1caf353c9 100644
--- a/libstdc++-v3/scripts/extract_symvers.pl
+++ b/libstdc++-v3/scripts/extract_symvers.pl
@@ -34,8 +34,18 @@ while (<PVS>) {
     # Remove trailing semicolon.
     s/;$//;
 
-    # shared object, dash, version, symbol, [size]
-    (undef, undef, $version, $symbol, $size) = split;
+    if (/\[WEAK\]/) {
+	# Allow for weak versions like
+	# libstdc++.so.6.0.34 -	CXXABI_1.3.16 [WEAK]: {CXXABI_1.3.15};
+	#
+	# shared object, dash, version "[WEAK]", symbol, [size]
+	(undef, undef, $version, undef, $symbol, $size) = split;
+    } else {
+	# libstdc++.so.6.0.34 -	CXXABI_1.3.16: {CXXABI_1.3.15};
+	#
+	# shared object, dash, version, symbol, [size]
+	(undef, undef, $version, $symbol, $size) = split;
+    }
 
     # Remove colon separator from version field.
     $version =~ s/:$//;
diff --git a/libstdc++-v3/testsuite/util/testsuite_abi.cc b/libstdc++-v3/testsuite/util/testsuite_abi.cc
index 0d6080fb92c0d1541a9d841c675678e6d9159d67..1b4044c9518881bc9f42898b5c6acf60696fd84c 100644
--- a/libstdc++-v3/testsuite/util/testsuite_abi.cc
+++ b/libstdc++-v3/testsuite/util/testsuite_abi.cc
@@ -237,7 +237,9 @@ check_version(symbol& test, bool added)
       known_versions.push_back("CXXABI_1.3.13");
       known_versions.push_back("CXXABI_1.3.14");
       known_versions.push_back("CXXABI_1.3.15");
+#ifdef __riscv
       known_versions.push_back("CXXABI_1.3.16");
+#endif
       known_versions.push_back("CXXABI_IEEE128_1.3.13");
       known_versions.push_back("CXXABI_TM_1");
       known_versions.push_back("CXXABI_FLOAT128");