diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index d2f17b8eb29c57198e1b14c05e139f7bb81994cf..aaa5178f04fc50bbbe374a1cf46342f5e7393f2b 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,9 @@
+2011-02-04  Benjamin Kosnik  <bkoz@redhat.com>
+
+	* include/bits/regex_error.h (__throw_regex_error): Not inline.
+	* src/functexcept.cc: Add definition.
+	* config/abi/pre/gnu.ver: Export.
+
 2011-02-04  Ralf Corsépius <ralf.corsepius@rtems.org>
 
 	* crossconfig.m4 (GLIBCXX_CROSSCONFIG): Add *-rtems*.
diff --git a/libstdc++-v3/config/abi/pre/gnu.ver b/libstdc++-v3/config/abi/pre/gnu.ver
index 67571395cc5ecb2edcee8c10ec3697ee8e7e6827..b5acc5da1308743d08e86683b8dc41d8e9b99651 100644
--- a/libstdc++-v3/config/abi/pre/gnu.ver
+++ b/libstdc++-v3/config/abi/pre/gnu.ver
@@ -1,6 +1,6 @@
 ## Linker script for GNU versioning (GNU ld 2.13.91+ only.)
 ##
-## Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+## Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
 ## Free Software Foundation, Inc.
 ##
 ## This file is part of the GNU ISO C++ Library.  This library is free
@@ -1205,6 +1205,13 @@ GLIBCXX_3.4.15 {
     _ZNSt8__detail15_List_node_base11_M_transfer*;
     _ZNSt8__detail15_List_node_base4swapERS0_S1_;
 
+    _ZNSt11regex_errorD*;
+    _ZNKSt11regex_error4whatEv;
+    _ZTSSt11regex_error;
+    _ZTVSt11regex_error;
+    _ZTISt11regex_error;
+    _ZSt19__throw_regex_errorNSt15regex_constants10error_typeE;
+
 } GLIBCXX_3.4.14;
 
 # Symbols in the support library (libsupc++) have their own tag.
diff --git a/libstdc++-v3/include/bits/regex_error.h b/libstdc++-v3/include/bits/regex_error.h
index ffbedd51fae2d10c0f54d3f553c966dee094ab45..cfcf4798f3be94c00cee4c1fb6b7db40151a6489 100644
--- a/libstdc++-v3/include/bits/regex_error.h
+++ b/libstdc++-v3/include/bits/regex_error.h
@@ -156,9 +156,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   };
 
 
-  inline void
-  __throw_regex_error(regex_constants::error_type __ecode)
-  { throw regex_error(__ecode); }
+  void
+  __throw_regex_error(regex_constants::error_type __ecode);
 
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace std
diff --git a/libstdc++-v3/src/functexcept.cc b/libstdc++-v3/src/functexcept.cc
index 5cd5ea3b19482bb32e39a4cf5c9d14c07b6be79d..2fe14d532e056741e17795bbdc25bf31b385c49f 100644
--- a/libstdc++-v3/src/functexcept.cc
+++ b/libstdc++-v3/src/functexcept.cc
@@ -31,6 +31,7 @@
 #include <system_error>
 #include <future>
 #include <functional>
+#include <regex>
 
 #ifdef _GLIBCXX_USE_NLS
 # include <libintl.h>
@@ -111,6 +112,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   void
   __throw_bad_function_call()
   { throw bad_function_call(); }
+
+  void
+  __throw_regex_error(regex_constants::error_type __ecode)
+  { throw regex_error(__ecode); }
 #else
   void
   __throw_bad_exception(void)
@@ -180,6 +185,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   __throw_bad_function_call()
   { std::abort(); }
 
+  void
+  __throw_regex_error(regex_constants::error_type __ecode)
+  { std::abort(); }
 #endif //__EXCEPTIONS
 
 _GLIBCXX_END_NAMESPACE_VERSION