This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug libstdc++/24712] New: Accidental ABI change between 4.0.1 and 4.0.2?


This is Debian bug #336114:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=336114

I don't claim to be able to understand it all, but apparently (for example)
kdebase built with 4.0.2 doesn't work with arts built with 4.0.1.  Symbol
changes in arts between building with 4.0.1 and pre-4.0.2 look like the
following:

--- old
+++ new
@@ -42,7 +42,7 @@
 T lt_dlsetsearchpath
 T lt_dlsym
 T arts_strdup_printf(char const*, ...)
-V guard variable for __gnu_cxx::__common_pool_policy<__gnu_cxx::__pool,
true>::_S_get_pool()::_S_pool
+V guard variable for __gnu_cxx::__common_pool<__gnu_cxx::__pool,
true>::_S_get_pool()::_S_pool
 T Arts::AuthAccept::readType(Arts::Buffer&)
 T Arts::AuthAccept::operator=(Arts::AuthAccept const&)
 T Arts::AuthAccept::AuthAccept(Arts::AuthAccept const&)
@@ -1215,10 +1215,9 @@
 W __gnu_cxx::__mt_alloc<std::_Rb_tree_node<std::pair<std::string const,
std::string> >, __gnu_cxx::__common_pool_policy<__gnu_cxx::__pool, true>
>::allocate(unsigned int, void const*)
 W __gnu_cxx::__mt_alloc<std::_Rb_tree_node<std::pair<std::string const,
std::vector<std::string, std::allocator<std::string> > > >,
__gnu_cxx::__common_pool_policy<__gnu_cxx::__pool, true>
>::deallocate(std::_Rb_tree_node<std::pair<std::string const,
std::vector<std::string, std::allocator<std::string> > > >*, unsigned int)
 W __gnu_cxx::__mt_alloc<std::_Rb_tree_node<std::pair<std::string const,
std::vector<std::string, std::allocator<std::string> > > >,
__gnu_cxx::__common_pool_policy<__gnu_cxx::__pool, true> >::allocate(unsigned
int, void const*)
-W __gnu_cxx::__common_pool_policy<__gnu_cxx::__pool, true>::_S_get_pool()
-W __gnu_cxx::__common_pool_policy<__gnu_cxx::__pool, true>::_S_initialize()
-W __gnu_cxx::__common_pool_policy<__gnu_cxx::__pool,
true>::_S_initialize_once()
-W __gnu_cxx::__common_pool_policy<__gnu_cxx::__pool,
true>::_S_destroy_thread_key(void*)
+W __gnu_cxx::__common_pool<__gnu_cxx::__pool, true>::_S_get_pool()
+W __gnu_cxx::__common_pool_base<__gnu_cxx::__pool, true>::_S_initialize()
+W __gnu_cxx::__common_pool_base<__gnu_cxx::__pool, true>::_S_initialize_once()
 T Arts::AnyRefBase::type() const
 T Arts::AnyRefBase::_read(Arts::Buffer*) const
 T Arts::AnyRefBase::_write(Arts::Buffer*) const
@@ -1317,7 +1316,6 @@
 W std::_Deque_base<Arts::IOWatchFD*, std::allocator<Arts::IOWatchFD*>
>::_M_destroy_nodes(Arts::IOWatchFD***, Arts::IOWatchFD***)
 W std::_Deque_base<Arts::IOWatchFD*, std::allocator<Arts::IOWatchFD*>
>::_M_initialize_map(unsigned int)
 W std::_Deque_base<Arts::IOWatchFD*, std::allocator<Arts::IOWatchFD*>
>::~_Deque_base()
-W std::_Deque_iterator<Arts::Notification, Arts::Notification const&,
Arts::Notification const*>::operator+=(int)
 W std::_Deque_iterator<Arts::Notification, Arts::Notification&,
Arts::Notification*>::operator+=(int)
 W std::map<std::string, Arts::TypeIdentification, std::less<std::string>,
