OSDN Git Service

2010-02-07 Paolo Carlini <paolo.carlini@oracle.com>
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 7 Feb 2010 18:36:48 +0000 (18:36 +0000)
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 7 Feb 2010 18:36:48 +0000 (18:36 +0000)
PR libstdc++/16896
* include/bits/stl_list.h (_List_node_base::transfer): Rename
to _M_transfer.
(_List_node_base::reverse): Rename to _M_reverse.
(_List_node_base::hook): Rename to _M_hook.
(_List_node_base::unhook): Rename to _M_unhook; adjust callers.
* include/bits/list.tcc: Adjust callers.
* src/list.cc: Adjust.
* src/compatibility.cc: Likewise.
* src/compatibility-list.cc: New.
* src/compatibility-debug_list.cc: Likewise.
* src/compatibility-parallel_list.cc: Likewise.
* src/Makefile.am: Add.
* src/Makefile.in: Regenerate.
* config/abi/pre/gnu.ver: Export _M_* symbols.

* src/hash.cc: Rename to hash-aux.cc.
* src/compatibility-ldbl.cc: Adjust.
* src/compatibility-c++0x.cc: Likewise.
* src/hash_tr1.cc: Likewise.

* src/hashtable.cc: Rename to hashtable-aux.cc.
* src/hashtable_c++0x.cc: Adjust.
* src/hashtable_tr1.cc: Likewise.

* src/limits_c++0x.cc: Fold...
* src/limits.cc... here.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@156578 138bc75d-0d04-0410-961f-82ee72b054a4

20 files changed:
libstdc++-v3/ChangeLog
libstdc++-v3/config/abi/pre/gnu.ver
libstdc++-v3/include/bits/list.tcc
libstdc++-v3/include/bits/stl_list.h
libstdc++-v3/src/Makefile.am
libstdc++-v3/src/Makefile.in
libstdc++-v3/src/compatibility-c++0x.cc
libstdc++-v3/src/compatibility-debug_list.cc [new file with mode: 0644]
libstdc++-v3/src/compatibility-ldbl.cc
libstdc++-v3/src/compatibility-list.cc [new file with mode: 0644]
libstdc++-v3/src/compatibility-parallel_list.cc [new file with mode: 0644]
libstdc++-v3/src/compatibility.cc
libstdc++-v3/src/hash-aux.cc [moved from libstdc++-v3/src/hash.cc with 100% similarity]
libstdc++-v3/src/hash_tr1.cc
libstdc++-v3/src/hashtable-aux.cc [moved from libstdc++-v3/src/hashtable.cc with 100% similarity]
libstdc++-v3/src/hashtable_c++0x.cc
libstdc++-v3/src/hashtable_tr1.cc
libstdc++-v3/src/limits.cc
libstdc++-v3/src/limits_c++0x.cc [deleted file]
libstdc++-v3/src/list.cc

index 52ce813..fe4f039 100644 (file)
@@ -1,5 +1,35 @@
 2010-02-07  Paolo Carlini  <paolo.carlini@oracle.com>
 
+       PR libstdc++/16896
+       * include/bits/stl_list.h (_List_node_base::transfer): Rename
+       to _M_transfer.
+       (_List_node_base::reverse): Rename to _M_reverse.
+       (_List_node_base::hook): Rename to _M_hook.
+       (_List_node_base::unhook): Rename to _M_unhook; adjust callers.
+       * include/bits/list.tcc: Adjust callers.
+       * src/list.cc: Adjust.
+       * src/compatibility.cc: Likewise.
+       * src/compatibility-list.cc: New.
+       * src/compatibility-debug_list.cc: Likewise.
+       * src/compatibility-parallel_list.cc: Likewise.
+       * src/Makefile.am: Add.
+       * src/Makefile.in: Regenerate.
+       * config/abi/pre/gnu.ver: Export _M_* symbols.
+
+       * src/hash.cc: Rename to hash-aux.cc.
+       * src/compatibility-ldbl.cc: Adjust.
+       * src/compatibility-c++0x.cc: Likewise.
+       * src/hash_tr1.cc: Likewise.
+
+       * src/hashtable.cc: Rename to hashtable-aux.cc.
+       * src/hashtable_c++0x.cc: Adjust.
+       * src/hashtable_tr1.cc: Likewise.
+
+       * src/limits_c++0x.cc: Fold...
+       * src/limits.cc... here.
+
+2010-02-07  Paolo Carlini  <paolo.carlini@oracle.com>
+
        * include/bits/stl_pair.h (pair<>::pair(_U1&&, const _T2&),
        pair<>::pair(const _T1&, _U2&&), pair<>::pair(_U1&&, _U2&&)):
        Revert to std::is_convertible, basing on DR 811.
