diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 52ce8135448..fe4f03914e6 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,33 @@ +2010-02-07 Paolo Carlini + + 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 * include/bits/stl_pair.h (pair<>::pair(_U1&&, const _T2&), diff --git a/libstdc++-v3/config/abi/pre/gnu.ver b/libstdc++-v3/config/abi/pre/gnu.ver index 04c0f7c0a8f..9d3ff4715e8 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 899b4181509..535923981a5 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 22a1bcb9625..5fcbc4f3470 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 @@ -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 4306dd5c7c2..38b79a819e6 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 a2eb4770d70..e48eca45917 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 5d6e5ddc14f..c075a9b3977 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 00000000000..3f14a534250 --- /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 +// . + +#define _GLIBCXX_DEBUG + +#include "compatibility-list.cc" diff --git a/libstdc++-v3/src/compatibility-ldbl.cc b/libstdc++-v3/src/compatibility-ldbl.cc index 9658751bcbc..d73be4afea6 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 00000000000..57a2df97b7e --- /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 +// . + +#include + +_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 00000000000..d9d7b60fd34 --- /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 +// . + +#include "compatibility-list.cc" diff --git a/libstdc++-v3/src/compatibility.cc b/libstdc++-v3/src/compatibility.cc index 41071d23b81..dceebe1174c 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 similarity index 100% rename from libstdc++-v3/src/hash.cc rename to libstdc++-v3/src/hash-aux.cc diff --git a/libstdc++-v3/src/hash_tr1.cc b/libstdc++-v3/src/hash_tr1.cc index 54f2b6e608e..10ba64b9f3c 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 similarity index 100% rename from libstdc++-v3/src/hashtable.cc rename to 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 5a91fdef11e..c99a094c046 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 160fd8e9337..70de1bdf310 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 3cf2c281a52..09a5dae8656 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::tinyness_before; const float_round_style numeric_limits::round_style; + // char16_t + const bool numeric_limits::is_specialized; + const int numeric_limits::digits; + const int numeric_limits::digits10; + const bool numeric_limits::is_signed; + const bool numeric_limits::is_integer; + const bool numeric_limits::is_exact; + const int numeric_limits::radix; + const int numeric_limits::min_exponent; + const int numeric_limits::min_exponent10; + const int numeric_limits::max_exponent; + const int numeric_limits::max_exponent10; + const bool numeric_limits::has_infinity; + const bool numeric_limits::has_quiet_NaN; + const bool numeric_limits::has_signaling_NaN; + const float_denorm_style numeric_limits::has_denorm; + const bool numeric_limits::has_denorm_loss; + const bool numeric_limits::is_iec559; + const bool numeric_limits::is_bounded; + const bool numeric_limits::is_modulo; + const bool numeric_limits::traps; + const bool numeric_limits::tinyness_before; + const float_round_style numeric_limits::round_style; + + // char32_t + const bool numeric_limits::is_specialized; + const int numeric_limits::digits; + const int numeric_limits::digits10; + const bool numeric_limits::is_signed; + const bool numeric_limits::is_integer; + const bool numeric_limits::is_exact; + const int numeric_limits::radix; + const int numeric_limits::min_exponent; + const int numeric_limits::min_exponent10; + const int numeric_limits::max_exponent; + const int numeric_limits::max_exponent10; + const bool numeric_limits::has_infinity; + const bool numeric_limits::has_quiet_NaN; + const bool numeric_limits::has_signaling_NaN; + const float_denorm_style numeric_limits::has_denorm; + const bool numeric_limits::has_denorm_loss; + const bool numeric_limits::is_iec559; + const bool numeric_limits::is_bounded; + const bool numeric_limits::is_modulo; + const bool numeric_limits::traps; + const bool numeric_limits::tinyness_before; + const float_round_style numeric_limits::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 b911bd4c78e..00000000000 --- 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 -// . - -#include - -#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::is_specialized; - const int numeric_limits::digits; - const int numeric_limits::digits10; - const bool numeric_limits::is_signed; - const bool numeric_limits::is_integer; - const bool numeric_limits::is_exact; - const int numeric_limits::radix; - const int numeric_limits::min_exponent; - const int numeric_limits::min_exponent10; - const int numeric_limits::max_exponent; - const int numeric_limits::max_exponent10; - const bool numeric_limits::has_infinity; - const bool numeric_limits::has_quiet_NaN; - const bool numeric_limits::has_signaling_NaN; - const float_denorm_style numeric_limits::has_denorm; - const bool numeric_limits::has_denorm_loss; - const bool numeric_limits::is_iec559; - const bool numeric_limits::is_bounded; - const bool numeric_limits::is_modulo; - const bool numeric_limits::traps; - const bool numeric_limits::tinyness_before; - const float_round_style numeric_limits::round_style; - - // char32_t - const bool numeric_limits::is_specialized; - const int numeric_limits::digits; - const int numeric_limits::digits10; - const bool numeric_limits::is_signed; - const bool numeric_limits::is_integer; - const bool numeric_limits::is_exact; - const int numeric_limits::radix; - const int numeric_limits::min_exponent; - const int numeric_limits::min_exponent10; - const int numeric_limits::max_exponent; - const int numeric_limits::max_exponent10; - const bool numeric_limits::has_infinity; - const bool numeric_limits::has_quiet_NaN; - const bool numeric_limits::has_signaling_NaN; - const float_denorm_style numeric_limits::has_denorm; - const bool numeric_limits::has_denorm_loss; - const bool numeric_limits::is_iec559; - const bool numeric_limits::is_bounded; - const bool numeric_limits::is_modulo; - const bool numeric_limits::traps; - const bool numeric_limits::tinyness_before; - const float_round_style numeric_limits::round_style; -} diff --git a/libstdc++-v3/src/list.cc b/libstdc++-v3/src/list.cc index e5523b9fba4..f35feec3d48 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;