std::allocator<std::pair<std::string const, Arts::TypeIdentification> >
>::operator[](std::string const&)
 W std::list<Arts::NamedStore<Arts::Object>::Element,
std::allocator<Arts::NamedStore<Arts::Object>::Element>
>::erase(std::_List_iterator<Arts::NamedStore<Arts::Object>::Element>)
@@ -1461,49 +1459,6 @@
 W void
std::__uninitialized_fill_n_aux<__gnu_cxx::__normal_iterator<Arts::ParamDef*,
std::vector<Arts::ParamDef, std::allocator<Arts::ParamDef> > >, unsigned int,
Arts::ParamDef>(__gnu_cxx::__normal_iterator<Arts::ParamDef*,
std::vector<Arts::ParamDef, std::allocator<Arts::ParamDef> > >, unsigned int,
Arts::ParamDef const&, __false_type)
 W void std::__uninitialized_fill_n_aux<Arts::ParamDef*, unsigned int,
Arts::ParamDef>(Arts::ParamDef*, unsigned int, Arts::ParamDef const&,
__false_type)
 W void std::fill<__gnu_cxx::__normal_iterator<Arts::ParamDef*,
std::vector<Arts::ParamDef, std::allocator<Arts::ParamDef> > >,
Arts::ParamDef>(__gnu_cxx::__normal_iterator<Arts::ParamDef*,
std::vector<Arts::ParamDef, std::allocator<Arts::ParamDef> > >,
__gnu_cxx::__normal_iterator<Arts::ParamDef*, std::vector<Arts::ParamDef,
std::allocator<Arts::ParamDef> > >, Arts::ParamDef const&)
-W void std::_Destroy<__gnu_cxx::__normal_iterator<float*, std::vector<float,
std::allocator<float> > >, std::allocator<float>
>(__gnu_cxx::__normal_iterator<float*, std::vector<float, std::allocator<float>
> >, __gnu_cxx::__normal_iterator<float*, std::vector<float,
std::allocator<float> > >, std::allocator<float>)
-W void std::_Destroy<__gnu_cxx::__normal_iterator<unsigned char*,
std::vector<unsigned char, std::allocator<unsigned char> > >,
std::allocator<unsigned char> >(__gnu_cxx::__normal_iterator<unsigned char*,
std::vector<unsigned char, std::allocator<unsigned char> > >,
__gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char,
std::allocator<unsigned char> > >, std::allocator<unsigned char>)
-W void std::_Destroy<__gnu_cxx::__normal_iterator<long*, std::vector<long,
std::allocator<long> > >, std::allocator<long>
>(__gnu_cxx::__normal_iterator<long*, std::vector<long, std::allocator<long> >
>, __gnu_cxx::__normal_iterator<long*, std::vector<long, std::allocator<long> >
>, std::allocator<long>)
-W void std::_Destroy<__gnu_cxx::__normal_iterator<Arts::TraderEntry*,
std::vector<Arts::TraderEntry, std::allocator<Arts::TraderEntry> > >,
std::allocator<Arts::TraderEntry>
>(__gnu_cxx::__normal_iterator<Arts::TraderEntry*,
std::vector<Arts::TraderEntry, std::allocator<Arts::TraderEntry> > >,
__gnu_cxx::__normal_iterator<Arts::TraderEntry*, std::vector<Arts::TraderEntry,
std::allocator<Arts::TraderEntry> > >, std::allocator<Arts::TraderEntry>)
-W void std::_Destroy<__gnu_cxx::__normal_iterator<Arts::TraderOffer*,
std::vector<Arts::TraderOffer, std::allocator<Arts::TraderOffer> > >,
std::allocator<Arts::TraderOffer>
>(__gnu_cxx::__normal_iterator<Arts::TraderOffer*,
std::vector<Arts::TraderOffer, std::allocator<Arts::TraderOffer> > >,
__gnu_cxx::__normal_iterator<Arts::TraderOffer*, std::vector<Arts::TraderOffer,
std::allocator<Arts::TraderOffer> > >, std::allocator<Arts::TraderOffer>)
-W void std::_Destroy<__gnu_cxx::__normal_iterator<Arts::AttributeDef*,
std::vector<Arts::AttributeDef, std::allocator<Arts::AttributeDef> > >,
std::allocator<Arts::AttributeDef>
>(__gnu_cxx::__normal_iterator<Arts::AttributeDef*,
std::vector<Arts::AttributeDef, std::allocator<Arts::AttributeDef> > >,
__gnu_cxx::__normal_iterator<Arts::AttributeDef*,
std::vector<Arts::AttributeDef, std::allocator<Arts::AttributeDef> > >,
std::allocator<Arts::AttributeDef>)
-W void std::_Destroy<__gnu_cxx::__normal_iterator<Arts::InterfaceDef*,
std::vector<Arts::InterfaceDef, std::allocator<Arts::InterfaceDef> > >,
std::allocator<Arts::InterfaceDef>
>(__gnu_cxx::__normal_iterator<Arts::InterfaceDef*,
std::vector<Arts::InterfaceDef, std::allocator<Arts::InterfaceDef> > >,
__gnu_cxx::__normal_iterator<Arts::InterfaceDef*,
std::vector<Arts::InterfaceDef, std::allocator<Arts::InterfaceDef> > >,
std::allocator<Arts::InterfaceDef>)
-W void std::_Destroy<__gnu_cxx::__normal_iterator<Arts::EnumComponent*,
std::vector<Arts::EnumComponent, std::allocator<Arts::EnumComponent> > >,
std::allocator<Arts::EnumComponent>
>(__gnu_cxx::__normal_iterator<Arts::EnumComponent*,
std::vector<Arts::EnumComponent, std::allocator<Arts::EnumComponent> > >,
__gnu_cxx::__normal_iterator<Arts::EnumComponent*,
std::vector<Arts::EnumComponent, std::allocator<Arts::EnumComponent> > >,
std::allocator<Arts::EnumComponent>)
-W void std::_Destroy<__gnu_cxx::__normal_iterator<Arts::TypeComponent*,
std::vector<Arts::TypeComponent, std::allocator<Arts::TypeComponent> > >,
std::allocator<Arts::TypeComponent>
>(__gnu_cxx::__normal_iterator<Arts::TypeComponent*,
std::vector<Arts::TypeComponent, std::allocator<Arts::TypeComponent> > >,
__gnu_cxx::__normal_iterator<Arts::TypeComponent*,
std::vector<Arts::TypeComponent, std::allocator<Arts::TypeComponent> > >,
std::allocator<Arts::TypeComponent>)
-W void std::_Destroy<__gnu_cxx::__normal_iterator<Arts::TraderRestriction*,
std::vector<Arts::TraderRestriction, std::allocator<Arts::TraderRestriction> >
>, std::allocator<Arts::TraderRestriction>
>(__gnu_cxx::__normal_iterator<Arts::TraderRestriction*,
std::vector<Arts::TraderRestriction, std::allocator<Arts::TraderRestriction> >
>, __gnu_cxx::__normal_iterator<Arts::TraderRestriction*,
std::vector<Arts::TraderRestriction, std::allocator<Arts::TraderRestriction> >
>, std::allocator<Arts::TraderRestriction>)
-W void
std::_Destroy<__gnu_cxx::__normal_iterator<Arts::ObjectInternalData::MethodTableEntry*,
std::vector<Arts::ObjectInternalData::MethodTableEntry,
std::allocator<Arts::ObjectInternalData::MethodTableEntry> > >,
std::allocator<Arts::ObjectInternalData::MethodTableEntry>
>(__gnu_cxx::__normal_iterator<Arts::ObjectInternalData::MethodTableEntry*,
std::vector<Arts::ObjectInternalData::MethodTableEntry,
std::allocator<Arts::ObjectInternalData::MethodTableEntry> > >,
__gnu_cxx::__normal_iterator<Arts::ObjectInternalData::MethodTableEntry*,
std::vector<Arts::ObjectInternalData::MethodTableEntry,
std::allocator<Arts::ObjectInternalData::MethodTableEntry> > >,
std::allocator<Arts::ObjectInternalData::MethodTableEntry>)
-W void std::_Destroy<__gnu_cxx::__normal_iterator<Arts::EnumDef*,
std::vector<Arts::EnumDef, std::allocator<Arts::EnumDef> > >,
std::allocator<Arts::EnumDef> >(__gnu_cxx::__normal_iterator<Arts::EnumDef*,
std::vector<Arts::EnumDef, std::allocator<Arts::EnumDef> > >,
__gnu_cxx::__normal_iterator<Arts::EnumDef*, std::vector<Arts::EnumDef,
std::allocator<Arts::EnumDef> > >, std::allocator<Arts::EnumDef>)
-W void std::_Destroy<__gnu_cxx::__normal_iterator<Arts::TypeDef*,
std::vector<Arts::TypeDef, std::allocator<Arts::TypeDef> > >,
std::allocator<Arts::TypeDef> >(__gnu_cxx::__normal_iterator<Arts::TypeDef*,
std::vector<Arts::TypeDef, std::allocator<Arts::TypeDef> > >,
__gnu_cxx::__normal_iterator<Arts::TypeDef*, std::vector<Arts::TypeDef,
std::allocator<Arts::TypeDef> > >, std::allocator<Arts::TypeDef>)
-W void std::_Destroy<__gnu_cxx::__normal_iterator<Arts::ParamDef*,
std::vector<Arts::ParamDef, std::allocator<Arts::ParamDef> > >,
std::allocator<Arts::ParamDef> >(__gnu_cxx::__normal_iterator<Arts::ParamDef*,
std::vector<Arts::ParamDef, std::allocator<Arts::ParamDef> > >,
__gnu_cxx::__normal_iterator<Arts::ParamDef*, std::vector<Arts::ParamDef,
std::allocator<Arts::ParamDef> > >, std::allocator<Arts::ParamDef>)
-W void std::_Destroy<__gnu_cxx::__normal_iterator<Arts::MethodDef*,
std::vector<Arts::MethodDef, std::allocator<Arts::MethodDef> > >,
std::allocator<Arts::MethodDef>
>(__gnu_cxx::__normal_iterator<Arts::MethodDef*, std::vector<Arts::MethodDef,
std::allocator<Arts::MethodDef> > >,
__gnu_cxx::__normal_iterator<Arts::MethodDef*, std::vector<Arts::MethodDef,
std::allocator<Arts::MethodDef> > >, std::allocator<Arts::MethodDef>)
-W void std::_Destroy<__gnu_cxx::__normal_iterator<Arts::ModuleDef*,
std::vector<Arts::ModuleDef, std::allocator<Arts::ModuleDef> > >,
std::allocator<Arts::ModuleDef>
>(__gnu_cxx::__normal_iterator<Arts::ModuleDef*, std::vector<Arts::ModuleDef,
std::allocator<Arts::ModuleDef> > >,
__gnu_cxx::__normal_iterator<Arts::ModuleDef*, std::vector<Arts::ModuleDef,
std::allocator<Arts::ModuleDef> > >, std::allocator<Arts::ModuleDef>)
-W void std::_Destroy<__gnu_cxx::__normal_iterator<Arts::Object_skel**,
std::vector<Arts::Object_skel*, std::allocator<Arts::Object_skel*> > >,
std::allocator<Arts::Object_skel*>
>(__gnu_cxx::__normal_iterator<Arts::Object_skel**,
std::vector<Arts::Object_skel*, std::allocator<Arts::Object_skel*> > >,
__gnu_cxx::__normal_iterator<Arts::Object_skel**,
std::vector<Arts::Object_skel*, std::allocator<Arts::Object_skel*> > >,
std::allocator<Arts::Object_skel*>)
-W void std::_Destroy<__gnu_cxx::__normal_iterator<Arts::TraderOffer_impl**,
std::vector<Arts::TraderOffer_impl*, std::allocator<Arts::TraderOffer_impl*> >
>, std::allocator<Arts::TraderOffer_impl*>
>(__gnu_cxx::__normal_iterator<Arts::TraderOffer_impl**,
std::vector<Arts::TraderOffer_impl*, std::allocator<Arts::TraderOffer_impl*> >
>, __gnu_cxx::__normal_iterator<Arts::TraderOffer_impl**,
std::vector<Arts::TraderOffer_impl*, std::allocator<Arts::TraderOffer_impl*> >
>, std::allocator<Arts::TraderOffer_impl*>)
-W void std::_Destroy<__gnu_cxx::__normal_iterator<Arts::Buffer**,
std::vector<Arts::Buffer*, std::allocator<Arts::Buffer*> > >,
std::allocator<Arts::Buffer*> >(__gnu_cxx::__normal_iterator<Arts::Buffer**,
std::vector<Arts::Buffer*, std::allocator<Arts::Buffer*> > >,
__gnu_cxx::__normal_iterator<Arts::Buffer**, std::vector<Arts::Buffer*,
std::allocator<Arts::Buffer*> > >, std::allocator<Arts::Buffer*>)
-W void std::_Destroy<__gnu_cxx::__normal_iterator<std::string*,
std::vector<std::string, std::allocator<std::string> > >,
std::allocator<std::string> >(__gnu_cxx::__normal_iterator<std::string*,
std::vector<std::string, std::allocator<std::string> > >,
__gnu_cxx::__normal_iterator<std::string*, std::vector<std::string,
std::allocator<std::string> > >, std::allocator<std::string>)
-W void std::_Destroy<unsigned char*, std::allocator<unsigned char> >(unsigned
char*, unsigned char*, std::allocator<unsigned char>)
-W void std::_Destroy<Arts::TraderEntry*, std::allocator<Arts::TraderEntry>
>(Arts::TraderEntry*, Arts::TraderEntry*, std::allocator<Arts::TraderEntry>)
-W void std::_Destroy<Arts::TraderOffer*, std::allocator<Arts::TraderOffer>
>(Arts::TraderOffer*, Arts::TraderOffer*, std::allocator<Arts::TraderOffer>)
-W void std::_Destroy<Arts::AttributeDef*, std::allocator<Arts::AttributeDef>
>(Arts::AttributeDef*, Arts::AttributeDef*, std::allocator<Arts::AttributeDef>)
-W void std::_Destroy<Arts::InterfaceDef*, std::allocator<Arts::InterfaceDef>
>(Arts::InterfaceDef*, Arts::InterfaceDef*, std::allocator<Arts::InterfaceDef>)
-W void std::_Destroy<Arts::Notification*, std::allocator<Arts::Notification>
>(Arts::Notification*, Arts::Notification*, std::allocator<Arts::Notification>)
-W void std::_Destroy<Arts::EnumComponent*, std::allocator<Arts::EnumComponent>
>(Arts::EnumComponent*, Arts::EnumComponent*,
std::allocator<Arts::EnumComponent>)
-W void std::_Destroy<Arts::TypeComponent*, std::allocator<Arts::TypeComponent>
>(Arts::TypeComponent*, Arts::TypeComponent*,
std::allocator<Arts::TypeComponent>)
-W void std::_Destroy<Arts::TraderRestriction*,
std::allocator<Arts::TraderRestriction> >(Arts::TraderRestriction*,
Arts::TraderRestriction*, std::allocator<Arts::TraderRestriction>)
-W void std::_Destroy<Arts::ObjectInternalData::MethodTableEntry*,
std::allocator<Arts::ObjectInternalData::MethodTableEntry>
>(Arts::ObjectInternalData::MethodTableEntry*,
Arts::ObjectInternalData::MethodTableEntry*,
std::allocator<Arts::ObjectInternalData::MethodTableEntry>)
-W void std::_Destroy<Arts::EnumDef*, std::allocator<Arts::EnumDef>
>(Arts::EnumDef*, Arts::EnumDef*, std::allocator<Arts::EnumDef>)
-W void std::_Destroy<Arts::TypeDef*, std::allocator<Arts::TypeDef>
>(Arts::TypeDef*, Arts::TypeDef*, std::allocator<Arts::TypeDef>)
-W void std::_Destroy<Arts::ParamDef*, std::allocator<Arts::ParamDef>
>(Arts::ParamDef*, Arts::ParamDef*, std::allocator<Arts::ParamDef>)
-W void std::_Destroy<Arts::MethodDef*, std::allocator<Arts::MethodDef>
>(Arts::MethodDef*, Arts::MethodDef*, std::allocator<Arts::MethodDef>)
-W void std::_Destroy<Arts::ModuleDef*, std::allocator<Arts::ModuleDef>
>(Arts::ModuleDef*, Arts::ModuleDef*, std::allocator<Arts::ModuleDef>)
-W void std::_Destroy<Arts::Object_skel**, std::allocator<Arts::Object_skel*>
>(Arts::Object_skel**, Arts::Object_skel**, std::allocator<Arts::Object_skel*>)
-W void std::_Destroy<Arts::TraderOffer_impl**,
std::allocator<Arts::TraderOffer_impl*> >(Arts::TraderOffer_impl**,
Arts::TraderOffer_impl**, std::allocator<Arts::TraderOffer_impl*>)
-W void std::_Destroy<Arts::Buffer**, std::allocator<Arts::Buffer*>
>(Arts::Buffer**, Arts::Buffer**, std::allocator<Arts::Buffer*>)
-W void std::_Destroy<std::string*, std::allocator<std::string> >(std::string*,
std::string*, std::allocator<std::string>)
-W void std::_Destroy<std::_Deque_iterator<unsigned long, unsigned long&,
unsigned long*>, std::allocator<unsigned long> >(std::_Deque_iterator<unsigned
long, unsigned long&, unsigned long*>, std::_Deque_iterator<unsigned long,
unsigned long&, unsigned long*>, std::allocator<unsigned long>)
-W void std::_Destroy<std::_Deque_iterator<Arts::Notification,
Arts::Notification&, Arts::Notification*>, std::allocator<Arts::Notification>
>(std::_Deque_iterator<Arts::Notification, Arts::Notification&,
Arts::Notification*>, std::_Deque_iterator<Arts::Notification,
Arts::Notification&, Arts::Notification*>, std::allocator<Arts::Notification>)
-W void std::_Destroy<std::_Deque_iterator<Arts::ConnectionPrivate::Data,
Arts::ConnectionPrivate::Data&, Arts::ConnectionPrivate::Data*>,
std::allocator<Arts::ConnectionPrivate::Data>
>(std::_Deque_iterator<Arts::ConnectionPrivate::Data,
Arts::ConnectionPrivate::Data&, Arts::ConnectionPrivate::Data*>,
std::_Deque_iterator<Arts::ConnectionPrivate::Data,
Arts::ConnectionPrivate::Data&, Arts::ConnectionPrivate::Data*>,
std::allocator<Arts::ConnectionPrivate::Data>)
-W void std::_Destroy<std::_Deque_iterator<Arts::IOWatchFD*, Arts::IOWatchFD*&,
Arts::IOWatchFD**>, std::allocator<Arts::IOWatchFD*>
>(std::_Deque_iterator<Arts::IOWatchFD*, Arts::IOWatchFD*&, Arts::IOWatchFD**>,
std::_Deque_iterator<Arts::IOWatchFD*, Arts::IOWatchFD*&, Arts::IOWatchFD**>,
std::allocator<Arts::IOWatchFD*>)
 W void std::sort_heap<__gnu_cxx::__normal_iterator<Arts::TraderOffer*,