index 04c0f7c..9d3ff47 100644 (file)
@@ -1113,6 +1113,21 @@ GLIBCXX_3.4.14 {
     # std::time_get::_M_extract_wday_or_month
     _ZNKSt8time_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE24_M_extract_wday_or_month*;
 
+    # libstdc++/16896
+    _ZNSt15_List_node_base7_M_hook*;
+    _ZNSt15_List_node_base9_M_unhookEv;
+    _ZNSt15_List_node_base10_M_reverseEv;
+    _ZNSt15_List_node_base11_M_transfer*;
+
+    _ZNSt6__norm15_List_node_base7_M_hook*;
+    _ZNSt6__norm15_List_node_base9_M_unhookEv;
+    _ZNSt6__norm15_List_node_base10_M_reverseEv;
+    _ZNSt6__norm15_List_node_base11_M_transfer*;
+
+    _ZNSt9__cxx199815_List_node_base7_M_hook*;
+    _ZNSt9__cxx199815_List_node_base9_M_unhookEv;
+    _ZNSt9__cxx199815_List_node_base10_M_reverseEv;
+    _ZNSt9__cxx199815_List_node_base11_M_transfer*;
 } GLIBCXX_3.4.13;
 
 # Symbols in the support library (libsupc++) have their own tag.
index 899b418..5359239 100644 (file)
@@ -1,6 +1,6 @@
 // List implementation (out of line) -*- C++ -*-
 
-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -87,7 +87,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
       emplace(iterator __position, _Args&&... __args)
       {
        _Node* __tmp = _M_create_node(std::forward<_Args>(__args)...);
-       __tmp->hook(__position._M_node);
+       __tmp->_M_hook(__position._M_node);
        return iterator(__tmp);
       }
 #endif
@@ -98,7 +98,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
     insert(iterator __position, const value_type& __x)
     {
       _Node* __tmp = _M_create_node(__x);
-      __tmp->hook(__position._M_node);
+      __tmp->_M_hook(__position._M_node);
       return iterator(__tmp);
     }
 
index 22a1bcb..5fcbc4f 100644 (file)
@@ -77,17 +77,17 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
     swap(_List_node_base& __x, _List_node_base& __y) throw ();
 
     void
-    transfer(_List_node_base * const __first,
-            _List_node_base * const __last) throw ();
+    _M_transfer(_List_node_base * const __first,
+               _List_node_base * const __last) throw ();
 
     void
-    reverse() throw ();
+    _M_reverse() throw ();
 
     void
-    hook(_List_node_base * const __position) throw ();
+    _M_hook(_List_node_base * const __position) throw ();
 
     void
-    unhook() throw ();
+    _M_unhook() throw ();
   };
 
   /// An actual node in the %list.
@@ -1345,7 +1345,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
        */
       void
       reverse()
