+2003-01-23 Benjamin Kosnik <bkoz@redhat.com>
+
+ * configure.in (libtool_VERSION): To 6:0:0.
+ * configure: Regenerated.
+ * config/linker-map.gnu: Clean.
+
+ * src/misc-inst.cc: Remove instantiations.
+
+ * include/bits/stl_alloc.h (__malloc_alloc_template):
+ To __malloc_alloc.
+ (__default_alloc_template): To __pool_alloc.
+ * src/stl-inst.cc: Same.
+ * include/backward/alloc.h: Update.
+ * testsuite/ext/allocators.cc: Update.
+
+ * src/globals.cc (__gnu_cxx): Remove _GLIBCPP_ASM_SYMVER. Should
+ really try to remove these if possible.
+ * src/locale.cc (std): Same.
+
+ * testsuite/abi_check.cc (check_version): Add.
+
2003-01-22 Benjamin Kosnik <bkoz@redhat.com>
Sysoltsev Slawa <Vyatcheslav.Sysoltsev@intel.com>
Mark Mitchell <mark@codesourcery.com>
## Linker script for GNU ld 2.11.94+ only.
##
-## Copyright (C) 2002 Free Software Foundation, Inc.
+## Copyright (C) 2002, 2003 Free Software Foundation, Inc.
##
## This file is part of the libstdc++ version 3 distribution.
##
## Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
## USA.
-GLIBCPP_3.2 {
+GLIBCPP_3.4 {
global:
std::basic_[t-z]*;
std::ba[t-z]*;
std::b[b-z]*;
- std::c[a-n]*;
- std::co[a-c]*;
- std::codecvt_byname*;
- std::codecvt::[A-Za-b]*;
- std::codecvt::[A-Zd-z]*;
- std::codecvt_c;
- std::codecvt_w;
- std::co[e-z]*;
- std::c[p-z]*;
- std::c_[a-z]*;
- std::[A-Zd-k]*;
+ std::[A-Zc-k]*;
std::length_error*;
std::logic_error*;
std::locale::[A-Za-e]*;
std::locale::facet::[A-Za-z]*;
std::locale::facet::_M*;
- std::locale::facet::_S_c_locale;
+ std::locale::facet::_S_c_locale;
std::locale::facet::_S_clone_c_locale*;
std::locale::facet::_S_create_c_locale*;
std::locale::facet::_S_destroy_c_locale*;
- std::locale::[A-Zg-z]*;
- std::locale::_[A-Ra-z]*;
- std::locale::_S_classic;
- std::locale::_S_global;
- std::locale::_S_num_categories;
+ std::locale::[A-Zg-h]*;
+ std::locale::id::[A-Za-z]*;
+ std::locale::id::_S_highwater;
+ std::locale::[A-Zj-z]*;
+ std::locale::_[A-Ha-z]*;
+ std::locale::_Impl::[A-Za-z]*;
+ std::locale::_Impl::_M_[A-Za-z]*;
+ std::locale::_[J-Ra-z]*;
std::locale::_S_normalize_category*;
std::locale::_[T-Za-z]*;
std::[A-Zm-z]*;
std::__num_base*;
std::__timepunct*;
std::__numeric_limits_base*;
- std::_S_bit_count;
- std::_S_first_one
+ std::_S_bit_count
};
# Names not in an 'extern' block are mangled names.
- # std::string minus binary operator plus
- _ZNKSs*;
- _ZNKSb*;
- _ZNSs[A-Za-z]*;
- _ZNSs[0-9][A-Za-z]*;
- _ZNSs[0-9][0-9][A-Za-z]*;
- _ZNSs[0-9]_[A-Ra-z]*;
- _ZNSs[0-9][0-9]_[A-Ra-z]*;
- _ZNSs12_S_empty_repEv;
- _ZNSs20_S_empty_rep_storageE;
- _ZNSbIwSt11char_traitsIwESaIwEE20_S_empty_rep_storageE;
- _ZNSs12_S_constructE*;
- _ZNSs13_S_copy_charsE*;
- _ZNSbIwSt11char_traitsIwESaIwEE[A-Ra-z]*;
- _ZNSbIwSt11char_traitsIwESaIwEE[0-9][A-Ra-z]*;
- _ZNSbIwSt11char_traitsIwESaIwEE[0-9][0-9][A-Ra-z]*;
- _ZNSbIwSt11char_traitsIwESaIwEE[0-9]_[A-Ra-z]*;
- _ZNSbIwSt11char_traitsIwESaIwEE[0-9][0-9]_[A-Ra-z]*;
- _ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_chars*;
- _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructE[jm]wRKS1_;
- _ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv;
- _ZSt24__uninitialized_copy_auxIN9*;
- _ZSt26__uninitialized_fill_n_aux*;
- _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_;
- _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ES3_RKS6_;
- _ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_EPKS3_RKS6_;
- _ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ES3_RKS6_;
-
# std::locale destructors
_ZNSt6localeD*;
# std::locale::facet destructors
_ZNSt6locale5facetD*;
- # std::codecvt<char> members.
- _ZNKSt7codecvtIcc11__mbstate_tE*;
- # std::codecvt<char>::~codecvt
- _ZNSt7codecvtIcc11__mbstate_tED*;
- # std::codecvt<char>::codecvt(size_t), where size_t variable.
- _ZNSt7codecvtIcc11__mbstate_tEC[12]E[jm];
- # std::codecvt<char>::id
- _ZNSt7codecvtIcc11__mbstate_tE2idE;
-
- # std::codecvt<wchar_t> members.
- _ZNKSt7codecvtIwc11__mbstate_tE*;
- # std::codecvt<wchar_t>::~codecvt
- _ZNSt7codecvtIwc11__mbstate_tED*;
- # std::codecvt<wchar_t>::codecvt(size_t), where size_t variable.
- _ZNSt7codecvtIwc11__mbstate_tEC[12]E[jm];
- # std::codecvt<wchar_t>::id
- _ZNSt7codecvtIwc11__mbstate_tE2idE;
-
- # std::use_facet<codecvt>
- _ZSt9use_facetISt7codecvtIcc11__mbstate_tEERKT_RKSt6locale;
- _ZSt9use_facetISt7codecvtIwc11__mbstate_tEERKT_RKSt6locale;
+ # std::locale::_Impl constructors, destrutors
+ _ZNSt6locale5_ImplC*;
+ _ZNSt6locale5_ImplD*;
- # std::has_facet*
+ # bool has_facet
_ZSt9has_facet*;
- # std::__default_alloc_template
- _ZNSt24__default_alloc_templateILb1ELi0EE10deallocate*;
- _ZNSt24__default_alloc_templateILb1ELi0EE8allocate*;
- _ZNSt24__default_alloc_templateILb1ELi0EE12_S_free_listE;
- _ZNSt24__default_alloc_templateILb1ELi0EE22_S_node_allocator_lockE;
- _ZNSt24__default_alloc_templateILb1ELi0EE9_S_refillE*;
-
- # std::__default_alloc_template to be removed in the future
- _ZNSt24__default_alloc_templateILb1ELi0EE10reallocateEPv*;
- _ZNSt24__default_alloc_templateILb1ELi0EE11_S_round_upE*;
- _ZNSt24__default_alloc_templateILb1ELi0EE14_S_chunk_allocE*;
- _ZNSt24__default_alloc_templateILb1ELi0EE17_S_freelist_indexE*;
- _ZNSt24__default_alloc_templateILb1ELi0EE11_S_end_freeE;
- _ZNSt24__default_alloc_templateILb1ELi0EE12_S_heap_sizeE;
- _ZNSt24__default_alloc_templateILb1ELi0EE13_S_start_freeE;
- _ZNSt24__default_alloc_templateILb1ELi0EE5_Lock*;
-
- # operator new(unsigned)
- _Znwj;
- # operator new(unsigned, std::nothrow_t const&)
- _ZnwjRKSt9nothrow_t;
- # operator new(unsigned long)
- _Znwm;
- # operator new(unsigned long, std::nothrow_t const&)
- _ZnwmRKSt9nothrow_t;
+ # std::string, std::wstring minus static data members
+ _ZNKS[sb]*;
+ _ZNS[sb]D*;
+ _ZNS[sb]C*;
+ _ZStplI[cw]St11char_traitsI[cw]ESaI[cw]EESbIT_T0_T1_EPKS3_RKS6_;
+ _ZStplI[cw]St11char_traitsI[cw]ESaI[cw]EESbIT_T0_T1_ES3_RKS6_;
+ _ZNS[sb]I[cw]St11char_traitsI[cw]ESaI[cw]EE[A-Ra-z]*;
+ _ZNS[sb]I[cw]St11char_traitsI[cw]ESaI[cw]EE[0-9][A-Ra-z]*;
+ _ZNS[sb]I[cw]St11char_traitsI[cw]ESaI[cw]EE[0-9][0-9][A-Ra-z]*;
+ _ZNS[sb]I[cw]St11char_traitsI[cw]ESaI[cw]EE[0-9]_[A-Ra-z]*;
+ _ZNS[sb]I[cw]St11char_traitsI[cw]ESaI[cw]EE[0-9][0-9]_[A-Ra-z]*;
+ _ZNS[sb]I[cw]St11char_traitsI[cw]ESaI[cw]EE20_S_empty_rep_storageE;
+
+ # std::__pool_alloc
+ _ZNSt12__pool_allocILb1ELi0EE10deallocateEPvj*;
+ _ZNSt12__pool_allocILb1ELi0EE8allocateEj*;
+ _ZNSt12__pool_allocILb1ELi0EE5_Lock*;
+ _ZNSt12__pool_allocILb1ELi0EE12_S_force_newE;
+ _ZNSt12__pool_allocILb1ELi0EE12_S_free_listE;
+ _ZNSt12__pool_allocILb1ELi0EE7_S_lockE;
+ _ZNSt12__pool_allocILb1ELi0EE9_S_refillE[jm];
+
+ # operator new(size_t)
+ _Znw[jm];
+ # operator new(size_t, std::nothrow_t const&)
+ _Znw[jm]RKSt9nothrow_t;
# operator delete(void*)
_ZdlPv;
# operator delete(void*, std::nothrow_t const&)
_ZdlPvRKSt9nothrow_t;
- # operator new[](unsigned)
- _Znaj;
- # operator new[](unsigned, std::nothrow_t const&)
- _ZnajRKSt9nothrow_t;
- # operator new[](unsigned long)
- _Znam;
- # operator new[](unsigned long, std::nothrow_t const&)
- _ZnamRKSt9nothrow_t;
+ # operator new[](size_t)
+ _Zna[jm];
+ # operator new[](size_t, std::nothrow_t const&)
+ _Zna[jm]RKSt9nothrow_t;
# operator delete[](void*)
_ZdaPv;
# std::__convert_to_v
_ZSt14__convert_to_v*;
+ # stub functions from libmath
+ sinf;
+ sinl;
+ sinhf;
+ sinhl;
+ cosf;
+ cosl;
+ coshf;
+ coshl;
+ tanf;
+ tanl;
+ tanhf;
+ tanhl;
+ atan2f;
+ atan2l;
+ expf;
+ expl;
+ hypotf;
+ hypotl;
+ hypot;
+ logf;
+ logl;
+ log10f;
+ log10l;
+ powf;
+ powl;
+ sqrtf;
+ sqrtl;
+ copysignf;
+ nan;
+ __signbit;
+ __signbitf;
+ __signbitl;
+
local:
*;
};
-# Symbols added after GLIBCPP_3.2
-GLIBCPP_3.2.1 {
-
- _ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structj;
- _ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structj;
- _ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structj;
- _ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structj;
-
- _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_;
- _ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ERKS6_S8_;
-
- # stub functions from libmath
- sinf;
- sinl;
- sinhf;
- sinhl;
- cosf;
- cosl;
- coshf;
- coshl;
- tanf;
- tanl;
- tanhf;
- tanhl;
- atan2f;
- atan2l;
- expf;
- expl;
- hypotf;
- hypotl;
- hypot;
- logf;
- logl;
- log10f;
- log10l;
- powf;
- powl;
- sqrtf;
- sqrtl;
- copysignf;
- nan;
- __signbit;
- __signbitf;
- __signbitl;
-
-} GLIBCPP_3.2;
-
-
-GLIBCPP_3.2.2 {
-
- _ZNSt24__default_alloc_templateILb1ELi0EE12_S_force_newE;
-
-} GLIBCPP_3.2.1;
# Symbols in the support library (libsupc++) have their own tag.
-CXXABI_1.2 {
+CXXABI_1.3 {
global:
__cxa_allocate_exception;
__cxa_free_exception;
__cxa_get_globals;
__cxa_get_globals_fast;
+ __cxa_guard_abort;
+ __cxa_guard_acquire;
+ __cxa_guard_release;
__cxa_pure_virtual;
__cxa_rethrow;
__cxa_throw;
# __gnu_cxx::_verbose_terminate_handler()
_ZN9__gnu_cxx27__verbose_terminate_handlerEv;
- # XXX Should not be exported.
- __cxa_dyn_string_append_char;
- __cxa_dyn_string_append_cstr;
- __cxa_dyn_string_append;
- __cxa_dyn_string_clear;
- __cxa_dyn_string_copy_cstr;
- __cxa_dyn_string_copy;
- __cxa_dyn_string_delete;
- __cxa_dyn_string_eq;
- __cxa_dyn_string_init;
- __cxa_dyn_string_insert_char;
- __cxa_dyn_string_insert_cstr;
- __cxa_dyn_string_insert;
- __cxa_dyn_string_new;
- __cxa_dyn_string_prepend_cstr;
- __cxa_dyn_string_prepend;
- __cxa_dyn_string_release;
- __cxa_dyn_string_resize;
- __cxa_dyn_string_substring;
-
local:
*;
};
-
-# Symbols added after CXXABI_1.2
-CXXABI_1.2.1 {
-
- __cxa_guard_acquire;
- __cxa_guard_release;
- __cxa_guard_abort;
-
-} CXXABI_1.2;
\ No newline at end of file
PACKAGE=libstdc++
# For libtool versioning info, format is CURRENT:REVISION:AGE
-libtool_VERSION=5:2:0
+libtool_VERSION=6:0:0
PACKAGE=libstdc++
AC_SUBST(PACKAGE)
# For libtool versioning info, format is CURRENT:REVISION:AGE
-libtool_VERSION=5:2:0
+libtool_VERSION=6:0:0
AC_SUBST(libtool_VERSION)
GLIBCPP_TOPREL_CONFIGURE
// Backward-compat support -*- C++ -*-
-// Copyright (C) 2001 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2003 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
#include <bits/c++config.h>
#include <bits/stl_alloc.h>
-using std::__malloc_alloc_template;
+using std::__malloc_alloc;
using std::__simple_alloc;
using std::__debug_alloc;
using std::__alloc;
using std::__single_client_alloc;
+using std::__pool_alloc;
using std::allocator;
-using std::__default_alloc_template;
+
#endif
// Allocators -*- C++ -*-
-// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002, 2003 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
/**
* @if maint
* A malloc-based allocator. Typically slower than the
- * __default_alloc_template (below). Typically thread-safe and more
+ * __pool_alloc (below). Typically thread-safe and more
* storage efficient. The template argument is unused and is only present
- * to permit multiple instantiations (but see __default_alloc_template
+ * to permit multiple instantiations (but see __pool_alloc
* for caveats). "SGI" style, plus __set_malloc_handler for OOM conditions.
* @endif
* (See @link Allocators allocators info @endlink for more.)
*/
template<int __inst>
- class __malloc_alloc_template
+ class __malloc_alloc
{
private:
static void* _S_oom_malloc(size_t);
// malloc_alloc out-of-memory handling
template<int __inst>
- void (* __malloc_alloc_template<__inst>::__malloc_alloc_oom_handler)() = 0;
+ void (* __malloc_alloc<__inst>::__malloc_alloc_oom_handler)() = 0;
template<int __inst>
void*
- __malloc_alloc_template<__inst>::
+ __malloc_alloc<__inst>::
_S_oom_malloc(size_t __n)
{
void (* __my_malloc_handler)();
* (See @link Allocators allocators info @endlink for more.)
*/
template<bool __threads, int __inst>
- class __default_alloc_template
+ class __pool_alloc
{
private:
enum {_ALIGN = 8};
static char* _S_end_free;
static size_t _S_heap_size;
- static _STL_mutex_lock _S_node_allocator_lock;
+ static _STL_mutex_lock _S_lock;
+ static _Atomic_word _S_force_new;
static size_t
_S_round_up(size_t __bytes)
// test whether threads are in use.
struct _Lock
{
- _Lock() { if (__threads) _S_node_allocator_lock._M_acquire_lock(); }
- ~_Lock() { if (__threads) _S_node_allocator_lock._M_release_lock(); }
+ _Lock() { if (__threads) _S_lock._M_acquire_lock(); }
+ ~_Lock() { if (__threads) _S_lock._M_release_lock(); }
} __attribute__ ((__unused__));
friend struct _Lock;
- static _Atomic_word _S_force_new;
-
public:
// __n must be > 0
static void*
};
template<bool __threads, int __inst> _Atomic_word
- __default_alloc_template<__threads, __inst>::_S_force_new = 0;
+ __pool_alloc<__threads, __inst>::_S_force_new = 0;
template<bool __threads, int __inst>
inline bool
- operator==(const __default_alloc_template<__threads,__inst>&,
- const __default_alloc_template<__threads,__inst>&)
+ operator==(const __pool_alloc<__threads,__inst>&,
+ const __pool_alloc<__threads,__inst>&)
{ return true; }
template<bool __threads, int __inst>
inline bool
- operator!=(const __default_alloc_template<__threads,__inst>&,
- const __default_alloc_template<__threads,__inst>&)
+ operator!=(const __pool_alloc<__threads,__inst>&,
+ const __pool_alloc<__threads,__inst>&)
{ return false; }
// the allocation lock.
template<bool __threads, int __inst>
char*
- __default_alloc_template<__threads, __inst>::
+ __pool_alloc<__threads, __inst>::
_S_chunk_alloc(size_t __size, int& __nobjs)
{
char* __result;
// hold the allocation lock.
template<bool __threads, int __inst>
void*
- __default_alloc_template<__threads, __inst>::_S_refill(size_t __n)
+ __pool_alloc<__threads, __inst>::_S_refill(size_t __n)
{
int __nobjs = 20;
char* __chunk = _S_chunk_alloc(__n, __nobjs);
template<bool __threads, int __inst>
_STL_mutex_lock
- __default_alloc_template<__threads,__inst>::_S_node_allocator_lock
- __STL_MUTEX_INITIALIZER;
+ __pool_alloc<__threads,__inst>::_S_lock __STL_MUTEX_INITIALIZER;
template<bool __threads, int __inst>
- char* __default_alloc_template<__threads,__inst>::_S_start_free = 0;
+ char* __pool_alloc<__threads,__inst>::_S_start_free = 0;
template<bool __threads, int __inst>
- char* __default_alloc_template<__threads,__inst>::_S_end_free = 0;
+ char* __pool_alloc<__threads,__inst>::_S_end_free = 0;
template<bool __threads, int __inst>
- size_t __default_alloc_template<__threads,__inst>::_S_heap_size = 0;
+ size_t __pool_alloc<__threads,__inst>::_S_heap_size = 0;
template<bool __threads, int __inst>
- typename __default_alloc_template<__threads,__inst>::_Obj* volatile
- __default_alloc_template<__threads,__inst>::_S_free_list[_NFREELISTS];
+ typename __pool_alloc<__threads,__inst>::_Obj* volatile
+ __pool_alloc<__threads,__inst>::_S_free_list[_NFREELISTS];
- typedef __default_alloc_template<true,0> __alloc;
- typedef __default_alloc_template<false,0> __single_client_alloc;
+ typedef __pool_alloc<true,0> __alloc;
+ typedef __pool_alloc<false,0> __single_client_alloc;
/**
* of stl_alloc.h.)
*
* The underlying allocator behaves as follows.
- * - __default_alloc_template is used via two typedefs
+ * - __pool_alloc is used via two typedefs
* - "__single_client_alloc" typedef does no locking for threads
* - "__alloc" typedef is threadsafe via the locks
* - __new_alloc is used for memory requests
/**
* @if maint
* Allocator adaptor to turn an "SGI" style allocator (e.g.,
- * __alloc, __malloc_alloc_template) into a "standard" conforming
+ * __alloc, __malloc_alloc) into a "standard" conforming
* allocator. Note that this adaptor does *not* assume that all
* objects of the underlying alloc class are identical, nor does it
* assume that all of the underlying alloc's member functions are
*/
template<int inst>
inline bool
- operator==(const __malloc_alloc_template<inst>&,
- const __malloc_alloc_template<inst>&)
+ operator==(const __malloc_alloc<inst>&,
+ const __malloc_alloc<inst>&)
{ return true; }
template<int __inst>
inline bool
- operator!=(const __malloc_alloc_template<__inst>&,
- const __malloc_alloc_template<__inst>&)
+ operator!=(const __malloc_alloc<__inst>&,
+ const __malloc_alloc<__inst>&)
{ return false; }
template<typename _Alloc>
//@{
/// Versions for the predefined "SGI" style allocators.
template<typename _Tp, int __inst>
- struct _Alloc_traits<_Tp, __malloc_alloc_template<__inst> >
+ struct _Alloc_traits<_Tp, __malloc_alloc<__inst> >
{
static const bool _S_instanceless = true;
- typedef __simple_alloc<_Tp, __malloc_alloc_template<__inst> > _Alloc_type;
- typedef __allocator<_Tp, __malloc_alloc_template<__inst> > allocator_type;
+ typedef __simple_alloc<_Tp, __malloc_alloc<__inst> > _Alloc_type;
+ typedef __allocator<_Tp, __malloc_alloc<__inst> > allocator_type;
};
template<typename _Tp, bool __threads, int __inst>
- struct _Alloc_traits<_Tp, __default_alloc_template<__threads, __inst> >
+ struct _Alloc_traits<_Tp, __pool_alloc<__threads, __inst> >
{
static const bool _S_instanceless = true;
- typedef __simple_alloc<_Tp, __default_alloc_template<__threads, __inst> >
+ typedef __simple_alloc<_Tp, __pool_alloc<__threads, __inst> >
_Alloc_type;
- typedef __allocator<_Tp, __default_alloc_template<__threads, __inst> >
+ typedef __allocator<_Tp, __pool_alloc<__threads, __inst> >
allocator_type;
};
/// "SGI" style allocators.
template<typename _Tp, typename _Tp1, int __inst>
struct _Alloc_traits<_Tp,
- __allocator<_Tp1, __malloc_alloc_template<__inst> > >
+ __allocator<_Tp1, __malloc_alloc<__inst> > >
{
static const bool _S_instanceless = true;
- typedef __simple_alloc<_Tp, __malloc_alloc_template<__inst> > _Alloc_type;
- typedef __allocator<_Tp, __malloc_alloc_template<__inst> > allocator_type;
+ typedef __simple_alloc<_Tp, __malloc_alloc<__inst> > _Alloc_type;
+ typedef __allocator<_Tp, __malloc_alloc<__inst> > allocator_type;
};
template<typename _Tp, typename _Tp1, bool __thr, int __inst>
- struct _Alloc_traits<_Tp, __allocator<_Tp1, __default_alloc_template<__thr, __inst> > >
+ struct _Alloc_traits<_Tp, __allocator<_Tp1, __pool_alloc<__thr, __inst> > >
{
static const bool _S_instanceless = true;
- typedef __simple_alloc<_Tp, __default_alloc_template<__thr,__inst> >
+ typedef __simple_alloc<_Tp, __pool_alloc<__thr,__inst> >
_Alloc_type;
- typedef __allocator<_Tp, __default_alloc_template<__thr,__inst> >
+ typedef __allocator<_Tp, __pool_alloc<__thr,__inst> >
allocator_type;
};
// NB: This syntax is a GNU extension.
extern template class allocator<char>;
extern template class allocator<wchar_t>;
- extern template class __default_alloc_template<true,0>;
+ extern template class __pool_alloc<true,0>;
} // namespace std
#endif
-// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002, 2003 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
typedef char fake_locale[sizeof(locale)]
__attribute__ ((aligned(__alignof__(locale))));
fake_locale c_locale;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx8c_localeE, _ZSt8c_locale, GLIBCPP_3.2)
// GLIBCXX_ABI > 5 will not need this symbol at all.
// It's here just as a placeholder, as the size of this exported
typedef char fake_locale_Impl_compat[o]
__attribute__ ((aligned(__alignof__(o))));
fake_locale_Impl_compat c_locale_impl_compat;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx20c_locale_impl_compatE, _ZSt13c_locale_impl, GLIBCPP_3.2)
typedef char fake_facet_vec[sizeof(locale::facet*)]
__attribute__ ((aligned(__alignof__(locale::facet*))));
fake_facet_vec facet_vec[_GLIBCPP_NUM_FACETS];
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx9facet_vecE, _ZSt9facet_vec, GLIBCPP_3.2)
typedef char fake_ctype_c[sizeof(std::ctype<char>)]
__attribute__ ((aligned(__alignof__(std::ctype<char>))));
fake_ctype_c ctype_c;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx7ctype_cE, _ZSt7ctype_c, GLIBCPP_3.2)
typedef char fake_collate_c[sizeof(std::collate<char>)]
__attribute__ ((aligned(__alignof__(std::collate<char>))));
fake_collate_c collate_c;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx9collate_cE, _ZSt9collate_c, GLIBCPP_3.2)
typedef char fake_numpunct_c[sizeof(numpunct<char>)]
__attribute__ ((aligned(__alignof__(numpunct<char>))));
fake_numpunct_c numpunct_c;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx10numpunct_cE, _ZSt10numpunct_c, GLIBCPP_3.2)
typedef char fake_num_get_c[sizeof(num_get<char>)]
__attribute__ ((aligned(__alignof__(num_get<char>))));
fake_num_get_c num_get_c;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx9num_get_cE, _ZSt9num_get_c, GLIBCPP_3.2)
typedef char fake_num_put_c[sizeof(num_put<char>)]
__attribute__ ((aligned(__alignof__(num_put<char>))));
fake_num_put_c num_put_c;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx9num_put_cE, _ZSt9num_put_c, GLIBCPP_3.2)
typedef char fake_codecvt_c[sizeof(codecvt<char, char, mbstate_t>)]
__attribute__ ((aligned(__alignof__(codecvt<char, char, mbstate_t>))));
fake_codecvt_c codecvt_c;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx9codecvt_cE, _ZSt9codecvt_c, GLIBCPP_3.2)
typedef char fake_moneypunct_c[sizeof(moneypunct<char, true>)]
__attribute__ ((aligned(__alignof__(moneypunct<char, true>))));
fake_moneypunct_c moneypunct_tc;
fake_moneypunct_c moneypunct_fc;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx13moneypunct_tcE,\
- _ZSt13moneypunct_tc, GLIBCPP_3.2)
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx13moneypunct_fcE,\
- _ZSt13moneypunct_fc, GLIBCPP_3.2)
typedef char fake_money_get_c[sizeof(money_get<char>)]
__attribute__ ((aligned(__alignof__(money_get<char>))));
fake_money_get_c money_get_c;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx11money_get_cE, _ZSt11money_get_c, GLIBCPP_3.2)
typedef char fake_money_put_c[sizeof(money_put<char>)]
__attribute__ ((aligned(__alignof__(money_put<char>))));
fake_money_put_c money_put_c;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx11money_put_cE, _ZSt11money_put_c, GLIBCPP_3.2)
typedef char fake_timepunct_c[sizeof(__timepunct<char>)]
__attribute__ ((aligned(__alignof__(__timepunct<char>))));
fake_timepunct_c timepunct_c;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx11timepunct_cE, _ZSt11timepunct_c, GLIBCPP_3.2)
typedef char fake_time_get_c[sizeof(time_get<char>)]
__attribute__ ((aligned(__alignof__(time_get<char>))));
fake_time_get_c time_get_c;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx10time_get_cE, _ZSt10time_get_c, GLIBCPP_3.2)
typedef char fake_time_put_c[sizeof(time_put<char>)]
__attribute__ ((aligned(__alignof__(time_put<char>))));
fake_time_put_c time_put_c;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx10time_put_cE, _ZSt10time_put_c, GLIBCPP_3.2)
typedef char fake_messages_c[sizeof(messages<char>)]
__attribute__ ((aligned(__alignof__(messages<char>))));
fake_messages_c messages_c;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx10messages_cE, _ZSt10messages_c, GLIBCPP_3.2)
#ifdef _GLIBCPP_USE_WCHAR_T
typedef char fake_wtype_w[sizeof(std::ctype<wchar_t>)]
__attribute__ ((aligned(__alignof__(std::ctype<wchar_t>))));
fake_wtype_w ctype_w;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx7ctype_wE, _ZSt7ctype_w, GLIBCPP_3.2)
typedef char fake_wollate_w[sizeof(std::collate<wchar_t>)]
__attribute__ ((aligned(__alignof__(std::collate<wchar_t>))));
fake_wollate_w collate_w;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx9collate_wE, _ZSt9collate_w, GLIBCPP_3.2)
typedef char fake_numpunct_w[sizeof(numpunct<wchar_t>)]
__attribute__ ((aligned(__alignof__(numpunct<wchar_t>))));
fake_numpunct_w numpunct_w;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx10numpunct_wE, _ZSt10numpunct_w, GLIBCPP_3.2)
typedef char fake_num_get_w[sizeof(num_get<wchar_t>)]
__attribute__ ((aligned(__alignof__(num_get<wchar_t>))));
fake_num_get_w num_get_w;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx9num_get_wE, _ZSt9num_get_w, GLIBCPP_3.2)
typedef char fake_num_put_w[sizeof(num_put<wchar_t>)]
__attribute__ ((aligned(__alignof__(num_put<wchar_t>))));
fake_num_put_w num_put_w;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx9num_put_wE, _ZSt9num_put_w, GLIBCPP_3.2)
typedef char fake_wodecvt_w[sizeof(codecvt<wchar_t, char, mbstate_t>)]
__attribute__ ((aligned(__alignof__(codecvt<wchar_t, char, mbstate_t>))));
fake_wodecvt_w codecvt_w;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx9codecvt_wE, _ZSt9codecvt_w, GLIBCPP_3.2)
typedef char fake_moneypunct_w[sizeof(moneypunct<wchar_t, true>)]
__attribute__ ((aligned(__alignof__(moneypunct<wchar_t, true>))));
fake_moneypunct_w moneypunct_tw;
fake_moneypunct_w moneypunct_fw;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx13moneypunct_twE,\
- _ZSt13moneypunct_tw, GLIBCPP_3.2)
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx13moneypunct_fwE,\
- _ZSt13moneypunct_fw, GLIBCPP_3.2)
typedef char fake_money_get_w[sizeof(money_get<wchar_t>)]
__attribute__ ((aligned(__alignof__(money_get<wchar_t>))));
fake_money_get_w money_get_w;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx11money_get_wE, _ZSt11money_get_w, GLIBCPP_3.2)
typedef char fake_money_put_w[sizeof(money_put<wchar_t>)]
__attribute__ ((aligned(__alignof__(money_put<wchar_t>))));
fake_money_put_w money_put_w;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx11money_put_wE, _ZSt11money_put_w, GLIBCPP_3.2)
typedef char fake_timepunct_w[sizeof(__timepunct<wchar_t>)]
__attribute__ ((aligned(__alignof__(__timepunct<wchar_t>))));
fake_timepunct_w timepunct_w;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx11timepunct_wE, _ZSt11timepunct_w, GLIBCPP_3.2)
typedef char fake_time_get_w[sizeof(time_get<wchar_t>)]
__attribute__ ((aligned(__alignof__(time_get<wchar_t>))));
fake_time_get_w time_get_w;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx10time_get_wE, _ZSt10time_get_w, GLIBCPP_3.2)
typedef char fake_time_put_w[sizeof(time_put<wchar_t>)]
__attribute__ ((aligned(__alignof__(time_put<wchar_t>))));
fake_time_put_w time_put_w;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx10time_put_wE, _ZSt10time_put_w, GLIBCPP_3.2)
typedef char fake_messages_w[sizeof(messages<wchar_t>)]
__attribute__ ((aligned(__alignof__(messages<wchar_t>))));
fake_messages_w messages_w;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx10messages_wE, _ZSt10messages_w, GLIBCPP_3.2)
#endif
typedef char fake_filebuf[sizeof(stdio_filebuf<char>)]
fake_filebuf buf_cout;
fake_filebuf buf_cin;
fake_filebuf buf_cerr;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx8buf_coutE, _ZSt8buf_cout, GLIBCPP_3.2)
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx7buf_cinE, _ZSt7buf_cin, GLIBCPP_3.2)
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx8buf_cerrE, _ZSt8buf_cerr, GLIBCPP_3.2)
#ifdef _GLIBCPP_USE_WCHAR_T
typedef char fake_wfilebuf[sizeof(stdio_filebuf<wchar_t>)]
fake_wfilebuf buf_wcout;
fake_wfilebuf buf_wcin;
fake_wfilebuf buf_wcerr;
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx9buf_wcoutE, _ZSt9buf_wcout, GLIBCPP_3.2)
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx8buf_wcinE, _ZSt8buf_wcin, GLIBCPP_3.2)
- _GLIBCPP_ASM_SYMVER(_ZN9__gnu_cxx9buf_wcerrE, _ZSt9buf_wcerr, GLIBCPP_3.2)
#endif
// Globals for once-only runtime initialization of mutex objects. This
// In the future, GLIBCXX_ABI > 5 should remove all uses of
// _GLIBCPP_ASM_SYMVER in this file, and remove exports of any
// static data members of locale.
+
+ // These are no longer exported.
locale::_Impl* locale::_S_classic;
locale::_Impl* locale::_S_global;
const size_t locale::_S_categories_size;
- _GLIBCPP_ASM_SYMVER(_ZNSt6locale18_S_categories_sizeE, _ZNSt6locale17_S_num_categoriesE, GLIBCPP_3.2)
const size_t locale::_S_extra_categories_size;
// Definitions for static const data members of locale::id
// Explicit instantiation file.
-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
#ifdef _GLIBCPP_INST_ATOMICITY_LOCK
template volatile int __Atomicity_lock<0>::_S_atomicity_lock;
#endif
-
-#if 1
- // XXX
- // 2002-05-24 These are no longer needed and should eventually be deleted.
- template
- string*
- __uninitialized_fill_n_aux<string*, size_t, string>
- (string*, size_t, string const &, __false_type);
-
- template
- string*
- __uninitialized_copy_aux<vector<string>::const_iterator, string *>
- (vector<string>::const_iterator, vector<string>::const_iterator,
- string*, __false_type);
-#endif
} // namespace std
// Explicit instantiation file.
-// Copyright (C) 1999, 2001, 2002 Free Software Foundation, Inc.
+// Copyright (C) 1999, 2001, 2002, 2003 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
template class allocator<char>;
template class allocator<wchar_t>;
- template class __default_alloc_template<true, 0>;
+ template class __pool_alloc<true, 0>;
} // namespace std
// Utility for libstdc++ ABI analysis -*- C++ -*-
-// Copyright (C) 2002 Free Software Foundation, Inc.
+// Copyright (C) 2002, 2003 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
typedef std::deque<std::string> symbol_names;
typedef __gnu_cxx::hash_map<std::string, symbol_info> symbol_infos;
+
+bool
+check_version(const symbol_info& test)
+{
+ bool ret = true;
+
+ typedef std::vector<std::string> compat_list;
+ static compat_list known;
+ if (known.empty())
+ {
+ known.push_back("GLIBCPP_3.2");
+ known.push_back("GLIBCPP_3.2.1");
+ known.push_back("GLIBCPP_3.2.2");
+ known.push_back("GLIBCPP_3.4");
+ known.push_back("CXXABI_1.2");
+ known.push_back("CXXABI_1.2.1");
+ known.push_back("CXXABI_1.3");
+ }
+
+ compat_list::iterator end = known.end();
+
+ // Check version names for compatibility...
+ compat_list::iterator it1 = find(known.begin(), end, test.version_name);
+
+ // Check for weak label.
+ compat_list::iterator it2 = find(known.begin(), end, test.name);
+ if (it1 != end || it2 != end)
+ ret = true;
+
+ return ret;
+}
+
bool
check_compatible(const symbol_info& lhs, const symbol_info& rhs,
bool verbose = false)
}
}
- if (lhs.version_name != rhs.version_name)
+ if (lhs.version_name != rhs.version_name
+ && !check_version(lhs) && !check_version(rhs))
{
ret = false;
if (verbose)
// Check added names for compatibility.
for (size_t i = 0; i < added_names.size(); ++i)
{
- vector<string> compatible_versions;
- compatible_versions.push_back("GLIBCPP_3.2.1");
- compatible_versions.push_back("GLIBCPP_3.2.2");
- compatible_versions.push_back("CXXABI_1.2.1");
-
symbol_info test = test_symbols[added_names[i]];
- vector<string>::iterator end = compatible_versions.end();
-
- // Check version names for compatibility...
- vector<string>::iterator it1 = find(compatible_versions.begin(), end,
- test.version_name);
-
- // Check for weak label.
- vector<string>::iterator it2 = find(compatible_versions.begin(), end,
- test.name);
-
- if (it1 == end && it2 == end)
+ if (!check_version(test))
{
incompatible.push_back(symbol_pair(test, test));
cout << test.version_name << endl;
#include <cstdlib>
#include <testsuite_hooks.h>
-typedef std::__malloc_alloc_template<3> weird_alloc;
-template class std::__malloc_alloc_template<3>;
+typedef std::__malloc_alloc<3> weird_alloc;
+template class std::__malloc_alloc<3>;
typedef std::__debug_alloc<weird_alloc> debug_weird_alloc;
template class std::__debug_alloc<weird_alloc>;
-typedef std::__default_alloc_template<true, 3> unshared_normal_alloc;
-template class std::__default_alloc_template<true, 3>;
+typedef std::__pool_alloc<true, 3> unshared_normal_alloc;
+template class std::__pool_alloc<true, 3>;
-typedef std::__default_alloc_template<false, 3> unshared_singlethreaded;
-template class std::__default_alloc_template<false, 3>;
+typedef std::__pool_alloc<false, 3> unshared_singlethreaded;
+template class std::__pool_alloc<false, 3>;
//std::malloc_alloc test_malloc_alloc;