std::vector<Arts::TraderOffer, std::allocator<Arts::TraderOffer> > >, bool
(*)(Arts::TraderOffer,
Arts::TraderOffer)>(__gnu_cxx::__normal_iterator<Arts::TraderOffer*,
std::vector<Arts::TraderOffer, std::allocator<Arts::TraderOffer> > >,
__gnu_cxx::__normal_iterator<Arts::TraderOffer*, std::vector<Arts::TraderOffer,
std::allocator<Arts::TraderOffer> > >, bool (*)(Arts::TraderOffer,
Arts::TraderOffer))
 W std::_Deque_iterator<Arts::Notification, Arts::Notification&,
Arts::Notification*>::difference_type std::operator-<Arts::Notification,
Arts::Notification&, Arts::Notification*, Arts::Notification&,
Arts::Notification*>(std::_Deque_iterator<Arts::Notification,
Arts::Notification&, Arts::Notification*> const&,
std::_Deque_iterator<Arts::Notification, Arts::Notification&,
Arts::Notification*> const&)
 W std::basic_string<char, std::char_traits<char>, std::allocator<char> >
std::operator+<char, std::char_traits<char>, std::allocator<char> >(char
const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >
const&)
@@ -2287,5 +2242,6 @@
 V vtable for Arts::ModuleDef
 V vtable for Arts::Semaphore
 V vtable for Arts::TCPServer
