aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2010-02-07 18:36:48 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2010-02-07 18:36:48 +0000
commit240c7f7f570ea8b125fa764daedccd7ce1c147c7 (patch)
tree6213b8ceab23028a746ed1b0dd8c40841c9dd800
parent0e7e3cb8362764bdabd4c9a23ea09f9a04fc3e9a (diff)
downloadgcc-240c7f7f570ea8b125fa764daedccd7ce1c147c7.zip
gcc-240c7f7f570ea8b125fa764daedccd7ce1c147c7.tar.gz
gcc-240c7f7f570ea8b125fa764daedccd7ce1c147c7.tar.bz2
re PR libstdc++/16896 (Use of non-reserved names in stl_list.h)
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. From-SVN: r156578
-rw-r--r--libstdc++-v3/ChangeLog30
-rw-r--r--libstdc++-v3/config/abi/pre/gnu.ver15
-rw-r--r--libstdc++-v3/include/bits/list.tcc6
-rw-r--r--libstdc++-v3/include/bits/stl_list.h20
-rw-r--r--libstdc++-v3/src/Makefile.am17
-rw-r--r--libstdc++-v3/src/Makefile.in36
-rw-r--r--libstdc++-v3/src/compatibility-c++0x.cc4
-rw-r--r--libstdc++-v3/src/compatibility-debug_list.cc27
-rw-r--r--libstdc++-v3/src/compatibility-ldbl.cc4
-rw-r--r--libstdc++-v3/src/compatibility-list.cc99
-rw-r--r--libstdc++-v3/src/compatibility-parallel_list.cc25
-rw-r--r--libstdc++-v3/src/compatibility.cc10
-rw-r--r--libstdc++-v3/src/hash-aux.cc (renamed from libstdc++-v3/src/hash.cc)0
-rw-r--r--libstdc++-v3/src/hash_tr1.cc4
-rw-r--r--libstdc++-v3/src/hashtable-aux.cc (renamed from libstdc++-v3/src/hashtable.cc)0
-rw-r--r--libstdc++-v3/src/hashtable_c++0x.cc4
-rw-r--r--libstdc++-v3/src/hashtable_tr1.cc4
-rw-r--r--libstdc++-v3/src/limits.cc50
-rw-r--r--libstdc++-v3/src/limits_c++0x.cc80
-rw-r--r--libstdc++-v3/src/list.cc12
20 files changed, 315 insertions, 132 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 52ce813..fe4f039 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -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.
diff --git a/libstdc++-v3/config/abi/pre/gnu.ver b/libstdc++-v3/config/abi/pre/gnu.ver
index 04c0f7c..9d3ff47 100644
--- a/libstdc++-v3/config/abi/pre/gnu.ver
+++ b/libstdc++-v3/config/abi/pre/gnu.ver
@@ -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.
diff --git a/libstdc++-v3/include/bits/list.tcc b/libstdc++-v3/include/bits/list.tcc
index 899b418..5359239 100644
--- a/libstdc++-v3/include/bits/list.tcc
+++ b/libstdc++-v3/include/bits/list.tcc
@@ -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);
}
diff --git a/libstdc++-v3/include/bits/stl_list.h b/libstdc++-v3/include/bits/stl_list.h
index 22a1bcb..5fcbc4f 100644
--- a/libstdc++-v3/include/bits/stl_list.h
+++ b/libstdc++-v3/include/bits/stl_list.h
@@ -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);
diff --git a/libstdc++-v3/src/Makefile.am b/libstdc++-v3/src/Makefile.am
index 4306dd5..38b79a8 100644
--- a/libstdc++-v3/src/Makefile.am
+++ b/libstdc++-v3/src/Makefile.am
@@ -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
diff --git a/libstdc++-v3/src/Makefile.in b/libstdc++-v3/src/Makefile.in
index a2eb477..e48eca4 100644
--- a/libstdc++-v3/src/Makefile.in
+++ b/libstdc++-v3/src/Makefile.in
@@ -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
diff --git a/libstdc++-v3/src/compatibility-c++0x.cc b/libstdc++-v3/src/compatibility-c++0x.cc
index 5d6e5dd..c075a9b 100644
--- a/libstdc++-v3/src/compatibility-c++0x.cc
+++ b/libstdc++-v3/src/compatibility-c++0x.cc
@@ -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
index 0000000..3f14a53
--- /dev/null
+++ b/libstdc++-v3/src/compatibility-debug_list.cc
@@ -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"
diff --git a/libstdc++-v3/src/compatibility-ldbl.cc b/libstdc++-v3/src/compatibility-ldbl.cc
index 9658751..d73be4a 100644
--- a/libstdc++-v3/src/compatibility-ldbl.cc
+++ b/libstdc++-v3/src/compatibility-ldbl.cc
@@ -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
index 0000000..57a2df9
--- /dev/null
+++ b/libstdc++-v3/src/compatibility-list.cc
@@ -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
index 0000000..d9d7b60
--- /dev/null
+++ b/libstdc++-v3/src/compatibility-parallel_list.cc
@@ -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"
diff --git a/libstdc++-v3/src/compatibility.cc b/libstdc++-v3/src/compatibility.cc
index 41071d2..dceebe1 100644
--- a/libstdc++-v3/src/compatibility.cc
+++ b/libstdc++-v3/src/compatibility.cc
@@ -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
diff --git a/libstdc++-v3/src/hash.cc b/libstdc++-v3/src/hash-aux.cc
index cc23858..cc23858 100644
--- a/libstdc++-v3/src/hash.cc
+++ b/libstdc++-v3/src/hash-aux.cc
diff --git a/libstdc++-v3/src/hash_tr1.cc b/libstdc++-v3/src/hash_tr1.cc
index 54f2b6e..10ba64b 100644
--- a/libstdc++-v3/src/hash_tr1.cc
+++ b/libstdc++-v3/src/hash_tr1.cc
@@ -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"
}
}
diff --git a/libstdc++-v3/src/hashtable.cc b/libstdc++-v3/src/hashtable-aux.cc
index 8bd3afb..8bd3afb 100644
--- a/libstdc++-v3/src/hashtable.cc
+++ b/libstdc++-v3/src/hashtable-aux.cc
diff --git a/libstdc++-v3/src/hashtable_c++0x.cc b/libstdc++-v3/src/hashtable_c++0x.cc
index 5a91fde..c99a094 100644
--- a/libstdc++-v3/src/hashtable_c++0x.cc
+++ b/libstdc++-v3/src/hashtable_c++0x.cc
@@ -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"
}
diff --git a/libstdc++-v3/src/hashtable_tr1.cc b/libstdc++-v3/src/hashtable_tr1.cc
index 160fd8e..70de1bd 100644
--- a/libstdc++-v3/src/hashtable_tr1.cc
+++ b/libstdc++-v3/src/hashtable_tr1.cc
@@ -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"
}
}
diff --git a/libstdc++-v3/src/limits.cc b/libstdc++-v3/src/limits.cc
index 3cf2c28..09a5dae 100644
--- a/libstdc++-v3/src/limits.cc
+++ b/libstdc++-v3/src/limits.cc
@@ -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
index b911bd4..0000000
--- a/libstdc++-v3/src/limits_c++0x.cc
+++ /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;
-}
diff --git a/libstdc++-v3/src/list.cc b/libstdc++-v3/src/list.cc
index e5523b9..f35feec 100644
--- a/libstdc++-v3/src/list.cc
+++ b/libstdc++-v3/src/list.cc
@@ -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;