linker-map.gnu (GLIBCPP_3.2.1): Add.
authorBenjamin Kosnik <bkoz@redhat.com>
Fri, 11 Oct 2002 07:09:36 +0000 (07:09 +0000)
committerBenjamin Kosnik <bkoz@gcc.gnu.org>
Fri, 11 Oct 2002 07:09:36 +0000 (07:09 +0000)
2002-10-10  Benjamin Kosnik  <bkoz@redhat.com>

* config/linker-map.gnu (GLIBCPP_3.2.1): Add.
(GLIBCPP_3.2): Don't export locale::_S_*.
* src/ios.cc: Move globals into __gnu_cxx. Make old exported
symbols match.
* src/locale.cc: Same.
* src/localename.cc: Same.
* src/globals.cc: Same.

From-SVN: r58042

libstdc++-v3/ChangeLog
libstdc++-v3/config/linker-map.gnu
libstdc++-v3/src/globals.cc
libstdc++-v3/src/ios.cc
libstdc++-v3/src/locale.cc
libstdc++-v3/src/localename.cc

index d3e936ae1df6360cb77c3ed2fd23959bacc822c0..3aa1a554a3f2fb03e5bc325996a68cad1741d9d9 100644 (file)
@@ -1,3 +1,13 @@
+2002-10-10  Benjamin Kosnik  <bkoz@redhat.com>
+
+       * config/linker-map.gnu (GLIBCPP_3.2.1): Add.
+       (GLIBCPP_3.2): Don't export locale::_S_*. 
+       * src/ios.cc: Move globals into __gnu_cxx. Make old exported
+       symbols match.
+       * src/locale.cc: Same.
+       * src/localename.cc: Same.      
+       * src/globals.cc: Same. 
+
 2002-10-10  Phil Edwards  <pme@gcc.gnu.org>
 
        * docs/html/21_strings/howto.html:  Write #5, char_traits.
index 368a20768bdfdad647113c6d71c2e35fa48727b5..a43ab2cc0c5ad39679e3749f2d1eddfdef4d955a 100644 (file)
@@ -20,7 +20,6 @@
 ## Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
 ## USA.
 