-V __gnu_cxx::__common_pool_policy<__gnu_cxx::__pool,
true>::_S_get_pool()::_S_pool
-V __gnu_cxx::__common_pool_policy<__gnu_cxx::__pool,
true>::_S_initialize_once()::__init
+V __gnu_cxx::__common_pool<__gnu_cxx::__pool, true>::_S_get_pool()::_S_pool
+V __gnu_cxx::__common_pool_base<__gnu_cxx::__pool,
true>::_S_initialize_once()::__init
+V __gnu_cxx::__common_pool_base<__gnu_cxx::__pool,
true>::_S_initialize_once()::__once

And symbol changes in kdebase look like this:
--- old 2005-10-27 18:37:34.000000000 -0400
+++ new 2005-10-27 18:38:11.000000000 -0400
@@ -4,7 +4,7 @@
 T _fini
 T _init
 T init_konq_sound
-V guard variable for __gnu_cxx::__common_pool_policy<__gnu_cxx::__pool,
true>::_S_get_pool()::_S_pool
+V guard variable for __gnu_cxx::__common_pool<__gnu_cxx::__pool,
true>::_S_get_pool()::_S_pool
 W QValueList<QString>::detachInternal()
 W KonqSoundPlayer::~KonqSoundPlayer()
 W KonqSoundPlayer::~KonqSoundPlayer()