-      { this->_M_impl._M_node.reverse(); }
+      { this->_M_impl._M_node._M_reverse(); }
 
       /**
        *  @brief  Sort the elements.
@@ -1424,7 +1424,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
       // Moves the elements from [first,last) before position.
       void
       _M_transfer(iterator __position, iterator __first, iterator __last)
-      { __position._M_node->transfer(__first._M_node, __last._M_node); }
+      { __position._M_node->_M_transfer(__first._M_node, __last._M_node); }
 
       // Inserts new element at position given and with value given.
 #ifndef __GXX_EXPERIMENTAL_CXX0X__
@@ -1432,7 +1432,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
       _M_insert(iterator __position, const value_type& __x)
       {
         _Node* __tmp = _M_create_node(__x);
-        __tmp->hook(__position._M_node);
+        __tmp->_M_hook(__position._M_node);
       }
 #else
      template<typename... _Args>
@@ -1440,7 +1440,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
        _M_insert(iterator __position, _Args&&... __args)
        {
         _Node* __tmp = _M_create_node(std::forward<_Args>(__args)...);
-        __tmp->hook(__position._M_node);
+        __tmp->_M_hook(__position._M_node);
        }
 #endif
 
@@ -1448,7 +1448,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
       void
       _M_erase(iterator __position)
       {
-        __position._M_node->unhook();
+        __position._M_node->_M_unhook();
         _Node* __n = static_cast<_Node*>(__position._M_node);
 #ifdef __GXX_EXPERIMENTAL_CXX0X__
         _M_get_Node_allocator().destroy(__n);
index 4306dd5..38b79a8 100644 (file)
@@ -1,7 +1,7 @@
 ## Makefile for the src subdirectory of the GNU C++ Standard library.
 ##
 ## Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
-## 2006, 2007, 2008, 2009
+## 2006, 2007, 2008, 2009, 2010
 ## Free Software Foundation, Inc.
 ##
 ## This file is part of the libstdc++ version 3 distribution.
@@ -121,7 +121,8 @@ basic_file.cc: ${glibcxx_srcdir}/$(BASIC_FILE_CC)
        $(LN_S) ${glibcxx_srcdir}/$(BASIC_FILE_CC) ./$@ || true
 
 if ENABLE_PARALLEL
-parallel_sources = parallel_list.cc parallel_settings.cc
+parallel_sources = parallel_list.cc parallel_settings.cc \
+                  compatibility-parallel_list.cc
 else
 parallel_sources =
 endif
@@ -141,6 +142,8 @@ sources = \
        codecvt.cc \
        compatibility.cc \
        compatibility-c++0x.cc \
+       compatibility-debug_list.cc \
+       compatibility-list.cc \
        complex_io.cc \
        ctype.cc \
        debug.cc \
@@ -154,7 +157,6 @@ sources = \
        ios_init.cc \
        ios_locale.cc \
        limits.cc \
-       limits_c++0x.cc \
        list.cc \
        debug_list.cc \
        locale.cc \
@@ -239,6 +241,11 @@ parallel_settings.lo: parallel_settings.cc
 parallel_settings.o: parallel_settings.cc
        $(CXXCOMPILE) $(PARALLEL_FLAGS) -c $<
 
+compatibility-parallel_list.lo: compatibility-parallel_list.cc
+       $(LTCXXCOMPILE) $(PARALLEL_FLAGS) -c $<
+compatibility-parallel_list.o: compatibility-parallel_list.cc
+       $(CXXCOMPILE) $(PARALLEL_FLAGS) -c $<
+
 # Use special rules for the C++0x sources so that the proper flags are passed.
 functexcept.lo: functexcept.cc
        $(LTCXXCOMPILE) -std=gnu++0x -c $<
@@ -270,9 +277,9 @@ hashtable_c++0x.lo: hashtable_c++0x.cc
 hashtable_c++0x.o: hashtable_c++0x.cc
        $(CXXCOMPILE) -std=gnu++0x -c $<
 
-limits_c++0x.lo: limits_c++0x.cc
+limits.lo: limits.cc
        $(LTCXXCOMPILE) -std=gnu++0x -c $<
-limits_c++0x.o: limits_c++0x.cc
+limits.o: limits.cc
        $(CXXCOMPILE) -std=gnu++0x -c $<
 
 atomic.lo: atomic.cc
index a2eb477..e48eca4 100644 (file)
@@ -87,11 +87,12 @@ LTLIBRARIES = $(toolexeclib_LTLIBRARIES)
 am__DEPENDENCIES_1 =
 am__libstdc___la_SOURCES_DIST = atomic.cc bitmap_allocator.cc \
        pool_allocator.cc mt_allocator.cc codecvt.cc compatibility.cc \
-       compatibility-c++0x.cc complex_io.cc ctype.cc debug.cc \
+       compatibility-c++0x.cc compatibility-debug_list.cc \
+       compatibility-list.cc complex_io.cc ctype.cc debug.cc \
        functexcept.cc hash_tr1.cc globals_io.cc hashtable_tr1.cc \
        hashtable_c++0x.cc ios.cc ios_failure.cc ios_init.cc \
-       ios_locale.cc limits.cc limits_c++0x.cc list.cc debug_list.cc \
-       locale.cc locale_init.cc locale_facets.cc localename.cc \
+       ios_locale.cc limits.cc list.cc debug_list.cc locale.cc \
+       locale_init.cc locale_facets.cc localename.cc \
        math_stubs_float.cc math_stubs_long_double.cc stdexcept.cc \
        strstream.cc system_error.cc tree.cc allocator-inst.cc \
        concept-inst.cc fstream-inst.cc ext-inst.cc ios-inst.cc \
@@ -103,22 +104,25 @@ am__libstdc___la_SOURCES_DIST = atomic.cc bitmap_allocator.cc \
        collate_members.cc ctype_members.cc messages_members.cc \
        monetary_members.cc numeric_members.cc time_members.cc \
        basic_file.cc c++locale.cc compatibility-ldbl.cc \
-       parallel_list.cc parallel_settings.cc
+       parallel_list.cc parallel_settings.cc \
+       compatibility-parallel_list.cc
 am__objects_1 = atomicity.lo codecvt_members.lo collate_members.lo \
        ctype_members.lo messages_members.lo monetary_members.lo \
        numeric_members.lo time_members.lo
 @GLIBCXX_LDBL_COMPAT_TRUE@am__objects_2 = compatibility-ldbl.lo
 @ENABLE_PARALLEL_TRUE@am__objects_3 = parallel_list.lo \
-@ENABLE_PARALLEL_TRUE@ parallel_settings.lo
+@ENABLE_PARALLEL_TRUE@ parallel_settings.lo \
+@ENABLE_PARALLEL_TRUE@ compatibility-parallel_list.lo
 am__objects_4 = basic_file.lo c++locale.lo $(am__objects_2) \
        $(am__objects_3)
 am__objects_5 = atomic.lo bitmap_allocator.lo pool_allocator.lo \
        mt_allocator.lo codecvt.lo compatibility.lo \
-       compatibility-c++0x.lo complex_io.lo ctype.lo debug.lo \
+       compatibility-c++0x.lo compatibility-debug_list.lo \
+       compatibility-list.lo complex_io.lo ctype.lo debug.lo \
        functexcept.lo hash_tr1.lo globals_io.lo hashtable_tr1.lo \
        hashtable_c++0x.lo ios.lo ios_failure.lo ios_init.lo \
-       ios_locale.lo limits.lo limits_c++0x.lo list.lo debug_list.lo \
-       locale.lo locale_init.lo locale_facets.lo localename.lo \
+       ios_locale.lo limits.lo list.lo debug_list.lo locale.lo \
+       locale_init.lo locale_facets.lo localename.lo \
        math_stubs_float.lo math_stubs_long_double.lo stdexcept.lo \
        strstream.lo system_error.lo tree.lo allocator-inst.lo \
        concept-inst.lo fstream-inst.lo ext-inst.lo ios-inst.lo \
@@ -369,7 +373,9 @@ host_sources_extra = \
        basic_file.cc c++locale.cc ${ldbl_compat_sources} ${parallel_sources}
 
 @ENABLE_PARALLEL_FALSE@parallel_sources = 
-@ENABLE_PARALLEL_TRUE@parallel_sources = parallel_list.cc parallel_settings.cc
+@ENABLE_PARALLEL_TRUE@parallel_sources = parallel_list.cc parallel_settings.cc \
+@ENABLE_PARALLEL_TRUE@            compatibility-parallel_list.cc
+
 @GLIBCXX_LDBL_COMPAT_FALSE@ldbl_compat_sources = 
 @GLIBCXX_LDBL_COMPAT_TRUE@ldbl_compat_sources = compatibility-ldbl.cc
 
@@ -382,6 +388,8 @@ sources = \
        codecvt.cc \
        compatibility.cc \
        compatibility-c++0x.cc \
+       compatibility-debug_list.cc \
+       compatibility-list.cc \
        complex_io.cc \
        ctype.cc \
        debug.cc \
@@ -395,7 +403,6 @@ sources = \
        ios_init.cc \
        ios_locale.cc \
        limits.cc \
-       limits_c++0x.cc \
        list.cc \
        debug_list.cc \
        locale.cc \
@@ -869,6 +876,11 @@ parallel_settings.lo: parallel_settings.cc
 parallel_settings.o: parallel_settings.cc
        $(CXXCOMPILE) $(PARALLEL_FLAGS) -c $<
 
+compatibility-parallel_list.lo: compatibility-parallel_list.cc
+       $(LTCXXCOMPILE) $(PARALLEL_FLAGS) -c $<
+compatibility-parallel_list.o: compatibility-parallel_list.cc
+       $(CXXCOMPILE) $(PARALLEL_FLAGS) -c $<
+
 # Use special rules for the C++0x sources so that the proper flags are passed.
 functexcept.lo: functexcept.cc
        $(LTCXXCOMPILE) -std=gnu++0x -c $<
@@ -900,9 +912,9 @@ hashtable_c++0x.lo: hashtable_c++0x.cc
 hashtable_c++0x.o: hashtable_c++0x.cc
        $(CXXCOMPILE) -std=gnu++0x -c $<
 
-limits_c++0x.lo: limits_c++0x.cc
+limits.lo: limits.cc
        $(LTCXXCOMPILE) -std=gnu++0x -c $<
-limits_c++0x.o: limits_c++0x.cc
+limits.o: limits.cc
        $(CXXCOMPILE) -std=gnu++0x -c $<
 
 atomic.lo: atomic.cc
index 5d6e5dd..c075a9b 100644 (file)
@@ -1,6 +1,6 @@
 // Compatibility symbols for previous versions, C++0x bits -*- C++ -*-
 
-// Copyright (C) 2009 Free Software Foundation, Inc.
+// Copyright (C) 2009, 2010 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
@@ -104,7 +104,7 @@ namespace std
       }
     };
 
-#include "hash.cc"
+#include "hash-aux.cc"
 
   template<>
     size_t
diff --git a/libstdc++-v3/src/compatibility-debug_list.cc b/libstdc++-v3/src/compatibility-debug_list.cc
new file mode 100644 (file)
index 0000000..3f14a53
--- /dev/null
@@ -0,0 +1,27 @@
+// Compatibility symbols for previous versions, debug list -*- C++ -*-
+
+// Copyright (C) 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#define _GLIBCXX_DEBUG
+
+#include "compatibility-list.cc"
index 9658751..d73be4a 100644 (file)
@@ -1,6 +1,6 @@
 // Compatibility symbols for -mlong-double-64 compatibility -*- C++ -*-
 
-// Copyright (C) 2006, 2008, 2009
+// Copyright (C) 2006, 2008, 2009, 2010
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -74,7 +74,7 @@ namespace std
 {
   namespace tr1 
   {
-#include "hash.cc"
+#include "hash-aux.cc"
   }
 }
 
diff --git a/libstdc++-v3/src/compatibility-list.cc b/libstdc++-v3/src/compatibility-list.cc
new file mode 100644 (file)
index 0000000..57a2df9
--- /dev/null
@@ -0,0 +1,99 @@
+// Compatibility symbols for previous versions, list bits -*- C++ -*-
+
+// Copyright (C) 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <bits/move.h>
+
+_GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
+
+  struct _List_node_base
+  {
+    _List_node_base* _M_next;
+    _List_node_base* _M_prev;
+
+    void
+    transfer(_List_node_base * const __first,
+            _List_node_base * const __last) throw ();
+
+    void
+    reverse() throw ();
+
+    void
+    hook(_List_node_base * const __position) throw ();
+
+    void
+    unhook() throw ();
+  };
+
+  void
+  _List_node_base::transfer(_List_node_base * const __first,
+                            _List_node_base * const __last) throw ()
+  {
+    if (this != __last)
+    {
+      // Remove [first, last) from its old position.
+      __last->_M_prev->_M_next  = this;
+      __first->_M_prev->_M_next = __last;
+      this->_M_prev->_M_next    = __first;
+  
+      // Splice [first, last) into its new position.
+      _List_node_base* const __tmp = this->_M_prev;
+      this->_M_prev                = __last->_M_prev;
+      __last->_M_prev              = __first->_M_prev;
+      __first->_M_prev             = __tmp;
+    }
+  }
+
+  void
+  _List_node_base::reverse() throw ()
+  {
+    _List_node_base* __tmp = this;
+    do
+    {
+      std::swap(__tmp->_M_next, __tmp->_M_prev);
+
+      // Old next node is now prev.
+      __tmp = __tmp->_M_prev;     
+    } 
+    while (__tmp != this);
+  }
+
+  void
+  _List_node_base::hook(_List_node_base* const __position) throw ()
+  {
+    this->_M_next = __position;
+    this->_M_prev = __position->_M_prev;
+    __position->_M_prev->_M_next = this;
+    __position->_M_prev = this;
+  }
+
+  void
+  _List_node_base::unhook() throw ()
+  {
+    _List_node_base* const __next_node = this->_M_next;
+    _List_node_base* const __prev_node = this->_M_prev;
+    __prev_node->_M_next = __next_node;
+    __next_node->_M_prev = __prev_node;
+  }
+
+_GLIBCXX_END_NESTED_NAMESPACE
diff --git a/libstdc++-v3/src/compatibility-parallel_list.cc b/libstdc++-v3/src/compatibility-parallel_list.cc
new file mode 100644 (file)
index 0000000..d9d7b60
--- /dev/null
@@ -0,0 +1,25 @@
+// Compatibility symbols for previous versions, parallel list -*- C++ -*-
+
+// Copyright (C) 2010 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include "compatibility-list.cc"
index 41071d2..dceebe1 100644 (file)
@@ -1,6 +1,6 @@
 // Compatibility symbols for previous versions -*- C++ -*-
 
-// Copyright (C) 2005, 2006, 2007, 2008, 2009
+// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -386,7 +386,7 @@ _ZN10__gnu_norm15_List_node_base7reverseEv;
 _ZN10__gnu_norm15_List_node_base8transferEPS0_S1_;
 */
 #include "list.cc"