-
 GLIBCPP_3.2 {
 
   global:
@@ -29,7 +28,18 @@ GLIBCPP_3.2 {
     # All but the last are terminated with a semicolon.
     extern "C++"
     {
-      std::[A-Za-z]*;
+      std::[A-Za-k]*;
+      std::length_error*;
+      std::logic_error*;
+      std::locale::[A-Za-z]*;
+      std::locale::_Impl*;
+      std::locale::_S_classic;
+      std::locale::_S_global;
+      std::locale::_S_num_categories;
+      std::locale::facet*;
+      std::locale::id*;
+      std::locale::locale*;
+      std::[A-Zm-z]*;
       std::__throw_*;
       std::__basic_file*;
       std::__num_base*;
@@ -43,6 +53,11 @@ GLIBCPP_3.2 {
 
     # Names not in an 'extern' block are mangled names.
 
+    _ZNSt6localeC1E*;
+    _ZNSt6locale11_M_coalesceERKS_S1_j;
+    _ZNSt6locale21_S_normalize_categoryEj;
+    _ZNSt6localeD*;
+
     # std::has_facet*
     _ZSt9has_facet*;
 
@@ -97,6 +112,15 @@ GLIBCPP_3.2 {
     *;
 };
 
+# Symbols added after GLIBCPP_3.2
+GLIBCPP_3.2.1 {
+
+  _ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structj;
+  _ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structj;
+  _ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structj;
+  _ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structj;
+
+} GLIBCPP_3.2;
 
 # Symbols in the support library (libsupc++) have their own tag.
 CXXABI_1.2 {
index 079fff8fdab0eff6cab8653f6c042c3cf715d69d..27f8be19891f10ff8117d63fc938a38960f03ba4 100644 (file)
 // Because <iostream> declares the standard streams to be [io]stream
 // types instead of say [io]fstream types, it is also necessary to
 // allocate the actual file buffers in this file.
-namespace std 
+namespace __gnu_cxx
 {
-  // Standard "C" locale.
+  using namespace std;
+
+  // NB: The asm directives renames these non-exported, namespace
+  // __gnu_cxx symbols into the mistakenly exported, namespace std
+  // symbols in GLIBCPP_3.2.
+  // The rename syntax is 
+  //   asm (".symver currentname,oldname@@GLIBCPP_3.2")
+  // At the same time, these new __gnu_cxx symbols are not exported.
+  // In the future, GLIBCXX_ABI > 5 should remove all asm directives
+  // in this file.
   typedef char fake_locale[sizeof(locale)]
   __attribute__ ((aligned(__alignof__(locale))));
   fake_locale c_locale;
+  asm (".symver _ZN9__gnu_cxx8c_localeE,_ZSt8c_locale@@GLIBCPP_3.2");
 
   typedef char fake_locale_Impl[sizeof(locale::_Impl)]
   __attribute__ ((aligned(__alignof__(locale::_Impl))));
   fake_locale_Impl c_locale_impl;
-  
+  asm (".symver _ZN9__gnu_cxx13c_locale_implE,\
+        _ZSt13c_locale_impl@@GLIBCPP_3.2");
   typedef char fake_facet_vec[sizeof(locale::facet*)]
   __attribute__ ((aligned(__alignof__(locale::facet*))));
   fake_facet_vec facet_vec[_GLIBCPP_NUM_FACETS];
+  asm (".symver _ZN9__gnu_cxx9facet_vecE,_ZSt9facet_vec@@GLIBCPP_3.2");
 
   typedef char fake_facet_name[sizeof(char*)]
   __attribute__ ((aligned(__alignof__(char*))));
@@ -66,142 +78,161 @@ namespace std
   typedef char fake_ctype_c[sizeof(std::ctype<char>)]
   __attribute__ ((aligned(__alignof__(std::ctype<char>))));
   fake_ctype_c ctype_c;
+  asm (".symver _ZN9__gnu_cxx7ctype_cE,_ZSt7ctype_c@@GLIBCPP_3.2");
 
   typedef char fake_collate_c[sizeof(std::collate<char>)]
   __attribute__ ((aligned(__alignof__(std::collate<char>))));
   fake_collate_c collate_c;
+  asm (".symver _ZN9__gnu_cxx9collate_cE,_ZSt9collate_c@@GLIBCPP_3.2");
 
   typedef char fake_numpunct_c[sizeof(numpunct<char>)]
   __attribute__ ((aligned(__alignof__(numpunct<char>))));
   fake_numpunct_c numpunct_c;
+  asm (".symver _ZN9__gnu_cxx10numpunct_cE,_ZSt10numpunct_c@@GLIBCPP_3.2");
 
   typedef char fake_num_get_c[sizeof(num_get<char>)]
   __attribute__ ((aligned(__alignof__(num_get<char>))));
   fake_num_get_c num_get_c;
+  asm (".symver _ZN9__gnu_cxx9num_get_cE,_ZSt9num_get_c@@GLIBCPP_3.2");
 
   typedef char fake_num_put_c[sizeof(num_put<char>)]
   __attribute__ ((aligned(__alignof__(num_put<char>))));
   fake_num_put_c num_put_c;
+  asm (".symver _ZN9__gnu_cxx9num_put_cE,_ZSt9num_put_c@@GLIBCPP_3.2");
 
   typedef char fake_codecvt_c[sizeof(codecvt<char, char, mbstate_t>)]
   __attribute__ ((aligned(__alignof__(codecvt<char, char, mbstate_t>))));
   fake_codecvt_c codecvt_c;
+  asm (".symver _ZN9__gnu_cxx9codecvt_cE,_ZSt9codecvt_c@@GLIBCPP_3.2");
 
   typedef char fake_moneypunct_c[sizeof(moneypunct<char, true>)]
   __attribute__ ((aligned(__alignof__(moneypunct<char, true>))));
   fake_moneypunct_c moneypunct_tc;
   fake_moneypunct_c moneypunct_fc;
+  asm (".symver _ZN9__gnu_cxx13moneypunct_tcE,\
+        _ZSt13moneypunct_tc@@GLIBCPP_3.2");
+  asm (".symver _ZN9__gnu_cxx13moneypunct_fcE,\
+        _ZSt13moneypunct_fc@@GLIBCPP_3.2");
 
   typedef char fake_money_get_c[sizeof(money_get<char>)]
   __attribute__ ((aligned(__alignof__(money_get<char>))));
   fake_money_get_c money_get_c;
+  asm (".symver _ZN9__gnu_cxx11money_get_cE,_ZSt11money_get_c@@GLIBCPP_3.2");
   
   typedef char fake_money_put_c[sizeof(money_put<char>)]
   __attribute__ ((aligned(__alignof__(money_put<char>))));
   fake_money_put_c money_put_c;
+  asm (".symver _ZN9__gnu_cxx11money_put_cE,_ZSt11money_put_c@@GLIBCPP_3.2");
 
   typedef char fake_timepunct_c[sizeof(__timepunct<char>)]
   __attribute__ ((aligned(__alignof__(__timepunct<char>))));
   fake_timepunct_c timepunct_c;
+  asm (".symver _ZN9__gnu_cxx11timepunct_cE,_ZSt11timepunct_c@@GLIBCPP_3.2");
 
   typedef char fake_time_get_c[sizeof(time_get<char>)]
   __attribute__ ((aligned(__alignof__(time_get<char>))));
   fake_time_get_c time_get_c;
+  asm (".symver _ZN9__gnu_cxx10time_get_cE,_ZSt10time_get_c@@GLIBCPP_3.2");
 
   typedef char fake_time_put_c[sizeof(time_put<char>)]
   __attribute__ ((aligned(__alignof__(time_put<char>))));
   fake_time_put_c time_put_c;
+  asm (".symver _ZN9__gnu_cxx10time_put_cE,_ZSt10time_put_c@@GLIBCPP_3.2");
 
   typedef char fake_messages_c[sizeof(messages<char>)]
   __attribute__ ((aligned(__alignof__(messages<char>))));
   fake_messages_c messages_c;
+  asm (".symver _ZN9__gnu_cxx10messages_cE,_ZSt10messages_c@@GLIBCPP_3.2");
 
 #ifdef  _GLIBCPP_USE_WCHAR_T
   typedef char fake_wtype_w[sizeof(std::ctype<wchar_t>)]
   __attribute__ ((aligned(__alignof__(std::ctype<wchar_t>))));
   fake_wtype_w ctype_w;
+  asm (".symver _ZN9__gnu_cxx7ctype_wE,_ZSt7ctype_w@@GLIBCPP_3.2");
 
   typedef char fake_wollate_w[sizeof(std::collate<wchar_t>)]
   __attribute__ ((aligned(__alignof__(std::collate<wchar_t>))));
   fake_wollate_w collate_w;
+  asm (".symver _ZN9__gnu_cxx9collate_wE,_ZSt9collate_w@@GLIBCPP_3.2");
 
   typedef char fake_numpunct_w[sizeof(numpunct<wchar_t>)]
   __attribute__ ((aligned(__alignof__(numpunct<wchar_t>))));
   fake_numpunct_w numpunct_w;
+  asm (".symver _ZN9__gnu_cxx10numpunct_wE,_ZSt10numpunct_w@@GLIBCPP_3.2");
 
   typedef char fake_num_get_w[sizeof(num_get<wchar_t>)]
   __attribute__ ((aligned(__alignof__(num_get<wchar_t>))));
   fake_num_get_w num_get_w;
+  asm (".symver _ZN9__gnu_cxx9num_get_wE,_ZSt9num_get_w@@GLIBCPP_3.2");
 
   typedef char fake_num_put_w[sizeof(num_put<wchar_t>)]
   __attribute__ ((aligned(__alignof__(num_put<wchar_t>))));
   fake_num_put_w num_put_w;
+  asm (".symver _ZN9__gnu_cxx9num_put_wE,_ZSt9num_put_w@@GLIBCPP_3.2");
 
   typedef char fake_wodecvt_w[sizeof(codecvt<wchar_t, char, mbstate_t>)]
   __attribute__ ((aligned(__alignof__(codecvt<wchar_t, char, mbstate_t>))));
   fake_wodecvt_w codecvt_w;
+  asm (".symver _ZN9__gnu_cxx9codecvt_wE,_ZSt9codecvt_w@@GLIBCPP_3.2");
 
   typedef char fake_moneypunct_w[sizeof(moneypunct<wchar_t, true>)]
   __attribute__ ((aligned(__alignof__(moneypunct<wchar_t, true>))));
   fake_moneypunct_w moneypunct_tw;
   fake_moneypunct_w moneypunct_fw;
+  asm (".symver _ZN9__gnu_cxx13moneypunct_twE,\
+        _ZSt13moneypunct_tw@@GLIBCPP_3.2");
+  asm (".symver _ZN9__gnu_cxx13moneypunct_fwE,\
+        _ZSt13moneypunct_fw@@GLIBCPP_3.2");
 
   typedef char fake_money_get_w[sizeof(money_get<wchar_t>)]
   __attribute__ ((aligned(__alignof__(money_get<wchar_t>))));
   fake_money_get_w money_get_w;
+  asm (".symver _ZN9__gnu_cxx11money_get_wE,_ZSt11money_get_w@@GLIBCPP_3.2");
   
   typedef char fake_money_put_w[sizeof(money_put<wchar_t>)]
   __attribute__ ((aligned(__alignof__(money_put<wchar_t>))));
   fake_money_put_w money_put_w;
+  asm (".symver _ZN9__gnu_cxx11money_put_wE,_ZSt11money_put_w@@GLIBCPP_3.2");
 
   typedef char fake_timepunct_w[sizeof(__timepunct<wchar_t>)]
   __attribute__ ((aligned(__alignof__(__timepunct<wchar_t>))));
   fake_timepunct_w timepunct_w;
+  asm (".symver _ZN9__gnu_cxx11timepunct_wE,_ZSt11timepunct_w@@GLIBCPP_3.2");
 
   typedef char fake_time_get_w[sizeof(time_get<wchar_t>)]
   __attribute__ ((aligned(__alignof__(time_get<wchar_t>))));
   fake_time_get_w time_get_w;
+  asm (".symver _ZN9__gnu_cxx10time_get_wE,_ZSt10time_get_w@@GLIBCPP_3.2");
 
   typedef char fake_time_put_w[sizeof(time_put<wchar_t>)]
   __attribute__ ((aligned(__alignof__(time_put<wchar_t>))));
   fake_time_put_w time_put_w;
+  asm (".symver _ZN9__gnu_cxx10time_put_wE,_ZSt10time_put_w@@GLIBCPP_3.2");
 
   typedef char fake_messages_w[sizeof(messages<wchar_t>)]
   __attribute__ ((aligned(__alignof__(messages<wchar_t>))));
   fake_messages_w messages_w;
+  asm (".symver _ZN9__gnu_cxx10messages_wE,_ZSt10messages_w@@GLIBCPP_3.2");
 #endif
 
-  // Standard stream objects.
-  typedef char fake_istream[sizeof(istream)]
-  __attribute__ ((aligned(__alignof__(istream))));
-  typedef char fake_ostream[sizeof(ostream)] 
-  __attribute__ ((aligned(__alignof__(ostream))));
-  fake_istream cin;
-  fake_ostream cout;
-  fake_ostream cerr;
-  fake_ostream clog;
-
-  typedef char fake_filebuf[sizeof(__gnu_cxx::stdio_filebuf<char>)]
-  __attribute__ ((aligned(__alignof__(__gnu_cxx::stdio_filebuf<char>))));
+  typedef char fake_filebuf[sizeof(stdio_filebuf<char>)]
+  __attribute__ ((aligned(__alignof__(stdio_filebuf<char>))));
   fake_filebuf buf_cout;
   fake_filebuf buf_cin;
   fake_filebuf buf_cerr;
+  asm (".symver _ZN9__gnu_cxx8buf_coutE,_ZSt8buf_cout@@GLIBCPP_3.2");
+  asm (".symver _ZN9__gnu_cxx7buf_cinE,_ZSt7buf_cin@@GLIBCPP_3.2");
+  asm (".symver _ZN9__gnu_cxx8buf_cerrE,_ZSt8buf_cerr@@GLIBCPP_3.2");
 
 #ifdef _GLIBCPP_USE_WCHAR_T
-  typedef char fake_wistream[sizeof(wistream)] 
-  __attribute__ ((aligned(__alignof__(wistream))));
-  typedef char fake_wostream[sizeof(wostream)] 
-  __attribute__ ((aligned(__alignof__(wostream))));
-  fake_wistream wcin;
-  fake_wostream wcout;
-  fake_wostream wcerr;
-  fake_wostream wclog;
-
-  typedef char fake_wfilebuf[sizeof(__gnu_cxx::stdio_filebuf<wchar_t>)]
-  __attribute__ ((aligned(__alignof__(__gnu_cxx::stdio_filebuf<wchar_t>))));
+  typedef char fake_wfilebuf[sizeof(stdio_filebuf<wchar_t>)]
+  __attribute__ ((aligned(__alignof__(stdio_filebuf<wchar_t>))));
   fake_wfilebuf buf_wcout;
   fake_wfilebuf buf_wcin;
   fake_wfilebuf buf_wcerr;
+  asm (".symver _ZN9__gnu_cxx9buf_wcoutE,_ZSt9buf_wcout@@GLIBCPP_3.2");
+  asm (".symver _ZN9__gnu_cxx8buf_wcinE,_ZSt8buf_wcin@@GLIBCPP_3.2");
+  asm (".symver _ZN9__gnu_cxx9buf_wcerrE,_ZSt9buf_wcerr@@GLIBCPP_3.2");
 #endif
 
   // Globals for once-only runtime initialization of mutex objects.  This
@@ -226,4 +257,28 @@ namespace std
   _GLIBCPP_mutex_address_init ()
   { __GTHREAD_MUTEX_INIT_FUNCTION (_GLIBCPP_mutex_address); }
 #endif
-}
+} // namespace __gnu_cxx
+
+namespace std
+{
+  // Standard stream objects.
+  typedef char fake_istream[sizeof(istream)]
+  __attribute__ ((aligned(__alignof__(istream))));
+  typedef char fake_ostream[sizeof(ostream)] 
+  __attribute__ ((aligned(__alignof__(ostream))));
+  fake_istream cin;
+  fake_ostream cout;
+  fake_ostream cerr;
+  fake_ostream clog;
+
+#ifdef _GLIBCPP_USE_WCHAR_T
+  typedef char fake_wistream[sizeof(wistream)] 
+  __attribute__ ((aligned(__alignof__(wistream))));
+  typedef char fake_wostream[sizeof(wostream)] 
+  __attribute__ ((aligned(__alignof__(wostream))));
+  fake_wistream wcin;
+  fake_wostream wcout;
+  fake_wostream wcerr;
+  fake_wostream wclog;
+#endif
+} // namespace std
index c1167f8c15cf6ee8f2cfe7ac7267bd59d4a754a1..7bfdc5b4bb4095cbb03e88f20e4b69527dce569c 100644 (file)
 #include <bits/atomicity.h>
 #include <ext/stdio_filebuf.h>
 
-namespace std 
+namespace __gnu_cxx
 {
   // Extern declarations for global objects in src/globals.cc.
+  extern stdio_filebuf<char> buf_cout;
+  extern stdio_filebuf<char> buf_cin;
+  extern stdio_filebuf<char> buf_cerr;
+
+#ifdef _GLIBCPP_USE_WCHAR_T
+  extern stdio_filebuf<wchar_t> buf_wcout;
+  extern stdio_filebuf<wchar_t> buf_wcin;
+  extern stdio_filebuf<wchar_t> buf_wcerr;
+#endif
+} // namespace __gnu_cxx
+
+namespace std 
+{
+  using namespace __gnu_cxx;
+  
   extern istream cin;
   extern ostream cout;
   extern ostream cerr;
   extern ostream clog;
 
-  using __gnu_cxx::stdio_filebuf;
-  extern stdio_filebuf<char> buf_cout;
-  extern stdio_filebuf<char> buf_cin;
-  extern stdio_filebuf<char> buf_cerr;
-
 #ifdef _GLIBCPP_USE_WCHAR_T
   extern wistream wcin;
   extern wostream wcout;
   extern wostream wcerr;
   extern wostream wclog;
-
-  extern stdio_filebuf<wchar_t> buf_wcout;
-  extern stdio_filebuf<wchar_t> buf_wcin;
-  extern stdio_filebuf<wchar_t> buf_wcerr;
 #endif
 
   // Definitions for static const data members of __ios_flags.
index d9c6931349113952536b040cb4d5603793763257..f858a327cd12f0ac825b6ee2d3a45363af3c190d 100644 (file)
 #include <locale>
 #include <bits/atomicity.h>
 
-namespace std 
+namespace __gnu_cxx
 {
   // Defined in globals.cc.
-  extern locale                c_locale;
-  extern locale::_Impl                 c_locale_impl;
+  extern std::locale           c_locale;
+  extern std::locale::_Impl    c_locale_impl;
+} // namespace __gnu_cxx
+
+namespace std 
+{
+  using namespace __gnu_cxx;
 
   // Definitions for static const data members of locale.
   const locale::category       locale::none;
@@ -50,9 +55,15 @@ namespace std
   const locale::category       locale::messages;
   const locale::category       locale::all;
 
+  // In the future, GLIBCXX_ABI > 5 should remove all asm directives
+  // in this file, and remove exports of any static data members of locale.
   locale::_Impl*               locale::_S_classic;
+
   locale::_Impl*               locale::_S_global; 
+
   const size_t                         locale::_S_categories_size;
+  asm (".symver _ZNSt6locale18_S_categories_sizeE,_ZNSt6locale17_S_num_categoriesE@@GLIBCPP_3.2");
+
   const size_t                         locale::_S_extra_categories_size;
 
   // Definitions for static const data members of locale::id
index a233eb3ec9dd5be24eafacf9c4ece9dea4abd08e..0a2c5210215f6714531d956de469ec4adbfd3cdd 100644 (file)
 #include <cstring>
 #include <locale>
 
-namespace std
+namespace __gnu_cxx
 {
+  using namespace std;
+
   // Defined in globals.cc.
   extern locale::facet** facet_vec;
   extern char* facet_name[6 + _GLIBCPP_NUM_CATEGORIES];
@@ -66,6 +68,11 @@ namespace std
   extern time_put<wchar_t>                     time_put_w;
   extern std::messages<wchar_t>                messages_w;
 #endif
+} // namespace __gnu_cxx
+
+namespace std
+{
+  using namespace __gnu_cxx;
 
   locale::_Impl::
   ~_Impl() throw()