@@ -26,7 +26,7 @@
 T KonqSoundPlayerImpl::~KonqSoundPlayerImpl()
 W __gnu_cxx::__mt_alloc<Arts::TraderOffer,
__gnu_cxx::__common_pool_policy<__gnu_cxx::__pool, true>
>::deallocate(Arts::TraderOffer*, unsigned int)
 W __gnu_cxx::__mt_alloc<std::string,
__gnu_cxx::__common_pool_policy<__gnu_cxx::__pool, true>
>::deallocate(std::string*, unsigned int)
-W __gnu_cxx::__common_pool_policy<__gnu_cxx::__pool, true>::_S_get_pool()
+W __gnu_cxx::__common_pool<__gnu_cxx::__pool, true>::_S_get_pool()
 W KLibFactory::metaObject() const
 W QGList::count() const
 W QObject::metaObject() const
@@ -42,4 +42,4 @@
 V vtable for KonqSoundFactory
 V vtable for KonqSoundPlayerImpl
 V vtable for QGList
-V __gnu_cxx::__common_pool_policy<__gnu_cxx::__pool,
true>::_S_get_pool()::_S_pool
+V __gnu_cxx::__common_pool<__gnu_cxx::__pool, true>::_S_get_pool()::_S_pool

So there's some change going on with __common_pool vs. __common_pool_policy
which amounts to a backwards-incompatible change.  :-P


-- 
           Summary: Accidental ABI change between 4.0.1 and 4.0.2?
           Product: gcc
           Version: 4.0.2
            Status: UNCONFIRMED
          Severity: major
          Priority: P3
         Component: libstdc++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: neroden at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24712


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]