-_GLIBCXX_ASM_SYMVER(_ZNSt17_List_node_baseXX4hookEPS_, \
+_GLIBCXX_ASM_SYMVER(_ZNSt17_List_node_baseXX7_M_hookEPS_, \
 _ZN10__gnu_norm15_List_node_base4hookEPS0_, \
 GLIBCXX_3.4)
 
@@ -394,15 +394,15 @@ _GLIBCXX_ASM_SYMVER(_ZNSt17_List_node_baseXX4swapERS_S0_, \
 _ZN10__gnu_norm15_List_node_base4swapERS0_S1_, \
 GLIBCXX_3.4)
 
-_GLIBCXX_ASM_SYMVER(_ZNSt17_List_node_baseXX6unhookEv, \
+_GLIBCXX_ASM_SYMVER(_ZNSt17_List_node_baseXX9_M_unhookEv, \
 _ZN10__gnu_norm15_List_node_base6unhookEv, \
 GLIBCXX_3.4)
 
-_GLIBCXX_ASM_SYMVER(_ZNSt17_List_node_baseXX7reverseEv, \
+_GLIBCXX_ASM_SYMVER(_ZNSt17_List_node_baseXX10_M_reverseEv, \
 _ZN10__gnu_norm15_List_node_base7reverseEv, \
 GLIBCXX_3.4)
 
-_GLIBCXX_ASM_SYMVER(_ZNSt17_List_node_baseXX8transferEPS_S0_, \
+_GLIBCXX_ASM_SYMVER(_ZNSt17_List_node_baseXX11_M_transferEPS_S0_, \
 _ZN10__gnu_norm15_List_node_base8transferEPS0_S1_, \
 GLIBCXX_3.4)
 #undef _List_node_base
index 54f2b6e..10ba64b 100644 (file)
@@ -1,6 +1,6 @@
 // std::hash definitions -*- C++ -*-
 
-// Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
@@ -31,6 +31,6 @@ namespace std
 {
   namespace tr1 
   {
-#include "hash.cc"
+#include "hash-aux.cc"
   }
 }
index 5a91fde..c99a094 100644 (file)
@@ -1,6 +1,6 @@
 // std::__detail definitions -*- C++ -*-
 
-// Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
@@ -28,5 +28,5 @@
 
 namespace std
 {
-#include "hashtable.cc"
+#include "hashtable-aux.cc"
 }
index 160fd8e..70de1bd 100644 (file)
@@ -1,6 +1,6 @@
 // std::__detail definitions -*- C++ -*-
 
-// Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
@@ -26,6 +26,6 @@ namespace std
 {
   namespace tr1 
   {
-#include "hashtable.cc"
+#include "hashtable-aux.cc"
   }
 }
index 3cf2c28..09a5dae 100644 (file)
@@ -1,6 +1,6 @@
 // Static data members of -*- C++ -*- numeric_limits classes
 
-// Copyright (C) 1999, 2001, 2002, 2005, 2006, 2009
+// Copyright (C) 1999, 2001, 2002, 2005, 2006, 2009, 2010
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -443,6 +443,54 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
   const bool numeric_limits<long double>::tinyness_before;
   const float_round_style numeric_limits<long double>::round_style;
 
+  // char16_t
+  const bool numeric_limits<char16_t>::is_specialized;
+  const int  numeric_limits<char16_t>::digits;
+  const int  numeric_limits<char16_t>::digits10;
+  const bool numeric_limits<char16_t>::is_signed;
+  const bool numeric_limits<char16_t>::is_integer;
+  const bool numeric_limits<char16_t>::is_exact;
+  const int  numeric_limits<char16_t>::radix;
+  const int  numeric_limits<char16_t>::min_exponent;
+  const int  numeric_limits<char16_t>::min_exponent10;
+  const int  numeric_limits<char16_t>::max_exponent;
+  const int  numeric_limits<char16_t>::max_exponent10;
+  const bool numeric_limits<char16_t>::has_infinity;
+  const bool numeric_limits<char16_t>::has_quiet_NaN;
+  const bool numeric_limits<char16_t>::has_signaling_NaN;
+  const float_denorm_style numeric_limits<char16_t>::has_denorm;
+  const bool numeric_limits<char16_t>::has_denorm_loss;
+  const bool numeric_limits<char16_t>::is_iec559;
+  const bool numeric_limits<char16_t>::is_bounded;
+  const bool numeric_limits<char16_t>::is_modulo;
+  const bool numeric_limits<char16_t>::traps;
+  const bool numeric_limits<char16_t>::tinyness_before;
+  const float_round_style numeric_limits<char16_t>::round_style;
+
+  // char32_t
+  const bool numeric_limits<char32_t>::is_specialized;
+  const int  numeric_limits<char32_t>::digits;
+  const int  numeric_limits<char32_t>::digits10;
+  const bool numeric_limits<char32_t>::is_signed;
+  const bool numeric_limits<char32_t>::is_integer;
+  const bool numeric_limits<char32_t>::is_exact;
+  const int  numeric_limits<char32_t>::radix;
+  const int  numeric_limits<char32_t>::min_exponent;
+  const int  numeric_limits<char32_t>::min_exponent10;
+  const int  numeric_limits<char32_t>::max_exponent;
+  const int  numeric_limits<char32_t>::max_exponent10;
+  const bool numeric_limits<char32_t>::has_infinity;
+  const bool numeric_limits<char32_t>::has_quiet_NaN;
+  const bool numeric_limits<char32_t>::has_signaling_NaN;
+  const float_denorm_style numeric_limits<char32_t>::has_denorm;
+  const bool numeric_limits<char32_t>::has_denorm_loss;
+  const bool numeric_limits<char32_t>::is_iec559;
+  const bool numeric_limits<char32_t>::is_bounded;
+  const bool numeric_limits<char32_t>::is_modulo;
+  const bool numeric_limits<char32_t>::traps;
+  const bool numeric_limits<char32_t>::tinyness_before;
+  const float_round_style numeric_limits<char32_t>::round_style;
+
 _GLIBCXX_END_NAMESPACE
 
 // XXX GLIBCXX_ABI Deprecated
diff --git a/libstdc++-v3/src/limits_c++0x.cc b/libstdc++-v3/src/limits_c++0x.cc
deleted file mode 100644 (file)
index b911bd4..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-// std::limits definitions -*- C++ -*-
-
-// Copyright (C) 2008, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-// <http://www.gnu.org/licenses/>.
-
-#include <limits>
-
-#ifndef __GXX_EXPERIMENTAL_CXX0X__
-# error "limits_c++0x.cc must be compiled with -std=gnu++0x"
-#endif
-
-namespace std
-{
-  // char16_t
-  const bool numeric_limits<char16_t>::is_specialized;
-  const int  numeric_limits<char16_t>::digits;
-  const int  numeric_limits<char16_t>::digits10;
-  const bool numeric_limits<char16_t>::is_signed;
-  const bool numeric_limits<char16_t>::is_integer;
-  const bool numeric_limits<char16_t>::is_exact;
-  const int  numeric_limits<char16_t>::radix;
-  const int  numeric_limits<char16_t>::min_exponent;
-  const int  numeric_limits<char16_t>::min_exponent10;
-  const int  numeric_limits<char16_t>::max_exponent;
-  const int  numeric_limits<char16_t>::max_exponent10;
-  const bool numeric_limits<char16_t>::has_infinity;
-  const bool numeric_limits<char16_t>::has_quiet_NaN;
-  const bool numeric_limits<char16_t>::has_signaling_NaN;
-  const float_denorm_style numeric_limits<char16_t>::has_denorm;
-  const bool numeric_limits<char16_t>::has_denorm_loss;
-  const bool numeric_limits<char16_t>::is_iec559;
-  const bool numeric_limits<char16_t>::is_bounded;
-  const bool numeric_limits<char16_t>::is_modulo;
-  const bool numeric_limits<char16_t>::traps;
-  const bool numeric_limits<char16_t>::tinyness_before;
-  const float_round_style numeric_limits<char16_t>::round_style;
-
-  // char32_t
-  const bool numeric_limits<char32_t>::is_specialized;
-  const int  numeric_limits<char32_t>::digits;
-  const int  numeric_limits<char32_t>::digits10;
-  const bool numeric_limits<char32_t>::is_signed;
-  const bool numeric_limits<char32_t>::is_integer;
-  const bool numeric_limits<char32_t>::is_exact;
-  const int  numeric_limits<char32_t>::radix;
-  const int  numeric_limits<char32_t>::min_exponent;
-  const int  numeric_limits<char32_t>::min_exponent10;
-  const int  numeric_limits<char32_t>::max_exponent;
-  const int  numeric_limits<char32_t>::max_exponent10;
-  const bool numeric_limits<char32_t>::has_infinity;
-  const bool numeric_limits<char32_t>::has_quiet_NaN;
-  const bool numeric_limits<char32_t>::has_signaling_NaN;
-  const float_denorm_style numeric_limits<char32_t>::has_denorm;
-  const bool numeric_limits<char32_t>::has_denorm_loss;
-  const bool numeric_limits<char32_t>::is_iec559;
-  const bool numeric_limits<char32_t>::is_bounded;
-  const bool numeric_limits<char32_t>::is_modulo;
-  const bool numeric_limits<char32_t>::traps;
-  const bool numeric_limits<char32_t>::tinyness_before;
-  const float_round_style numeric_limits<char32_t>::round_style;
-}
index e5523b9..f35feec 100644 (file)
@@ -1,6 +1,6 @@
 // std::list utilities implementation -*- C++ -*-
 
-// Copyright (C) 2003, 2005, 2009 Free Software Foundation, Inc.
+// Copyright (C) 2003, 2005, 2009, 2010 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
@@ -85,8 +85,8 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
   }
 
   void
-  _List_node_base::transfer(_List_node_base * const __first,
-                            _List_node_base * const __last)
+  _List_node_base::_M_transfer(_List_node_base * const __first,
+                              _List_node_base * const __last)
   {
     if (this != __last)
     {
@@ -104,7 +104,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
   }
 
   void
-  _List_node_base::reverse()
+  _List_node_base::_M_reverse()
   {
     _List_node_base* __tmp = this;
     do
@@ -118,7 +118,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
   }
 
   void
-  _List_node_base::hook(_List_node_base* const __position)
+  _List_node_base::_M_hook(_List_node_base* const __position)
   {
     this->_M_next = __position;
     this->_M_prev = __position->_M_prev;
@@ -127,7 +127,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
   }
 
   void
-  _List_node_base::unhook()
+  _List_node_base::_M_unhook()
   {
     _List_node_base* const __next_node = this->_M_next;
     _List_node_base* const __prev_node = this->_M_prev;