mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-23 07:00:27 +08:00
configure.in (libtool_VERSION): To 6:0:0.
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. From-SVN: r61658
This commit is contained in:
parent
2d110c0a7f
commit
8099b2aee8
@ -1,3 +1,24 @@
|
||||
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>
|
||||
|
@ -1,6 +1,6 @@
|
||||
## 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.
|
||||
##
|
||||
@ -20,7 +20,7 @@
|
||||
## Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||
## USA.
|
||||
|
||||
GLIBCPP_3.2 {
|
||||
GLIBCPP_3.4 {
|
||||
|
||||
global:
|
||||
|
||||
@ -37,31 +37,24 @@ GLIBCPP_3.2 {
|
||||
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]*;
|
||||
@ -70,110 +63,60 @@ GLIBCPP_3.2 {
|
||||
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::locale::_Impl constructors, destrutors
|
||||
_ZNSt6locale5_ImplC*;
|
||||
_ZNSt6locale5_ImplD*;
|
||||
|
||||
# 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::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::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::__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*;
|
||||
# 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(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;
|
||||
# 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;
|
||||
@ -199,66 +142,47 @@ GLIBCPP_3.2 {
|
||||
# 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;
|
||||
@ -272,6 +196,9 @@ CXXABI_1.2 {
|
||||
__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;
|
||||
@ -292,35 +219,6 @@ CXXABI_1.2 {
|
||||
# __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;
|
2
libstdc++-v3/configure
vendored
2
libstdc++-v3/configure
vendored
@ -591,7 +591,7 @@ ORIGINAL_LD_FOR_MULTILIBS=$LD
|
||||
PACKAGE=libstdc++
|
||||
|
||||
# For libtool versioning info, format is CURRENT:REVISION:AGE
|
||||
libtool_VERSION=5:2:0
|
||||
libtool_VERSION=6:0:0
|
||||
|
||||
|
||||
|
||||
|
@ -13,7 +13,7 @@ ORIGINAL_LD_FOR_MULTILIBS=$LD
|
||||
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
|
||||
|
@ -1,6 +1,6 @@
|
||||
// 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
|
||||
@ -47,12 +47,13 @@
|
||||
#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
|
||||
|
@ -1,6 +1,6 @@
|
||||
// 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
|
||||
@ -113,15 +113,15 @@ namespace std
|
||||
/**
|
||||
* @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);
|
||||
@ -151,11 +151,11 @@ namespace std
|
||||
|
||||
// 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)();
|
||||
@ -286,7 +286,7 @@ namespace std
|
||||
* (See @link Allocators allocators info @endlink for more.)
|
||||
*/
|
||||
template<bool __threads, int __inst>
|
||||
class __default_alloc_template
|
||||
class __pool_alloc
|
||||
{
|
||||
private:
|
||||
enum {_ALIGN = 8};
|
||||
@ -306,7 +306,8 @@ namespace std
|
||||
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)
|
||||
@ -330,13 +331,11 @@ namespace std
|
||||
// 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*
|
||||
@ -404,18 +403,18 @@ namespace std
|
||||
};
|
||||
|
||||
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; }
|
||||
|
||||
|
||||
@ -424,7 +423,7 @@ namespace std
|
||||
// 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;
|
||||
@ -499,7 +498,7 @@ namespace std
|
||||
// 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);
|
||||
@ -534,24 +533,23 @@ namespace std
|
||||
|
||||
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;
|
||||
|
||||
|
||||
/**
|
||||
@ -561,7 +559,7 @@ namespace std
|
||||
* 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
|
||||
@ -655,7 +653,7 @@ namespace std
|
||||
/**
|
||||
* @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
|
||||
@ -757,14 +755,14 @@ namespace std
|
||||
*/
|
||||
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>
|
||||
@ -840,20 +838,20 @@ namespace std
|
||||
//@{
|
||||
/// 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;
|
||||
};
|
||||
|
||||
@ -871,20 +869,20 @@ namespace std
|
||||
/// "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;
|
||||
};
|
||||
|
||||
@ -902,7 +900,7 @@ namespace std
|
||||
// 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
|
||||
|
@ -1,4 +1,4 @@
|
||||
// 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
|
||||
@ -68,7 +68,6 @@ namespace __gnu_cxx
|
||||
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
|
||||
@ -77,151 +76,117 @@ namespace __gnu_cxx
|
||||
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>)]
|
||||
@ -229,9 +194,6 @@ namespace __gnu_cxx
|
||||
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>)]
|
||||
@ -239,9 +201,6 @@ namespace __gnu_cxx
|
||||
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
|
||||
|
@ -58,10 +58,11 @@ namespace std
|
||||
// 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
|
||||
|
@ -1,6 +1,6 @@
|
||||
// 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
|
||||
@ -71,19 +71,4 @@ namespace std
|
||||
#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
|
||||
|
@ -1,6 +1,6 @@
|
||||
// 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
|
||||
@ -39,5 +39,5 @@ namespace std
|
||||
template class allocator<char>;
|
||||
template class allocator<wchar_t>;
|
||||
|
||||
template class __default_alloc_template<true, 0>;
|
||||
template class __pool_alloc<true, 0>;
|
||||
} // namespace std
|
||||
|
@ -1,6 +1,6 @@
|
||||
// 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
|
||||
@ -75,6 +75,38 @@ namespace __gnu_cxx
|
||||
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)
|
||||
@ -113,7 +145,8 @@ check_compatible(const symbol_info& lhs, const symbol_info& rhs,
|
||||
}
|
||||
}
|
||||
|
||||
if (lhs.version_name != rhs.version_name)
|
||||
if (lhs.version_name != rhs.version_name
|
||||
&& !check_version(lhs) && !check_version(rhs))
|
||||
{
|
||||
ret = false;
|
||||
if (verbose)
|
||||
@ -363,23 +396,8 @@ main(int argc, char** argv)
|
||||
// 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;
|
||||
|
@ -24,17 +24,17 @@
|
||||
#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;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user