GCC 4.2.0 release C++ standard library and runtime support code.

This commit is contained in:
Alexander Kabaev 2007-05-19 01:25:07 +00:00
parent 6b834ef156
commit f8a1b7d9d8
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/vendor/gcc/dist/; revision=169691
849 changed files with 192098 additions and 43005 deletions

View File

@ -1,228 +1,267 @@
2006-03-05 Release Manager
2007-05-13 Release Manager
* GCC 3.4.6 released.
* GCC 4.2.0 released.
2005-11-30 Release Manager
2007-04-12 Paolo Carlini <pcarlini@suse.de>
* GCC 3.4.5 released.
PR libstdc++/28277 (partial: vstring bits)
* include/bits/ostream_insert.h: New.
* include/Makefile.am: Add.
* include/ext/vstring.h (operator<<(basic_ostream<>&,
const __versa_string<>&): Forward to __ostream_insert.
* include/bits/basic_string.h (operator<<(basic_ostream<>&,
const string<>&)): Likewise.
* include/std/std_ostream.h (operator<<(basic_ostream<>&, _CharT),
operator<<(basic_ostream<char,>&, char), operator<<(basic_ostream<>&,
const _CharT*), operator<<(basic_ostream<char,>&, const char*)):
Likewise.
* include/ext/vstring.tcc (operator<<(basic_ostream<>&,
const __versa_string<>&)): Remove.
(class basic_ostream): Remove friend declarations.
(basic_ostream<>::_M_write(char_type, streamsize),
_M_insert(const char_type*, streamsize)): Remove.
* include/bits/ostream.tcc (_M_insert(const char_type*, streamsize)):
Remove definition.
(operator<<(basic_ostream<>&, const char*)): Use __ostream_insert.
* include/ext/vstring_util.h: Include <bits/ostream_insert.h>.
* include/std/std_string.h: Likewise.
* config/abi/pre/gnu.ver: Adjust.
* src/ostream-inst.cc: Add __ostream_insert instantiations.
* include/Makefile.in: Rebuild.
* testsuite/ext/vstring/inserters_extractors/char/28277.cc: New.
* testsuite/ext/vstring/inserters_extractors/wchar_t/28277.cc: New.
2005-09-10 Joseph S. Myers <joseph@codesourcery.com>
2007-04-07 Paolo Carlini <pcarlini@suse.de>
* testsuite/26_numerics/c99_classification_macros_c.cc:
XFAIL on *-*-linux*, not *-*-linux-gnu.
PR libstdc++/31481
* include/ext/type_traits.h (__numeric_traits): Move...
* include/ext/numeric_traits.h: ... here; fix type of
__max_digits10.
* include/Makefile.am: Add.
* include/ext/pb_ds/detail/type_utils.hpp: Include
<ext/numeric_traits.h> too.
* include/tr1/random: Likewise.
* testsuite/ext/type_traits/numeric_traits.cc: Move...
* testsuite/ext/numeric_traits/numeric_traits.cc: ... here.
* include/Makefile.in: Regenerate.
* testsuite/ext/type_traits/remove_unsigned_integer_neg.cc:
Adjust dg-error line number.
* testsuite/ext/type_traits/add_unsigned_floating_neg.cc:
Likewise.
* testsuite/ext/type_traits/remove_unsigned_floating_neg.cc:
Likewise.
* testsuite/ext/type_traits/add_unsigned_integer_neg.cc:
Likewise.
2005-09-01 Benjamin Kosnik <bkoz@redhat.com>
2007-04-03 Paolo Carlini <pcarlini@suse.de>
* include/c_std/std_cmath.h: Declare C99 functions and helper
functions as inline.
* include/bits/stl_map.h (map<>::insert(iterator, const value_type&):
Uglify parameter.
2005-08-29 Paolo Carlini <pcarlini@suse.de>
2007-04-02 Paolo Carlini <pcarlini@suse.de>
PR libstdc++/23528
Port from HEAD/4_0-branch:
2004-07-28 Matt Austern <austern@apple.com>
* include/ext/hashtable.h: Use rebind so that allocator_type
has correct type for a container's allocator.
* testsuite/ext/23528.cc: New.
PR libstdc++/31401 (vstring bits)
* include/ext/vstring.tcc (find(const _CharT*, size_type,
size_type)): Avoid unsigned overflow.
2005-08-24 Lawrence Lim <llim@redhat.com>
Jakub Jelinek <jakub@redhat.com>
Benjamin Kosnik <bkoz@redhat.com>
2007-03-30 Paolo Carlini <pcarlini@suse.de>
PR libstdc++/23550
* testsuite/21_strings/char_traits/requirements/char/1.cc
(test01): Simplify counting.
* testsuite/21_strings/char_traits/requirements/wchar_t/1.cc
(test02): Same.
PR libstdc++/31401
* include/bits/basic_string.tcc (find(const _CharT*, size_type,
size_type)): Avoid unsigned overflow.
* testsuite/21_strings/basic_string/find/char/4.cc: New.
* testsuite/21_strings/basic_string/find/wchar_t/4.cc: Likewise.
2005-07-18 Paolo Carlini <pcarlini@suse.de>
Nathan Myers <ncm@cantrip.org>
2007-03-06 Paolo Carlini <pcarlini@suse.de>
PR libstdc++/21286
* include/bits/fstream.tcc (basic_filebuf<>::xsgetn):
Loop on short reads.
PR libstdc++/28080 (partial)
* include/tr1/random (class random_device): Rework to use simple
<cstdio> input, do not include <fstream>.
* include/tr1/random.tcc (all inserters and extractors): Refer
to ios_base as base class of basic_istream or basic_ostream.
2005-05-27 Mark Mitchell <mark@codesourcery.com>
2007-03-05 Joseph Myers <joseph@codesourcery.com>
* testsuite/Makefile.in: Regenerate with Automake 1.7.8.
PR libstdc++/30675
* testsuite/lib/libstdc++.exp (v3-build_support): Use [transform
"ar"] and [transform "ranlib"].
2005-05-19 Release Manager
2007-03-05 Richard Guenther <rguenther@suse.de>
* GCC 3.4.4 released.
Backport from mainline:
2007-02-27 Richard Guenther <rguenther@suse.de>
2005-05-18 Jonathan Wakely <redi@gcc.gnu.org>
* acinclude.m4: Adjust regular expression for ld version extraction.
* configure: Regenerate.
* docs/html/debug.html: Explain that _GLIBXX_DEBUG_PEDANTIC must
be defined for pedantic mode.
2007-03-05 Paolo Carlini <pcarlini@suse.de>
2005-05-15 Andreas Schwab <schwab@suse.de>
PR libstdc++/31031
* include/bits/istream.tcc: Inhibit implicit instantiation of
the _M_insert helpers.
* include/bits/ostream.tcc: Likewise for _M_extract.
* testsuite/27_io/basic_ostream/inserters_arithmetic/char/
31031.cc: New.
* testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/
31031.cc: Likewise.
* testsuite/Makefile.am (check-local): Really remove.
* testsuite/Makefile.in: Regenerated.
2007-03-03 Paolo Carlini <pcarlini@suse.de>
2005-05-12 Mark Mitchell <mark@codesourcery.com>
PR libstdc++/28080 (partial)
* include/tr1/functional: Split out hash bits to...
* include/tr1/functional_hash.h: ...here.
* include/Makefile.am: Add.
* include/tr1/unordered_set: Include the latter instead.
* include/tr1/unordered_map: Likewise.
* include/Makefile.in: Regenerate.
2005-04-04 Mark Mitchell <mark@codesourcery.com>
* testsuite/Makefile.am (check-local): Remove.
(curent_symbols.txt): Likewise.
(check-abi): Do not depend on current_symbols.txt.
* testsuite/Makefile.in: Regenerated.
* testsuite/libstdc++-abi/abi.exp: Build current_symbols.txt.
2005-04-01 Mark Mitchell <mark@codesourcery.com>
* testsuite/Makefile.am (noinst_PROGRAMS): Remove.
(site.exp): Write out the path to the baseline file.
(check-abi): Use DejaGNU.
(check-abi-verbose): Remove.
* testsuite/Makefile.in: Regenerated.
* testsuite/abi_check.cc (main): Check the return value from
compare_symbols.
* testsuite/testsuite_abi.cc (compare_symbols): Return a value.
* testsuite/testsuite_abi.h (compare_symbols): Adjust prototype.
* testsuite/libstdc++-abi/abi.exp: New file.
2004-03-19 Phil Edwards <phil@codesourcery.com>
* testsuite/Makefile.am (site.exp): New target, based on that
created by automake. Also set libiconv.
* include/tr1/utility (get(std::pair<>&), get(const std::pair<>&)):
Mark inline.
2005-05-04 Mark Mitchell <mark@codesourcery.com>
2007-02-21 Mark Mitchell <mark@codesourcery.com>
* testsuite/lib/libstdc++.exp (v3-build_support): Look for
__GTHREADS, rather than _GLIBCXX_HAVE_GTHR_DEFAULT, to determine
whether or not thread support is available.
* testsuite/lib/libstdc++.exp (libstdc++_init): Compile testglue
with -fexceptions.
2005-05-04 Mark Mitchell <mark@codesourcery.com>
2007-02-07 Hans-Peter Nilsson <hp@axis.com>
Backport:
2005-03-25 Mark Mitchell <mark@codesourcery.com>
* testsuite/lib/libstdc++.exp (libstdc++_init): Define LOCALEDIR
when testing an installed compiler.
* testsuite/lib/libstdc++.exp (v3-build_support): Pass -w when
compiling support objects.
2005-03-23 Mark Mitchell <mark@codesourcery.com>
* testsuite/libstdc++-dg/normal.exp: Read testsuite_files, if it
exists.
* testsuite/lib/libstdc++.exp (libstdc++_wchar_t): Rename to ...
(v3-wchar_t): ... this.
(libstdc++_threads): Rename to ...
(v3-threads): ... this.
(libstdc++_test_objs): Rename to ...
(v3-test_objs): ... this.
(libstdc++_build_support): Rename to ...
(v3-build_support): ... this.
* testsuite/libstdc++-dg/normal.exp: Adjust to use new names.
* testsuite/lib/libstdc++.exp (libstdc++_init): Improve handling
of compilers not in the build directory.
(libstdc++_wchar_t): New variable.
(libstdc++_threads): Likewise.
(libstdc++_test_objs): Likewise.
(v3_target_compile): Use libstdc++_test_objs.
(v3-list-tests): Remove.
(listdc++_build_support): New function.
* testsuite/libstdc++-dg/normal.exp: Rework to dynamically
generate list of tests.
2004-11-23 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
* testsuite/lib/libstdc++.exp: Use new procs in target-libpath.exp.
PR testsuite/28870
* testsuite/27_io/basic_stringbuf/overflow/char/1.cc: Use only
10000 iterations for simulator targets.
* testsuite/ext/pb_ds/regression/tree_data_map_rand.cc: Use only 5
iterations for simulator targets.
* testsuite/ext/pb_ds/regression/tree_no_data_map_rand.cc: Ditto.
* testsuite/ext/pb_ds/regression/trie_data_map_rand.cc: Ditto.
* testsuite/ext/pb_ds/regression/trie_no_data_map_rand.cc: Ditto.
* testsuite/ext/pb_ds/regression/hash_no_data_map_rand.cc: Ditto.
* testsuite/ext/pb_ds/regression/hash_data_map_rand.cc: Ditto.
* testsuite/ext/pb_ds/regression/priority_queue_rand.cc: Ditto.
* testsuite/23_containers/set/modifiers/16728.cc: Use only 10
iterations for simulator targets.
2005-04-26 Jones Desougi <jones@ingate.com>
2007-02-05 Paolo Carlini <pcarlini@suse.de>
PR libstdc++/21131
* linkage.m4: Fix comments.
* include/bits/stl_deque.h (operator<): Qualify call.
2005-04-25 Paolo Carlini <pcarlini@suse.de>
2007-02-01 Paolo Carlini <pcarlini@suse.de>
PR libstdc++/21035
* include/bits/basic_string.h (compare): Adjust the documentation
to match the implementation and the standard.
PR libstdc++/14493
* libsupc++/typeinfo (bad_cast::what, bad_typeid::what): Declare.
* libsupc++/tinfo.cc: Define.
* libsupc++/exception (bad_exception::what): Declare.
* libsupc++/eh_exception.cc: Define.
(exception::what): Adjust, don't use typeid.
* libsupc++/new (bad_alloc::what): Declare.
* libsupc++/new_handler.cc: Define.
* config/abi/pre/gnu.ver: Export the new methods @3.4.9.
* testsuite/18_support/14493.cc: New.
2005-02-20 Paolo Carlini <pcarlini@suse.de>
Jon Grimm <jgrimm2@us.ibm.com>
PR libstdc++/19955
* include/bits/locale_facets.h (ctype<char>::_M_narrow_init()):
Fix the logic setting _M_narrow_ok: first check whether the
transformation is trivial with a dflt == 0, then deal with the
special case of zero.
* testsuite/22_locale/ctype/narrow/char/19955.cc: New.
2007-02-01 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (ctype<char>::_M_widen_init()):
Tweak consistently to use memcmp; minor formatting fixes.
PR libstdc++/29496
* include/debug/safe_base.h (_Safe_sequence_base::_M_get_mutex,
_Safe_iterator_base::_M_get_mutex, _M_attach_single, _M_detach_single):
New.
* src/debug.cc: Define the latter.
(_Safe_sequence_base::_M_detach_all, _M_detach_singular,
_M_revalidate_singular, _M_swap): Use the mutex.
(_Safe_iterator_base::_M_attach, _M_detach): Adjust, forward to the
*_single version.
* include/debug/safe_iterator.h (_Safe_iterator<>::_M_attach_single,
_M_invalidate_single): New.
* include/debug/safe_iterator.tcc: Define.
(_Safe_iterator<>::_M_invalidate): Adjust, forward to
_M_invalidate_single.
* include/debug/safe_sequence.h (_Safe_sequence<>::_M_invalidate_if,
_M_transfer_iter): Use the mutex, adjust, forward to the *_single
versions of _M_invalidate and _M_attach.
* config/abi/pre/gnu.ver (_Safe_sequence_base::_M_get_mutex,
_Safe_iterator_base::_M_get_mutex, _M_attach_single, _M_detach_single):
Add @GLIBCXX_3.4.9; adjust.
2005-02-18 Eric Botcazou <ebotcazou@libertysurf.fr>
2007-01-27 Steve LoBasso <slobasso@yahoo.com>
Paolo Carlini <pcarlini@suse.de>
* testsuite/thread/pthread1.cc: Do not invoke pthread_setconcurrency
on Solaris 2.6 and below.
* testsuite/thread/pthread2.cc: Likewise.
* testsuite/thread/pthread3.cc: Likewise.
* testsuite/thread/pthread4.cc: Likewise.
* testsuite/thread/pthread5.cc: Likewise.
* testsuite/thread/pthread6.cc: Likewise.
* testsuite/thread/pthread7-rope.cc: Likewise.
* include/bits/deque.tcc (deque<>::erase(iterator, iterator)):
Fix condition.
* testsuite/23_containers/deque/modifiers/erase/3.cc: New.
2005-02-16 Paolo Carlini <pcarlini@suse.de>
2007-01-26 Paolo Carlini <pcarlini@suse.de>
PR libstdc++/19829
* testsuite/21_strings/basic_string/find/char/3.cc: Fix the test
at line #66 to not access str_lit01 beyond its end.
* testsuite/21_strings/basic_string/find/wchar_t/3.cc: Likewise.
PR libstdc++/30586
* config/cpu/ia64/atomic_word.h: Just include <bits/cxxabi_tweaks.h>.
* testsuite/abi/30586.cc: New.
2005-02-15 Jakub Jelinek <jakub@redhat.com>
2007-01-26 Benjamin Kosnik <bkoz@redhat.com>
PR libstdc++/19946
* testsuite/demangle/abi_examples/01.cc (main): Adjust for 2005-02-13
demangler change.
* testsuite/demangle/abi_examples/02.cc (main): Likewise.
Revert.
2006-12-11 Benjamin Kosnik <bkoz@redhat.com>
PR libstdc++/28125
* acinclude.m4 (GLIBCXX_CHECK_ICONV_SUPPORT): Remove link test, ie
AC_CHECK_LIB for libiconv. Instead, use bits of AM_ICONV.
* configure: Regenerate.
* scripts/testsuite_flags.in (cxxflags): Add LIBICONV bits.
2005-02-08 Mark Mitchell <mark@codesourcery.com>
2007-01-24 Benjamin Kosnik <bkoz@redhat.com>
* config/linker-map.gnu (GLIBCXX_3.4): Add _ZNSdC* and _ZNSdD*.
PR libstdc++/29722 continued
* testsuite/lib/libstdc++.exp (v3_target_compile_as_c): Add
libsupc++ library directory.
* testsuite/abi/cxx_runtime_only_linkage.cc: Remove hard-coded
path specification.
2005-02-02 Paolo Carlini <pcarlini@suse.de>
2007-01-21 Paolo Carlini <pcarlini@suse.de>
PR libstdc++/19642
* config/locale/generic/c_locale.h (__convert_from_v): Switch only
LC_NUMERIC, and only when actually != "C".
PR libstdc++/29989
* include/bits/c++config: #undef min and max.
* include/bits/stl_algobase.h: Remove min and max #undefs.
* testsuite/18_support/numeric_limits/29989.cc: New.
2005-01-31 Brad Spencer <spencer@infointeractive.com>
2007-01-15 Paolo Carlini <pcarlini@suse.de>
* crossconfig.m4: Repair Solaris cross bits for strtold and strtof.
* configure: Regenerated.
* include/std/std_valarray.h (valarray<>::cshift): Fix typo.
2005-01-26 Paolo Carlini <pcarlini@suse.de>
2007-01-14 Paolo Carlini <pcarlini@suse.de>
* include/std/std_complex.h: Remove usages of the dead
_GLIBCXX_BUGGY_COMPLEX macro.
* include/bits/stl_algobase.h (fill_n(char*, _Size,
const signed char&)): Fix signature.
* testsuite/25_algorithms/fill/3.cc: New.
2005-01-21 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
2007-01-13 John David Anglin <dave.anglin@nrc-cnrc.gc>
PR libstdc++/19510
* include/bits/stl_list.h (_List_iterator): Initialize _M_node
in constructor.
(_List_const_iterator): Likewise.
* include/bits/stl_tree.h (_Rb_tree_iterator): Likewise.
(_Rb_tree_const_iterator): Likewise.
* config/cpu/hppa/atomicity.h (__exchange_and_add): Don't use ordered
store.
(__atomic_add): Likewise.
* testsuite/23_containers/map/operators/1_neg.cc: Adjust line numbers.
* testsuite/23_containers/set/operators/1_neg.cc: Likewise.
2007-01-13 Paolo Carlini <pcarlini@suse.de>
2005-01-18 Paolo Carlini <pcarlini@suse.de>
PR libstdc++/14991
* docs/html/17_intro/porting-howto.html ([3]): Mention stdio_filebuf.
* docs/html/17_intro/porting-howto.xml: Remove.
* include/bits/stl_tree.h: Add a few missing std:: qualifications.
* docs/html/17_intro/porting-howto.html: Remove spurious end tags
pointed out by validator.w3.org.
2005-01-16 Jonathan Wakely <redi@gcc.gnu.org>
2007-01-12 Paolo Carlini <pcarlini@suse.de>
* include/ext/rope: Qualify calls to std::copy() by sequence_buffer.
* testsuite/ext/rope/4.cc: Add.
PR libstdc++/30416 (continued)
* include/std/std_valarray.h (valarray<>::shift, valarray<>::cshift):
Allways return the same variable, thus facilitating NRVO.
2005-01-12 Paolo Carlini <pcarlini@suse.de>
2007-01-12 Paolo Carlini <pcarlini@suse.de>
* include/bits/stl_algobase.h (lexicographical_compare):
Fix concept check.
PR libstdc++/30416
* include/std/std_valarray.h (valarray<>::shift, valarray<>::cshift):
Do not segfault when |n| > size.
* testsuite/26_numerics/valarray/30416.cc: New.
2005-01-02 Chris Jefferson <chris@bubblescope.net>
2007-01-06 Paolo Carlini <pcarlini@suse.de>
* include/bits/stl_algobase.h (mismatch): Correct concept check.
PR libstdc++/30365
* crossconfig.m4 (case *-linux*): Run GLIBCXX_CHECK_LFS.
* configure: Regenerate.
2005-01-01 Paolo Carlini <pcarlini@suse.de>
2007-01-06 Matthias Klose <doko@debian.org>
* testsuite/ext/enc_filebuf/char/13189.cc: Fix, first include
testsuite_hooks.h, to know whether including ext/enc_filebuf.h.
* testsuite/ext/enc_filebuf/wchar_t/13189.cc: Likewise.
* include/tr1/random (gamma_distribution): Fix typo in formula.
* docs/doxygen/user.cfg.in: Use package amsmath.

View File

@ -0,0 +1,942 @@
1998-12-31 Benjamin Kosnik <bkoz@lunatic.cygnus.com>
* bits/fstream.tcc: Add fstream ctor for cin/cout/etc.
* bits/std_fstream.h: Ditto.
* src/stdstreams.cc: Ditto.
* math/cpowl.c: Fix header typo with last change.
1998-12-31 Benjamin Kosnik <bkoz@loony.cygnus.com>
* COPYING: New file (GPL v 2).
* LICENSE.STD: Remove.
* ./*: Change license.
1998-12-30 Benjamin Kosnik <bkoz@haight.constant.com>
* bits/std_streambuf.h (std): Remove static on _M_init.
* bits/streambuf.tcc (std): Ditto.
* bits/std_fstream.h: Add changes as discussed with Nathan, including
state_type and codecvt_type members, the allocation of an internal
buffer, the streamlined codecvt calls, etc.
1998-12-21 Benjamin Kosnik <bkoz@haight.constant.com>
* bits/std_sstream.h: Tweak.
* bits/fstream.tcc: Remove unused stubs.
* bits/std_fstream.h: Tweak.
1998-12-17 Benjamin Kosnik <bkoz@tintin.cygnus.com>
* bits/std_streambuf.h: Move _IO_file_flags into basic_filebuf.
Remove unused _IO_* members, possibly put into filebuf, which may
need them.
* bits/std_fstream.h: Add _M_flag.
* bits/sbuf_iter.h: Tweak.
* bits/std_cstdio.h: Add SEEK_SET, SEEK_END, SEEK_CUR.
* bits/ios_base.h: Use.
* src/stdstreams.cc: Modify to reflect standard ctors for
filebuf.
* src/misc-inst.cc: Ditto.
* bits/os_raw.h: Wrap in std namespace. Model parameters on
underlying C library calls instead of the underlying unix
filesystem.
* src/os_raw.cc (_S_os_open): Use fopen, and compute a mode
string as per p.659.
(_S_os_close): Model on fopen.
(_S_os_read): Model on fread.
(_S_os_write): Model on fwrite.
(_S_os_seek): Model on fseek.
* bits/ios_base.h: Tweak.
* bits/std_iosfwd.h: Wrap libio.h include with extern "C".
* bits/std_sstream.h: Tweak.
* bits/sstream.tcc: Remove old, uncalled code.
* bits/std_fstream.h: Major reconstruction.
* bits/fstream.tcc: Disable for the time being.
1998-12-11 Benjamin Kosnik <bkoz@haight.constant.com>
* bits/basic_string.h: Fix insert method.
* stl/bits/stl_iterator.h: Remove previous hack.
* bits/std_streambuf.h (sbumpc): Correct increment/return oddness.
* bits/std_sstream.h: Fix more regressions.
* testsuite/27/27stringbuf.C: Add (almost) complete tests.
1998-12-09 Benjamin Kosnik <bkoz@loony.cygnus.com>
* bits/basic_string.h: Tweak.
* stl/bits/stl_iterator.h: Specialize iterator_traits for int so
that string::append can be instantiated. HACK--checkin
basic_string::iterator class.
1998-12-07 Benjamin Kosnik <bkoz@haight.constant.com>
* bits/std_sstream.h: Tweak.
* bits/sstream.tcc: Tweak ctors.
FIXME invalid friend defs. . WHERE ARE THEY??
* bits/sbuf_iter.h (istreambuf_iterator::equal): Change to new
names for basic_streambuf data members.
* bits/std_streambuf.h: Add getloc() initialization bits.
basic_streambuf(): Initialize with global locale data.
imbue(): Set _M_init.
* bits/std_streambuf.h(seekoff, seekpos): Complete with invalid
stream pos == pos_type(off_type(-1)).
in_avail(): Complete default implementation.
snextc, sbumpc, sputbackc, sungetc, sputc, setg, xsputn,
underflow, uflow, xsgetn, showmany, sync: Ditto.
* bits/std_streambuf.h: _M_snextc_helper(): Remove.
* bits/streambuf.tcc (sputbackc): Temporarily remove, need to
re-populate with in-line member functions that are too big. Add
initialization for _M_init.
1998-12-03 Benjamin Kosnik <bkoz@cygnus.com>
* bits/sstream.tcc: Convert _Allocator to _Alloc. Add typedefs
for basic_string and basic_streambuf. Scope _IO_buf_* pointers to
streambuf_type.
* src/stdstreams.cc (std): Disable wchar_t instantiations.
* bits/c++config.h (_G_DEPRICATED): Add.
(_G_USE_WCHAR_T): Add.
* bits/std_streambuf.h: Radical reconstruction of basic_streambuf.
Take out _Streambuf_base. Put _IO_FILE data member in basic_filebuf.
* bits/streambuf.tcc (sputbackc): Remove ctor anti-def, Tweak.
* bits/std_fstream.h: Add comment for implementation.
* src/streambuf.cc: Remove.
* src/Makefile.in: Remove streambuf.lo.
* src/misc-inst.cc: Tweak.
1998-12-02 Benjamin Kosnik <bkoz@cygnus.com>
* bits/std_sstream.h: Add const_cast to rdbuf returns.
* testsuite/27stringstream.C: Modify.
1998-11-25 Benjamin Kosnik <bkoz@haight.constant.com>
* src/Makefile.in (libstdc___la_OBJECTS): Add streambuf.lo.
(libstdc___la_SOURCES): Ditto.
* bits/streambuf.tcc: Tweak.
* src/streambuf.cc: New file, add out-of-line definitions for
_Streambuf_base.
* src/misc-inst.cc: Remove _Streambuf_base instantiations.
Comment out wchar_t versions of the buffer instantiations, for now.
* bits/std_streambuf.h: Wrap libio.h include with extern "C".
Remove template wrapper around _Streambuf_base.
Move IO_* data members into _Streambuf_base.
Move _Streambuf_base members into streambuf.tcc.
* bits/c++config.h (_G_USE_LIBIO): Enable.
1998-11-02 Nathan Myers <ncm@cantrip.org>
* CHECKLIST: downgrade iterator implementations
* DESIGN: fill out notes about unimplemented features
1998-10-31 Nathan Myers <ncm@cantrip.org>
* CHECKLIST: itemized list of all interfaces, and status of each.
1998-10-30 Nathan Myers <ncm@cantrip.org>
* RELEASE-NOTES: add notes about optional includes, linking, running
* src/Makefile.am: handle header installs properly
* src/Makefile.in: regenerate from new src/Makefile.am
1998-10-30 Benjamin Kosnik <bkoz@loony.cygnus.com>
* bits/basic_string.h: Revert npos pending ciso646.
* src/Makefile.am: Revert CXX flags for now.
* src/Makefile.in: Ditto.
1998-10-30 Brendan Kehoe <brendan@cygnus.com>
* bits/std_sstream.h: Re-order ctors to put base before member
inits.
1998-10-30 Ryszard Kabatek <kabatek@chemie.uni-halle.de>
* stl/bits/std_memory.h: Fix typo.
1998-10-30 Nathan Myers <ncm@cantrip.org>
* src/string[A-Z]+.cc: change back to include "string.cc".
* src/Makefile.am: revert filename changes. We need a different
way to keep filenames in std/ from confusing Make.
* bits/basic_string.h: define _S_max_size right, return it from
string::max_size(); churn definition of npos again.
* bits/string.tcc: fix _S_frob_size to avoid uint overflow.
* bits/ios.cc: remove #ifdef on ios_base locale member initialization
* BUGS: clear cruft.
* C++STYLE: Touchup for release.
* CHECKLIST: Touchup for release.
* DESIGN: New file.
* LICENSE.STD: Add requirement to retain copyrights and to provide
the license with any copies.
* README: Update for release.
* TODO: Minor touchup for release.
* RELEASE-NOTES: prepare for release
1998-10-29 Ulrich Drepper <drepper@cygnus.com>
* src/string[A-Z]+.cc: Include stdstring.cc, not string.cc.
* src/Makefile.am (CXXFLAGS): Define _GNU_SOURCE.
* src/Makefile.am (CXXLINK): New variable. Make sure we don't use
CXX to generate the shared object.
* src/Makefile.am (headers): Remove duplicated char_traits.h.
1998-10-29 Brendan Kehoe <brendan@cygnus.com>
* bits/basic_string.h (basic_string<>::max_size): Subtract 1, not
2, from npos, solving infinite loop problems.
1998-10-29 18:41 Ulrich Drepper <drepper@cygnus.com>
* src/Makefile.am: Add rules to install headers.
1998-10-29 Nathan Myers <ncm@cantrip.org>
* bits/std_ostream.h: Remove #ifdef on operator<< for long double
* bits/ostream.tcc: Remove #ifdef on operator<< for long double
* shadow/libio.h:
* shadow/unistd.h:
* shadow/bits/wrap_libio.h:
* shadow/bits/wrap_unistd.h: New files.
1998-10-29 Brendan Kehoe <brendan@cygnus.com>
* bits/ostream.tcc (operator<<): Wrap with #ifdef
_G_HAVE_LONG_DOUBLE_IO, to match bits/std_ostream.h.
1998-10-29 Ulrich Drepper <drepper@cygnus.com>
* src/Makefile.am: Add temporarily rules to make sure misc-inst.cc
is not compiled with -fno-implicit-templates in effect.
* src/Makefile.am (EXTRA_SOURCES): Add string.cc and wstring.cc here.
(libstdc___la_SOURCES): Add all the string*.cc and wstring*.cc files.
* src/stringADDCS.cc: Wrapper around string.cc to define individual
function.
* src/stringADDPS.cc: Likewise.
* src/stringADDSC.cc: Likewise.
* src/stringADDSP.cc: Likewise.
* src/stringADDSS.cc: Likewise.
* src/stringBIST.cc: Likewise.
* src/stringBOST.cc: Likewise.
* src/stringCHTR.cc: Likewise.
* src/stringEQPS.cc: Likewise.
* src/stringEQSP.cc: Likewise.
* src/stringEQSS.cc: Likewise.
* src/stringEXTRA.cc: Likewise.
* src/stringGEPS.cc: Likewise.
* src/stringGESP.cc: Likewise.
* src/stringGESS.cc: Likewise.
* src/stringGETLI.cc: Likewise.
* src/stringGTPS.cc: Likewise.
* src/stringGTSP.cc: Likewise.
* src/stringGTSS.cc: Likewise.
* src/stringINSER.cc: Likewise.
* src/stringLEPS.cc: Likewise.
* src/stringLESP.cc: Likewise.
* src/stringLESS.cc: Likewise.
* src/stringLTPS.cc: Likewise.
* src/stringLTSP.cc: Likewise.
* src/stringLTSS.cc: Likewise.
* src/stringMAIN.cc: Likewise.
* src/stringNEPS.cc: Likewise.
* src/stringNESP.cc: Likewise.
* src/stringNESS.cc: Likewise.
* src/stringSCOPY.cc: Likewise.
* src/wstringADDCS.cc: Wrapper around wstring.cc to define individual
functions.
* src/wstringADDPS.cc: Likewise.
* src/wstringADDSC.cc: Likewise.
* src/wstringADDSP.cc: Likewise.
* src/wstringADDSS.cc: Likewise.
* src/wstringBIST.cc: Likewise.
* src/wstringBOST.cc: Likewise.
* src/wstringCHTR.cc: Likewise.
* src/wstringEQPS.cc: Likewise.
* src/wstringEQSP.cc: Likewise.
* src/wstringEQSS.cc: Likewise.
* src/wstringEXTRA.cc: Likewise.
* src/wstringGEPS.cc: Likewise.
* src/wstringGESP.cc: Likewise.
* src/wstringGESS.cc: Likewise.
* src/wstringGETLI.cc: Likewise.
* src/wstringGTPS.cc: Likewise.
* src/wstringGTSP.cc: Likewise.
* src/wstringGTSS.cc: Likewise.
* src/wstringINSER.cc: Likewise.
* src/wstringLEPS.cc: Likewise.
* src/wstringLESP.cc: Likewise.
* src/wstringLESS.cc: Likewise.
* src/wstringLTPS.cc: Likewise.
* src/wstringLTSP.cc: Likewise.
* src/wstringLTSS.cc: Likewise.
* src/wstringMAIN.cc: Likewise.
* src/wstringNEPS.cc: Likewise.
* src/wstringNESP.cc: Likewise.
* src/wstringNESS.cc: Likewise.
* src/wstringSCOPY.cc: Likewise.
* src/string.cc: Remove now unneeded #defines now.
1998-10-29 Nathan Myers <ncm@cantrip.org>
* bits/locfacets.tcc: Define num_put::put(... const void*), improve
integer formatting.
* bits/ostream.tcc: Delete cruft, rewrite various op<< as members,
add definitions for double, long double, const void*.
* bits/std_ostream.h: Move op<<'s back into class ostream,
define some in-line.
* bits/string.tcc: fix unnecessary-copying bug in op[], typos in
string construction from input iterators that Brendan reported.
1998-10-28 Brendan Kehoe <brendan@cygnus.com>
* stl/bits/stl_pair.h (op!=, op>, p<=, op>=): Add missing definitions.
* bits/valarray_meta.h (class _Constant): Move declaration to the
top, so the rest of the file can grok it.
(_ApplyBinaryFunction::operator[]): Add missing parenthesis.
* bits/std_sstream.h (basic_ostringstream::str): Fix typo of extra
semicolon.
(basic_stringstream::str, both instances): Likewise.
1998-10-28 Nathan Myers <ncm@cantrip.org>
* bits/locfacets.h: fix num_put<>::falsename()
* bits/locfacets.tcc: fix _Format_cache<>::_M_populate bool name init
* testsuite/27/27octfmt.C, testsuite/27/27octfmt.C: new tests
* bits/locfacets.tcc: touch up _S_group_digits.
* src/misc-inst.cc: adjust _S_group_digits insts to match.
1998-10-27 Nathan Myers <ncm@cantrip.org>
* stl/bits/stl_config.h: Turn off long long support, for now.
* src/locale-inst.cc: Instantiate num_put<> only for
ostreambuf_iterator, num_get only for istreambuf_iterator.
* src/misc-inst.cc: Delete duplicate locale-related instantiations,
add lots of new instantiations for num_put support function templates;
remove junk about __match_parallel for ostreambuf_iterator.
1998-10-27 Nathan Myers <ncm@cantrip.org>
* bits/locfacets.tcc: Make num_put's digit grouping work.
* bits/string.tcc: More uglification.
* src/ios.cc: initialize format cache right
1998-10-26 Nathan Myers <ncm@cantrip.org>
* bits/basic_string.h: Uglify more names.
* bits/fstream.tcc: Rewrite some filebut output handling.
* bits/ios_base.h: Cosmetic.
* bits/locfacets.h: Changes to _Format_cache for support of num_put.
Also, specialize its default ctor for optimal default case.
#ifdef out "long long" prototypes for now.
* bits/locfacets.tcc: Do complete, optimized num_put<>::do_put
implementation for integer types. (Still needs optimized
std::copy() applied to ostreambuf_iterator to be optimal.)
* bits/ostream.tcc: Write operator<< for long, bool types.
Make other operators<< non-members, per spec. (Many still
not implemented.) Identify those that fail to create a sentry.
* bits/sbuf_iter: Cosmetic.
* bits/std_fstream.h: Add some filebuf members.
* bits/std_locale.h: Include <limits> for use in bits/locfacets.h
* bits/std_ostream.h: Make member operators<< global, per spec.
(Should do the same in std_istream.h.)
* bits/std_string.h: Include <limits> for use in bits/locfacets.h
* bits/string.tcc: Uglify names
* shadow/bits/std_cstdlib.h: Optimize std::div and std::ldiv.
* src/ios.cc: Specialize _Format_cache<> for char and wchar_t,
for optimal default behavior.
1998-10-26 Benjamin Kosnik <bkoz@loony.cygnus.com>
* src/Makefile.in (libstdc___la_SOURCES): Add misc-inst.cc again.
1998-10-21 Nathan Myers <ncm@cantrip.org>
* src/locale.cc: make ctype operations actually work for glibc
* CHECKLIST: add a comprehensive (i.e. huge) implementation
checklist of stdlib facilities. Not filled in yet.
1998-10-20 Nathan Myers <ncm@cantrip.org>
* bits/string.tcc: fix patching NULs on string ends.
1998-10-19 Nathan Myers <ncm@cantrip.org>
* bits/std_iosfwd.h: eliminate "basic_" prefix on streambuf
iterator forward declarations
* bits/sbuf_iter.h: eliminate default template argument definitions
on streambuf iterators (rely on <iosfwd> decls).
* TODO: add note about lazy facet construction
* bits/basic_ios.h: hit operator void* again. This should be the
last time we need to touch it.
* bits/basic_ios.h: copyfmt now returns *this.
* bits/basic_string.h: fix npos again. npos cannot be defined as zero.
* bits/basic_string.h: put back overloaded constructors; adjust
behavior for default allocator on copy constructor.
* bits/char_traits.h: make not_eof return correct type.
* bits/loccore.h: remove call to bits/std_stdexcept.h; subincludes
cannot be in non-standard headers or we get include loops (bad)
* bits/loccore.h: delete ifdef'd out workarounds for old compiler bugs.
* bits/loccore.h: add apparatus to support lazy construction of
facets.
* bits/locfacets.tcc: Uglify names in __match_parallel decl.
* bits/std_ios.h: add include of <typeinfo> to get bad_cast for
locale use_facet<> failure.
* bits/std_locale.h: same.
* bits/std_string.h: same.
* bits/std_stdexcept.h: change exception member __msg from a
reference to a regular object.
* bits/string.tcc: add pasting a NUL on the end of strings after
each operation. We had already left room for it, but previously
plugged it only on a call to c_str(), but the WG changed the
requirement when I wasn't looking. (Can't leave them alone for
a second without they break something else.)
* bits/valarray_meta.h: add Gaby's changes from 981018.
* src/locale.cc: add new type _Bad_use_facet to be thrown on
failure of use_facet<>().
* src/stdexcept.cc: remove pragma, remove bkoz's #if 0,
comment out leftover member definitions
1998-10-16 Ulrich Drepper <drepper@cygnus.com>
* string/Makefile.am: Revert last change.
* math/Makefile.am: Likewise.
1998-10-15 Benjamin Kosnik <bkoz@haight.constant.com>
* bits/std_sstream.h: Fix typo.
1998-10-15 Benjamin Kosnik <bkoz@haight.constant.com>
* src/Makefile.am (libstdc___la_SOURCES): Add misc-inst.cc.
* bits/std_sstream.h: Add typedefs, member definitions. Clean.
* bits/std_stdexcept.h: Remove.
1998-10-15 Benjamin Kosnik <bkoz@haight.constant.com>
* src/misc-inst.cc: Tweak again.
* bits/std_sstream.h: Move out-of-line definitions to sstream.tcc.
* bits/sstream.tcc: New file.
1998-10-15 Ulrich Drepper <drepper@cygnus.com>
* configure.in: Test for machine/param.h, sys/machine.h and fp.h.
Don't run AC_C_BIGENDIAN if machine/param.h or sys/machine.h are
available.
* math/mathconf.h: Include sys/machine.h, machine/param.h and fp.h
if available.
(INFINITE_P): Use IS_INF macro if available.
1998-10-15 Ulrich Drepper <drepper@cygnus.com>
* math/Makefile.am (EXTRA_LTLIBRARIES): Renamed from
noinst_LTLIBRARIES.
* string/Makefile.am: Likewise.
1998-10-15 Ulrich Drepper <drepper@cygnus.com>
* configure.in (AC_CHECK_FUNCS): Add finite, qfinite, fpclass, and
qfpclass.
(AC_CHECK_HEADERS): Add machine/endian.h. If no header specifying
endianess is available run AC_C_BIGENDIAN.
* math/clog10l.c: Add ugly hack around bug in Irix 6.2 header until
fixincludes is fixed.
* math/clogl.c: Likewise.
* math/csqrtl.c: Likewise.
* math/mycabsl.c: Likewise.
* math/mathconf.h: Include machine/endian.h if possible. If no
header describing endianess is available rely on WORDS_BIGENDIAN
macro.
(FINITE_P, FINITEF_P, FINITEL_P): Use finite functino if available.
(INFINITE_P, INFINITEF_P, INFINITEL_P): Use fpclass function if
available.
* src/complex.cc (polar): Don't use sincos on OSF machines.
1998-10-09 Benjamin Kosnik <bkoz@loony.cygnus.com>
* src/locale-inst.cc: Don't instantiate time_get for
ostreambuf_iterators as time_get::do_get_weekday and
time_get::do_get_monthname use __match_parallel, which is illegal
for ostreambuf_iterators to use, as they don't have operator== or
operator!=.
* bits/std_stdexcept.h: Add dtor definitions.
Use stl/bits/std_stdexcept.h instead of this file?
* bits/sbuf_iter.h : Tweak.
* src/misc-inst.cc: Tweak.
1998-10-09 Benjamin Kosnik <bkoz@haight.constant.com>
* bits/std_stdexcept.h: New file.
* src/stdexcept.cc: Define the following:
logic_error::what()
runtime_error::what()
* src/misc-inst.cc: New file.
* src/Makefile.in (libstdc___la_SOURCES): Add misc-inst.cc.
(libstdc___la_OBJECTS): Add misc-inst.lo.
* bits/basic_string.h: Disable non-standard ctor declarations.
* bits/string.tcc: Disable definitions as well.
* src/string.cc: Disable <ios> dependencies.
* bits/sbuf_iter.h (std): Add default to template parameter for
ostreambuf_iterator and istreambuf_iterator.
* bits/std_iosfwd.h: Change istreambuf_iterator to
basic_istreambuf_iterator. Likewise for ostreambuf.
* bits/locfacets.tcc (__match_parallel): Fix typo.
* src/ios.cc (imbue): Remove the _G_HAVE_LOCALE guards around
ios_base::imbue.
* bits/std_streambuf.h: Define _Streambuf_base::getloc().
* bits/std_istream.h: Define the following:
get (basic_streambuf<char_type,_Traits>& __sb, char_type __delim)
get (char_type* __s, streamsize __n, char_type __delim);
getline (char_type* __s, streamsize __n, char_type __delim)
* bits/loccore.h : FIXME friend template code for use_facet.
Add std_stdexcept.h include so that range_error will be defined.
Add explicit conversion to string for range_error throws. (HACK?)
1998-10-8 Ulrich Drepper <drepepr@cygnus.com>
* configure.in: Check for sincos, sincosf, and sincosl.
* src/complex.cc (polar): Use sincos if available.
* bits/c++config.h: Fix hack to get LONG_LONG* definitions on Linux.
* stl/bits/std_limits.h: Include bits/c++config.h. HACK!!!
* math/clog10.c: Fix typo (FP_INIFITE_P -> INFINITE_P).
* math/cpow.c: Use c_log, not clog.
* math/cpowf.c: Likewise.
* math/cpowl.c: Likewise.
* math/cexp.c: Remove unused fpclassify calls. Use FINITE_P instead
of isfinite call.
* math/mathconf.h (FINITE_P, FINITEF_P, FINITEL_P): Define using
isfinite macro if it is available.
(INFINITE_P, INFINITEF_P, INFINITEL_P): Define using isinf macro.
* math/ccosf.c: Use appropriate test macros for this type.
* math/ccoshf.c: Likewise.
* math/ccoshl.c: Likewise.
* math/ccosl.c: Likewise.
* math/cexpf.c: Likewise.
* math/cexpl.c: Likewise.
* math/clog10f.c: Likewise.
* math/clog10l.c: Likewise.
* math/clogf.c: Likewise.
* math/clogl.c: Likewise.
* math/csinf.c: Likewise.
* math/csinhf.c: Likewise.
* math/csinhl.c: Likewise.
* math/csinl.c: Likewise.
* math/csqrtf.c: Likewise.
* math/csqrtl.c: Likewise.
* math/ctanf.c: Likewise.
* math/ctanhf.c: Likewise.
* math/ctanhl.c: Likewise.
* math/ctanl.c: Likewise.
1998-10-06 Benjamin Kosnik <bkoz@bliss.nabi.net>
* bits/basic_ios.h: Fix previous change.
1998-10-06 Benjamin Kosnik <bkoz@bliss.nabi.net>
* bits/basic_ios.h: Add const_cast<basic_ios&>
(operator void*): As per 5.2.9 p 2, make sure static_cast is
well-formed.
* bits/char_traits.h: No _CharT for specialization, change to 0.
* bits/basic_string.h: As per 9.4.2 p4, initialize with
constant-initializer.
* bits/locfacets.tcc: Add template parameter to initialization list.
1998-10-02 Benjamin Kosnik <bkoz@loony.cygnus.com>
* bits/basic_string.h: Should just be <, not <=.
1998-10-01 Benjamin Kosnik <bkoz@bliss.nabi.net>
* bits/string.tcc (compare): Fix for strings that are similar, but
not the same length.
1998-09-04 Brendan Kehoe <brendan@cygnus.com>
* bits/c++config.h: For __linux__, define _GNU_SOURCE. This is
required for us to get LONG_LONG_{MIN,MAX} out of gcc's limits.h.
We can't check for __GLIBC__ here, since this header can be read
before any system one (that would lead to features.h) being used.
* stl/bits/stl_config.h (__STL_LONG_LONG): Re-enabled
* stl/bits/std_limits.h [__STL_LONG_LONG]: Fix usage to use
LONG_LONG_MIN, LONG_LONG_MAX, and ULONG_LONG_MAX.
* stl/bits/stl_config.h: Don't do __STL_LONG_LONG, it uses
LONGLONG_{MIN,MAX} which I can't find the origin of.
1998-09-03 Brendan Kehoe <brendan@cygnus.com>
* stl/bits/stl_iterator.h: Add extern decl of cin for now; where
should this come from, if not iostream.h?
(class istream_iterator): Make the new operator!= a friend also.
* stl/bits/stl_config.h: Define __STL_HAS_WCHAR_T,
__STL_MEMBER_TEMPLATE_CLASSES, and __STL_LONG_LONG. Don't include
_G_config.h like the egcs one does.
1998-09-01 Brendan Kehoe <brendan@cygnus.com>
* bits/string.tcc: Call `_M_destroy' instead of `destroy'.
* bits/valarray_meta.h: Throughout, rename _Expr typedefs to be
_Expr1 (or _Expr_def if it's taken), and change definitions.
Avoids redecl of the template parm.
* bits/string.tcc (basic_string copy ctor): Fix typo in declaration.
(operator>>): Initialize __ERROR with ios_base::goodbit, not 0.
* bits/std_streambuf.h (_POSIX_SOURCE): Only define if it's not
already done.
* src/locale-inst.cc: New file, **TOTAL HACK**. There has GOT to
be a better way to do this.
* src/stlinst.cc: New file.
* BUGS: New file, with various discovered bugs that need to be
fixed.
* Makefile.in, math/Makefile.in, string/Makefile.in,
src/Makefile.in: Reran automake.
Workarounds, these may not all be the final fixes:
* bits/basic_ios.h (class basic_ios): Make _M_strbuf be protected,
not private, for basic_istream::get() in std_istream.h to be able
to use it.
(basic_ios::operator void*): Don't use static_cast for the false
case.
(basic_ios::copyfmt): Fix `rhs.except' to be `rhs.exceptions ()'.
This appears to have been in sep94, but didn't get corrected
afterwards.
* bits/basic_string.h (npos): Don't init here.
* bits/string.tcc: Instead, do initialization here, to -1 instead
of the size_type destructor.
* src/traits.cc, src/wtraits.cc: New files.
* bits/char_traits.h: For char_traits<char> and
char_traits<wchar_t>, declare static, but define over in the src
files.
* bits/gslice.h: Comment out forward decls of _Array, valarray,
gslice_array, and _GsliceExpression.
* bits/std_cstdio.h [__sparc__ && __svr4__]: #undef all of
clearerr, feof, ferror, getc, getchar, putc, putchar, stdin,
stdout, and stderr. Note we do get unresolved refs to stdin, but
that'll get fixed by the "true" solution.
* bits/std_ios.h: Include <bits/std_streambuf.h> to get the
definition of basic_streambuf.h, which is used in basic_ios.h to
call pubimbue.
* bits/std_streambuf.h: Don't include libio.h for now.
(class basic_streambuf): Define missing methods pubimbue and
getloc.
* src/Makefile.am (libstdc___la_SOURCES): Add stdexcept.cc,
ios.cc, os_raw.cc, stdstreams.cc, locale.cc, localename.cc,
locale-inst.cc, stlinst.cc, traits.cc, wtraits.cc.
* src/ios.cc: Instantiate basic_ios<char> and basic_ios<wchar_t>.
* src/locale.cc: Come up with munged versions of _S_toupper,
_S_tolower, and _S_table instead of the glibc-specific ones, so
they're at least defined, if not necessarily usable. The glibc
ones on any other system will yield unresolved refs to
__ctype_{b,toupper,tolower}.
* src/string.cc: Define all of ADDCS, ADDPS, et al. Add
basic_ios, basic_istream, basic_ostream. Don't do char_traits
anymore cuz of the explicit specialization in char_traits.h.
Also add _S_string_copy, but this doesn't fix it -- cf the BUGS
file for the details.
* stl/bits/stl_algobase.h (equal): Fix to do `! (x==y)'.
* stl/bits/stl_iterator.h (__distance): Likewise.
* stl/bits/stl_iterator.h: As with 8/18 set, define missing op!=,
op>, op<=, and op>= for reverse_iterator. Also add op!= for
istream_iterator.
1998-08-26 Brendan Kehoe <brendan@cygnus.com>
* bits/string.tcc (basic_string::compare (const char*)): Fix to
return 0, not 1.
1998-08-25 Brendan Kehoe <brendan@cygnus.com>
This should really be fixed with __asm__ directives renaming the
symbol, but keeping the function.
* math/clogf.c (c_logf): Renamed from `clogf'.
* math/clogl.c (c_logl): Renamed from `clogl'.
* math/complex-stub.h (c_logf, c_logl): Change decls.
* bits/locfacets.h (class _Numeric_get): For friend decls, rename
_CharT and _InIter parms, since they duplicate the enclosing ones.
1998-08-19 Brendan Kehoe <brendan@cygnus.com>
Deal with conflict of the iostreams `clog' and our internal
complex number `clog'.
* src/complex.cc: Call `c_log' instead of `clog'.
* math/clog.c (c_log):: Renamed from clog.
* math/complex-stub.h (c_log): Renamed from clog decl.
* bits/locfacets.h (class _Numeric_get): Tweak fwd decls of the
get/put classes.
(num_put::put): #if 0 long long version, since we don't declare or
define the long long version of do_put.
1998-08-18 Nathan Myers <ncm@cantrip.org>
* bits/basic_string.h: add basic_string<>::push_back(), fix return
type of get_allocator (thanks to Ryszard Kabatek).
* bits/char_traits.h: make init order of fpos<> members
match decl order.
* bits/ios_base.h: fix decls of ios_base bitmask & enum types, add
flags _S_fd_in etc. for special filebuf ctor.
* bits/locfacets.h: make _Numeric_get and _Format_cache public
to work around problems in friend declarations.
* bits/locfacets.tcc: qualify _S_get_cache in num_get<>::get(..bool&),
fix random type errors & typos
* bits/std_fstream.h: major refitting to bypass libio (for now),
instrument to use bits/fstream.tcc template definitions
* bits/std_iosfwd.h: mess with wrappers
* bits/std_istream.h: remove meaningless comment
* bits/std_ostream.h: instrument to work with ostream.tcc.
* bits/std_streambuf.h: instrument to work with streambuf.tcc
* bits/fstream.tcc: template defs for <fstream>
* bits/ostream.tcc: template defs for <ostream>
* bits/streambuf.tcc: template defs for <streambuf>
* bits/os_raw.h: thin OS interface wrapper, to bypass libio (for now).
* Delete .cc files, replace with bits/*.tcc
src/fstream.cc
src/istream.cc
src/ostream.cc
src/streambuf.cc
* Add files:
src/os_raw.cc: thin interface to OS, to bypass libio (for now).
src/stdstreams.cc: cout, cin, etc. definitions
(these still need work: must be init'd before user statics.)
1998-08-18 Brendan Kehoe <brendan@cygnus.com>
Sent to SGI before checkin:
* stl/bits/stl_vector.h (operator!=, operator>, operator<=,
operator>=): Define.
* stl/bits/stl_bvector.h (vector<bool>::flip): Define method.
* stl/bits/stl_deque.h (operator!=, operator>, operator<=,
operator>=): Define.
(operator==, operator<): Add inline.
* stl/bits/stl_map.h (operator!=, operator<, operator<=,
operator>=): Define.
* stl/bits/stl_multimap.h (operator!=, operator<, operator<=,
operator>=): Define.
* stl/bits/stl_list.h (operator!=, operator<, operator<=,
operator>=): Define.
* stl/bits/stl_set.h (operator!=, operator<, operator<=,
operator>=): Define.
* stl/bits/stl_multiset.h (operator!=, operator<, operator<=,
operator>=): Define.
* bits/std_valarray.h (_Shift_left, _Shift_right): Inherit from
unary_function.
1998-08-15 Nathan Myers <ncm@cantrip.org>
* bits/ios_base.h: change nominal bitmask and enum types to real enums
* bits/locfacets.h: make _Format_cache bool names usable by num_get
* bits/locfacets.tcc: make num_get<>::get(... bool&) use _Format_cache
* bits/std_fstream.h: minor cleanups: ctors delegate to open()
* bits/std_iosfwd.h: more bitmask changes, for ios_base::iostate
* bits/std_sstream.h: formatting cleanups
1998-08-14 Nathan Myers <ncm@cantrip.org>
* bits/locfacets.tcc: implement num_get<>::do_get(..., bool&)
* bits/locfacets.tcc: implement time_get<>::do_get_weekday
* bits/locfacets.tcc: implement time_get<>::do_get_monthname
* bits/locfacets.h: fix missing argument in do_get_monthname
(this is a bug in the standard, ref. 36 in my list.)
* bits/locfacets.h: make month and day name caches mutable
* bits/locfacets.tcc: various typos in get() functions
* bits/sbuf_iter.h: fix omission in istreambuf_iterator::op++().
* bits/std_streambuf.h: fix typo in sgetn (Brendan)
1998-08-12 Nathan Myers <ncm@cantrip.org>
* move streambuf iterators to bits/sbuf_iter.h
* optimize streambuf iterators
* begin generalizing streambuf
* begin implementing num_get<>::get (starting with bool)
* patch stl/bits/stl_config.h so that relops operators are
contained properly, out of the way.
1998-07-24 Nathan Myers <ncm@cantrip.org>
* Fold in SGI 3.11 changes (uglified names, some algorithm
improvements, very minor bug fixes.)
* Uglify names elsewhere to match (s/_T/_Tp/).
* Begin work on optimized streambuf
* Put complex.cc in namespace std:: (thanks Martin)
1998-07-17 Nathan Myers <ncm@cantrip.org>
* bits/char_traits.h: add _Char_traits_match template.
* bits/string.tcc: fix bugs in various find_last* members.
* bits/basic_string.h: redeclare member _S_find.
* stl/bits/stl_iterator.h: change member names in nonstandard
templates bidirectional_reverse_iterator and
random_access_reverse_iterator to match expected changes
in upstream source.
* src/string.cc: fix definitions of stream operators.
1998-07-14 16:06 Ulrich Drepper <drepper@cygnus.com>
* Makefile.am (SUBDIRS): Add string.
* configure.in: Test for long double functions separately. Test for
ISO C 89 float functions. Test for endian.h and sys/isa_defs.h.
Generate string/Makefile.
* bits/c++config.h: Define mbstate_t for Solaris.
* bits/char_traits.h: Remove unused #if.
* bits/std_cwchar.h: Declare wide char string functions.
* m4/stringfcts.m4: New file.
* math/complex-stub.h: Declare nan.
* math/nan.c: New file.
* math/mathconf.h: Hack around missing endian.h file.
Handle missing NAN definition.
Handle missing float math functions.
* src/Makefile.am (libstdc___la_LIBADD): Add libstring.la.
(libstdc___la_LDFLAGS): Set version information.
* src/complexl.cc: Don't compile any code if no long double functions
are available.
* string/Makefile.am: New file.
* string/dummy.c: New file.
* string/wmemchr.c: New file.
* string/wmemcmp.c: New file.
* string/wmemcpy.c: New file.
* string/wmemmove.c: New file.
* string/wmemset.c: New file.
1998-07-14 10:45 Ulrich Drepper <drepper@cygnus.com>
* configure.in: Make it work.
* install-sh: New file.
* missing: New file.
* mkinstalldirs: New file.
* m4/mathfcts.m4: New file.
* math/Makefile.am: New file.
* bits/std_complex.h (conj): Mark specializations as inline.
* math/carg.c: New file.
* math/cargf.c: New file.
* math/cargl.c: New file.
* math/mycabs.c: New file.
* math/mycabsf.c: New file.
* math/mycabsl.c: New file.
* math/signbit.c: New file.
* math/signbitf.c: New file.
* math/signbitl.c: New file.
* math/ccos.c: Avoid ISO C 9x functionality.
* math/ccosf.c: Likewise.
* math/ccosh.c: Likewise.
* math/ccoshf.c: Likewise.
* math/ccoshl.c: Likewise.
* math/ccosl.c: Likewise.
* math/cexp.c: Likewise.
* math/cexpf.c: Likewise.
* math/cexpl.c: Likewise.
* math/clog.c: Likewise.
* math/clog10.c: Likewise.
* math/clog10f.c: Likewise.
* math/clog10l.c: Likewise.
* math/clogf.c: Likewise.
* math/clogl.c: Likewise.
* math/cpow.c: Likewise.
* math/cpowf.c: Likewise.
* math/cpowl.c: Likewise.
* math/csin.c: Likewise.
* math/csinf.c: Likewise.
* math/csinh.c: Likewise.
* math/csinhf.c: Likewise.
* math/csinhl.c: Likewise.
* math/csinl.c: Likewise.
* math/csqrt.c: Likewise.
* math/csqrtf.c: Likewise.
* math/csqrtl.c: Likewise.
* math/ctan.c: Likewise.
* math/ctanf.c: Likewise.
* math/ctanh.c: Likewise.
* math/ctanhf.c: Likewise.
* math/ctanhl.c: Likewise.
* math/ctanl.c: Likewise.
* math/complex-stub.h: New file.
* math/mathconf.h: New file.
* src/Makefile.am: New file.
* src/complex.cc: Use mathconf.h instead of complex.h.
Don't use cabs, always use __mycabs.
1998-02-13 Brendan Kehoe <brendan@cygnus.com>
* iterator (class reverse_iterator): Do some tweaks to be in sync
w/ the FDIS.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -19,35 +19,39 @@
## You should have received a copy of the GNU General Public License along
## with this library; see the file COPYING. If not, write to the Free
## Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
## Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
## USA.
include $(top_srcdir)/fragment.am
if GLIBCXX_HOSTED
# Possibly libmath as well...
hosted_source = src po
hosted_source = libmath src po testsuite
endif
## Keep this list sync'd with acinclude.m4:GLIBCXX_CONFIGURE.
SUBDIRS = include libmath libsupc++ $(hosted_source) testsuite
SUBDIRS = include libsupc++ $(hosted_source)
ACLOCAL_AMFLAGS = -I . -I .. -I ../config
# These rules are messy, but are hella worth it.
doxygen:
-(srcdir=`cd ${top_srcdir}; ${PWD_COMMAND}`; \
builddir=`${PWD_COMMAND}`; \
${SHELL} ${srcdir}/docs/doxygen/run_doxygen \
--host_alias=${host_alias} \
--mode=user $${srcdir} $${builddir})
doxygen-maint:
-(srcdir=`cd ${top_srcdir}; ${PWD_COMMAND}`; \
builddir=`${PWD_COMMAND}`; \
${SHELL} ${srcdir}/docs/doxygen/run_doxygen \
--host_alias=${host_alias} \
--mode=maint $${srcdir} $${builddir})
doxygen-man:
-(srcdir=`cd ${top_srcdir}; ${PWD_COMMAND}`; \
builddir=`${PWD_COMMAND}`; \
${SHELL} ${srcdir}/docs/doxygen/run_doxygen \
--host_alias=${host_alias} \
--mode=man $${srcdir} $${builddir})
.PHONY: doxygen doxygen-maint doxygen-man
@ -59,38 +63,6 @@ check-%:
# Multilib support.
MAKEOVERRIDES=
# Multilib support variables.
MULTISRCTOP =
MULTIBUILDTOP =
MULTIDIRS =
MULTISUBDIR =
MULTIDO = true
MULTICLEAN = true
# Multilib support.
.PHONY: all-multi mostlyclean-multi clean-multi distclean-multi \
maintainer-clean-multi
all-recursive: all-multi
install-recursive: install-multi
mostlyclean-recursive: mostlyclean-multi
clean-recursive: clean-multi
distclean-recursive: distclean-multi
maintainer-clean-recursive: maintainer-clean-multi
all-multi:
: $(MAKE) ; exec $(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do
install-multi:
$(MULTIDO) $(AM_MAKEFLAGS) DO=install multi-do
mostlyclean-multi:
$(MULTICLEAN) $(AM_MAKEFLAGS) DO=mostlyclean multi-clean
clean-multi:
$(MULTICLEAN) $(AM_MAKEFLAGS) DO=clean multi-clean
distclean-multi:
$(MULTICLEAN) $(AM_MAKEFLAGS) DO=distclean multi-clean
maintainer-clean-multi:
$(MULTICLEAN) $(AM_MAKEFLAGS) DO=maintainer-clean multi-clean
# All the machinations with string instantiations messes up the
# automake-generated TAGS rule. Make a simple one here.
TAGS: tags-recursive $(LISP)
@ -129,8 +101,6 @@ AM_MAKEFLAGS = \
"AR=$(AR)" \
"AS=$(AS)" \
"LD=$(LD)" \
"LIBCFLAGS=$(LIBCFLAGS)" \
"PICFLAG=$(PICFLAG)" \
"RANLIB=$(RANLIB)" \
"NM=$(NM)" \
"NM_FOR_BUILD=$(NM_FOR_BUILD)" \
@ -140,3 +110,9 @@ AM_MAKEFLAGS = \
# Subdir rules rely on $(FLAGS_TO_PASS)
FLAGS_TO_PASS = $(AM_MAKEFLAGS)
# Installation of distribution html documentation not yet supported
# TODO: Write custom install-html rule.
.PHONY: install-html
install-html:

View File

@ -1,8 +1,8 @@
# Makefile.in generated by automake 1.7.8 from Makefile.am.
# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
# Free Software Foundation, Inc.
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@ -13,7 +13,6 @@
# PARTICULAR PURPOSE.
@SET_MAKE@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
@ -21,7 +20,6 @@ pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = .
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
@ -38,6 +36,60 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
target_triplet = @target@
DIST_COMMON = README $(am__configure_deps) $(srcdir)/../config.guess \
$(srcdir)/../config.sub $(srcdir)/../install-sh \
$(srcdir)/../ltmain.sh $(srcdir)/../missing \
$(srcdir)/../mkinstalldirs $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in $(srcdir)/config.h.in \
$(top_srcdir)/configure $(top_srcdir)/fragment.am \
$(top_srcdir)/scripts/testsuite_flags.in ChangeLog
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/../config/enable.m4 \
$(top_srcdir)/../config/lead-dot.m4 \
$(top_srcdir)/../config/multi.m4 \
$(top_srcdir)/../config/no-executables.m4 \
$(top_srcdir)/../config/unwind_ipinfo.m4 \
$(top_srcdir)/../libtool.m4 $(top_srcdir)/crossconfig.m4 \
$(top_srcdir)/linkage.m4 $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/../config/tls.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno configure.status.lineno
CONFIG_HEADER = config.h
CONFIG_CLEAN_FILES = scripts/testsuite_flags
depcomp =
am__depfiles_maybe =
SOURCES =
DIST_SOURCES =
MULTISRCTOP =
MULTIBUILDTOP =
MULTIDIRS =
MULTISUBDIR =
MULTIDO = true
MULTICLEAN = true
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
html-recursive info-recursive install-data-recursive \
install-exec-recursive install-info-recursive \
install-recursive installcheck-recursive installdirs-recursive \
pdf-recursive ps-recursive uninstall-info-recursive \
uninstall-recursive
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = include libsupc++ libmath src po testsuite
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
am__remove_distdir = \
{ test ! -d $(distdir) \
|| { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
&& rm -fr $(distdir); }; }
DIST_ARCHIVES = $(distdir).tar.gz
GZIP_ENV = --best
distuninstallcheck_listfiles = find . -type f -print
distcleancheck_listfiles = find . -type f -print
ABI_TWEAKS_SRCDIR = @ABI_TWEAKS_SRCDIR@
ACLOCAL = @ACLOCAL@
ALLOCATOR_H = @ALLOCATOR_H@
ALLOCATOR_NAME = @ALLOCATOR_NAME@
@ -54,7 +106,6 @@ BASIC_FILE_CC = @BASIC_FILE_CC@
BASIC_FILE_H = @BASIC_FILE_H@
CC = @CC@
CCODECVT_CC = @CCODECVT_CC@
CCODECVT_H = @CCODECVT_H@
CCOLLATE_CC = @CCOLLATE_CC@
CCTYPE_CC = @CCTYPE_CC@
CFLAGS = @CFLAGS@
@ -67,6 +118,7 @@ CMONEY_CC = @CMONEY_CC@
CNUMERIC_CC = @CNUMERIC_CC@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CPU_DEFINES_SRCDIR = @CPU_DEFINES_SRCDIR@
CSTDIO_H = @CSTDIO_H@
CTIME_CC = @CTIME_CC@
CTIME_H = @CTIME_H@
@ -81,14 +133,22 @@ ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLE_SYMVERS_DARWIN_FALSE = @ENABLE_SYMVERS_DARWIN_FALSE@
ENABLE_SYMVERS_DARWIN_TRUE = @ENABLE_SYMVERS_DARWIN_TRUE@
ENABLE_SYMVERS_FALSE = @ENABLE_SYMVERS_FALSE@
ENABLE_SYMVERS_GNU_FALSE = @ENABLE_SYMVERS_GNU_FALSE@
ENABLE_SYMVERS_GNU_NAMESPACE_FALSE = @ENABLE_SYMVERS_GNU_NAMESPACE_FALSE@
ENABLE_SYMVERS_GNU_NAMESPACE_TRUE = @ENABLE_SYMVERS_GNU_NAMESPACE_TRUE@
ENABLE_SYMVERS_GNU_TRUE = @ENABLE_SYMVERS_GNU_TRUE@
ENABLE_SYMVERS_TRUE = @ENABLE_SYMVERS_TRUE@
ENABLE_VISIBILITY_FALSE = @ENABLE_VISIBILITY_FALSE@
ENABLE_VISIBILITY_TRUE = @ENABLE_VISIBILITY_TRUE@
EXEEXT = @EXEEXT@
EXTRA_CXX_FLAGS = @EXTRA_CXX_FLAGS@
GLIBCXX_BUILD_DEBUG_FALSE = @GLIBCXX_BUILD_DEBUG_FALSE@
GLIBCXX_BUILD_DEBUG_TRUE = @GLIBCXX_BUILD_DEBUG_TRUE@
GLIBCXX_BUILD_PCH_FALSE = @GLIBCXX_BUILD_PCH_FALSE@
GLIBCXX_BUILD_PCH_TRUE = @GLIBCXX_BUILD_PCH_TRUE@
GLIBCXX_BUILD_VERSIONED_SHLIB_FALSE = @GLIBCXX_BUILD_VERSIONED_SHLIB_FALSE@
GLIBCXX_BUILD_VERSIONED_SHLIB_TRUE = @GLIBCXX_BUILD_VERSIONED_SHLIB_TRUE@
GLIBCXX_C_HEADERS_COMPATIBILITY_FALSE = @GLIBCXX_C_HEADERS_COMPATIBILITY_FALSE@
GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE = @GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE@
GLIBCXX_C_HEADERS_C_FALSE = @GLIBCXX_C_HEADERS_C_FALSE@
@ -98,14 +158,13 @@ GLIBCXX_C_HEADERS_C_TRUE = @GLIBCXX_C_HEADERS_C_TRUE@
GLIBCXX_HOSTED_FALSE = @GLIBCXX_HOSTED_FALSE@
GLIBCXX_HOSTED_TRUE = @GLIBCXX_HOSTED_TRUE@
GLIBCXX_INCLUDES = @GLIBCXX_INCLUDES@
GLIBCXX_TEST_ABI_FALSE = @GLIBCXX_TEST_ABI_FALSE@
GLIBCXX_TEST_ABI_TRUE = @GLIBCXX_TEST_ABI_TRUE@
GLIBCXX_TEST_WCHAR_T_FALSE = @GLIBCXX_TEST_WCHAR_T_FALSE@
GLIBCXX_TEST_WCHAR_T_TRUE = @GLIBCXX_TEST_WCHAR_T_TRUE@
GLIBCXX_LDBL_COMPAT_FALSE = @GLIBCXX_LDBL_COMPAT_FALSE@
GLIBCXX_LDBL_COMPAT_TRUE = @GLIBCXX_LDBL_COMPAT_TRUE@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LIBICONV = @LIBICONV@
LIBMATHOBJS = @LIBMATHOBJS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
@ -134,7 +193,7 @@ SECTION_LDFLAGS = @SECTION_LDFLAGS@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
SYMVER_MAP = @SYMVER_MAP@
SYMVER_FILE = @SYMVER_FILE@
TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
@ -147,6 +206,8 @@ ac_ct_CXX = @ac_ct_CXX@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__leading_dot = @am__leading_dot@
am__tar = @am__tar@
am__untar = @am__untar@
baseline_dir = @baseline_dir@
bindir = @bindir@
build = @build@
@ -183,6 +244,7 @@ libexecdir = @libexecdir@
libtool_VERSION = @libtool_VERSION@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
multi_basedir = @multi_basedir@
oldincludedir = @oldincludedir@
port_specific_symbol_files = @port_specific_symbol_files@
@ -198,12 +260,12 @@ target_os = @target_os@
target_vendor = @target_vendor@
toplevel_srcdir = @toplevel_srcdir@
# May be used by various substitution variables.
gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
MAINT_CHARSET = latin1
mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs
PWD_COMMAND = $${PWDCMD-pwd}
STAMP = echo timestamp >
toolexecdir = $(glibcxx_toolexecdir)
toolexeclibdir = $(glibcxx_toolexeclibdir)
@ -218,20 +280,13 @@ WARN_CXXFLAGS = \
# -I/-D flags to pass when compiling.
AM_CPPFLAGS = $(GLIBCXX_INCLUDES)
@GLIBCXX_HOSTED_TRUE@hosted_source = src po
SUBDIRS = include libmath libsupc++ $(hosted_source) testsuite
@GLIBCXX_HOSTED_TRUE@hosted_source = libmath src po testsuite
SUBDIRS = include libsupc++ $(hosted_source)
ACLOCAL_AMFLAGS = -I . -I .. -I ../config
# Multilib support.
MAKEOVERRIDES =
# Multilib support variables.
MULTISRCTOP =
MULTIBUILDTOP =
MULTIDIRS =
MULTISUBDIR =
MULTIDO = true
MULTICLEAN = true
# Work around what appears to be a GNU make bug handling MAKEFLAGS
# values defined in terms of make variables, as is the case for CC and
# friends when we are called from the top level Makefile.
@ -266,8 +321,6 @@ AM_MAKEFLAGS = \
"AR=$(AR)" \
"AS=$(AS)" \
"LD=$(LD)" \
"LIBCFLAGS=$(LIBCFLAGS)" \
"PICFLAG=$(PICFLAG)" \
"RANLIB=$(RANLIB)" \
"NM=$(NM)" \
"NM_FOR_BUILD=$(NM_FOR_BUILD)" \
@ -278,47 +331,42 @@ AM_MAKEFLAGS = \
# Subdir rules rely on $(FLAGS_TO_PASS)
FLAGS_TO_PASS = $(AM_MAKEFLAGS)
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
CONFIG_HEADER = config.h
CONFIG_CLEAN_FILES = scripts/check_survey scripts/testsuite_flags
depcomp =
am__depfiles_maybe =
DIST_SOURCES =
RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
ps-recursive install-info-recursive uninstall-info-recursive \
all-recursive install-data-recursive install-exec-recursive \
installdirs-recursive install-recursive uninstall-recursive \
check-recursive installcheck-recursive
DIST_COMMON = README $(srcdir)/Makefile.in $(srcdir)/configure \
$(top_srcdir)/fragment.am ../ABOUT-NLS ../COPYING \
../COPYING.LIB ../ChangeLog ../README ../config.guess \
../config.rpath ../config.sub ../configure ../configure.in \
../install-sh ../ltcf-c.sh ../ltcf-cxx.sh ../ltcf-gcj.sh \
../ltconfig ../ltmain.sh ../missing ../mkinstalldirs ../ylwrap \
ChangeLog Makefile.am acconfig.h acinclude.m4 aclocal.m4 \
config.h.in configure configure.ac
DIST_SUBDIRS = include libmath libsupc++ src po testsuite
all: config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
.SUFFIXES:
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/fragment.am $(top_srcdir)/configure.ac $(ACLOCAL_M4)
am--refresh:
@:
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/fragment.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
echo ' cd $(srcdir) && $(AUTOMAKE) --foreign --ignore-deps'; \
cd $(srcdir) && $(AUTOMAKE) --foreign --ignore-deps \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign --ignore-deps Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --foreign Makefile
Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)
$(AUTOMAKE) --foreign --ignore-deps Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
echo ' $(SHELL) ./config.status'; \
$(SHELL) ./config.status;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
$(srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(srcdir)/configure.ac $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
cd $(srcdir) && $(AUTOCONF)
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.ac acinclude.m4
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(srcdir) && $(AUTOCONF)
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
config.h: stamp-h1
@ -330,15 +378,13 @@ config.h: stamp-h1
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
@rm -f stamp-h1
cd $(top_builddir) && $(SHELL) ./config.status config.h
$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(top_srcdir)/configure.ac $(ACLOCAL_M4) $(top_srcdir)/acconfig.h
$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_srcdir) && $(AUTOHEADER)
touch $(srcdir)/config.h.in
rm -f stamp-h1
touch $@
distclean-hdr:
-rm -f config.h stamp-h1
scripts/check_survey: $(top_builddir)/config.status $(top_srcdir)/scripts/check_survey.in
cd $(top_builddir) && $(SHELL) ./config.status $@
scripts/testsuite_flags: $(top_builddir)/config.status $(top_srcdir)/scripts/testsuite_flags.in
cd $(top_builddir) && $(SHELL) ./config.status $@
@ -350,6 +396,23 @@ clean-libtool:
distclean-libtool:
-rm -f libtool
# GNU Make needs to see an explicit $(MAKE) variable in the command it
# runs to enable its job server during parallel builds. Hence the
# comments below.
all-multi:
$(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do # $(MAKE)
install-multi:
$(MULTIDO) $(AM_MAKEFLAGS) DO=install multi-do # $(MAKE)
mostlyclean-multi:
$(MULTICLEAN) $(AM_MAKEFLAGS) DO=mostlyclean multi-clean # $(MAKE)
clean-multi:
$(MULTICLEAN) $(AM_MAKEFLAGS) DO=clean multi-clean # $(MAKE)
distclean-multi:
$(MULTICLEAN) $(AM_MAKEFLAGS) DO=distclean multi-clean # $(MAKE)
maintainer-clean-multi:
$(MULTICLEAN) $(AM_MAKEFLAGS) DO=maintainer-clean multi-clean # $(MAKE)
uninstall-info-am:
# This directory's subdirectories are mostly independent; you can cd
@ -359,7 +422,13 @@ uninstall-info-am:
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@set fnord $$MAKEFLAGS; amf=$$2; \
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
@ -371,7 +440,7 @@ $(RECURSIVE_TARGETS):
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
|| eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
@ -379,7 +448,13 @@ $(RECURSIVE_TARGETS):
mostlyclean-recursive clean-recursive distclean-recursive \
maintainer-clean-recursive:
@set fnord $$MAKEFLAGS; amf=$$2; \
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
@ -400,7 +475,7 @@ maintainer-clean-recursive:
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
|| eval $$failcom; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
@ -411,14 +486,6 @@ ctags-recursive:
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
done
ETAGS = etags
ETAGSFLAGS =
CTAGS = ctags
CTAGSFLAGS =
tags: TAGS
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
@ -427,7 +494,7 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
tags: TAGS
ctags: CTAGS
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
@ -450,24 +517,11 @@ GTAGS:
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
top_distdir = .
distdir = $(PACKAGE)-$(VERSION)
am__remove_distdir = \
{ test ! -d $(distdir) \
|| { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
&& rm -fr $(distdir); }; }
GZIP_ENV = --best
distuninstallcheck_listfiles = find . -type f -print
distcleancheck_listfiles = find . -type f -print
distdir: $(DISTFILES)
$(am__remove_distdir)
mkdir $(distdir)
$(mkinstalldirs) $(distdir)/.. $(distdir)/scripts
$(mkdir_p) $(distdir)/.. $(distdir)/../config $(distdir)/scripts
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
@ -479,7 +533,7 @@ distdir: $(DISTFILES)
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
$(mkinstalldirs) "$(distdir)$$dir"; \
$(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
@ -496,13 +550,15 @@ distdir: $(DISTFILES)
done
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -d $(distdir)/$$subdir \
|| mkdir $(distdir)/$$subdir \
test -d "$(distdir)/$$subdir" \
|| $(mkdir_p) "$(distdir)/$$subdir" \
|| exit 1; \
distdir=`$(am__cd) $(distdir) && pwd`; \
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
(cd $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$(top_distdir)" \
distdir=../$(distdir)/$$subdir \
top_distdir="$$top_distdir" \
distdir="$$distdir/$$subdir" \
distdir) \
|| exit 1; \
fi; \
@ -513,19 +569,46 @@ distdir: $(DISTFILES)
! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
|| chmod -R a+r $(distdir)
dist-gzip: distdir
$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
dist-bzip2: distdir
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
$(am__remove_distdir)
dist-tarZ: distdir
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
$(am__remove_distdir)
dist-shar: distdir
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
$(am__remove_distdir)
dist-zip: distdir
-rm -f $(distdir).zip
zip -rq $(distdir).zip $(distdir)
$(am__remove_distdir)
dist dist-all: distdir
$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
distcheck: dist
$(am__remove_distdir)
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf -
case '$(DIST_ARCHIVES)' in \
*.tar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.Z*) \
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
*.shar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
esac
chmod -R a-w $(distdir); chmod a+w $(distdir)
mkdir $(distdir)/_build
mkdir $(distdir)/_inst
@ -545,19 +628,20 @@ distcheck: dist
distuninstallcheck \
&& chmod -R a-w "$$dc_install_base" \
&& ({ \
(cd ../.. && $(mkinstalldirs) "$$dc_destdir") \
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
} || { rm -rf "$$dc_destdir"; exit 1; }) \
&& rm -rf "$$dc_destdir" \
&& $(MAKE) $(AM_MAKEFLAGS) dist-gzip \
&& rm -f $(distdir).tar.gz \
&& $(MAKE) $(AM_MAKEFLAGS) dist \
&& rm -rf $(DIST_ARCHIVES) \
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck
$(am__remove_distdir)
@echo "$(distdir).tar.gz is ready for distribution" | \
sed 'h;s/./=/g;p;x;p;x'
@(echo "$(distdir) archives ready for distribution: "; \
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
distuninstallcheck:
@cd $(distuninstallcheck_dir) \
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
@ -581,7 +665,6 @@ check: check-recursive
all-am: Makefile all-multi config.h
installdirs: installdirs-recursive
installdirs-am:
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
@ -593,7 +676,7 @@ install-am: all-am
installcheck: installcheck-recursive
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
INSTALL_STRIP_FLAG=-s \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
@ -601,7 +684,7 @@ mostlyclean-generic:
clean-generic:
distclean-generic:
-rm -f $(CONFIG_CLEAN_FILES)
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@ -613,13 +696,15 @@ clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-multi distclean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-hdr distclean-libtool \
distclean-tags
distclean-am: clean-am distclean-generic distclean-hdr \
distclean-libtool distclean-tags
dvi: dvi-recursive
dvi-am:
html: html-recursive
info: info-recursive
info-am:
@ -656,45 +741,44 @@ uninstall-am: uninstall-info-am
uninstall-info: uninstall-info-recursive
.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am all-multi check \
check-am clean clean-generic clean-libtool clean-multi \
clean-recursive ctags ctags-recursive dist dist-all dist-gzip \
.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am all-multi \
am--refresh check check-am clean clean-generic clean-libtool \
clean-multi clean-recursive ctags ctags-recursive dist \
dist-all dist-bzip2 dist-gzip dist-shar dist-tarZ dist-zip \
distcheck distclean distclean-generic distclean-hdr \
distclean-libtool distclean-multi distclean-recursive \
distclean-tags distcleancheck distdir distuninstallcheck dvi \
dvi-am dvi-recursive info info-am info-recursive install \
install-am install-data install-data-am install-data-recursive \
install-exec install-exec-am install-exec-recursive \
install-info install-info-am install-info-recursive install-man \
install-multi install-recursive install-strip installcheck \
installcheck-am installdirs installdirs-am \
installdirs-recursive maintainer-clean maintainer-clean-generic \
dvi-am html html-am info info-am install install-am \
install-data install-data-am install-exec install-exec-am \
install-info install-info-am install-man install-multi \
install-strip installcheck installcheck-am installdirs \
installdirs-am maintainer-clean maintainer-clean-generic \
maintainer-clean-multi maintainer-clean-recursive mostlyclean \
mostlyclean-generic mostlyclean-libtool mostlyclean-multi \
mostlyclean-recursive pdf pdf-am pdf-recursive ps ps-am \
ps-recursive tags tags-recursive uninstall uninstall-am \
uninstall-info-am uninstall-info-recursive uninstall-recursive
mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
uninstall uninstall-am uninstall-info-am
@GLIBCXX_HOSTED_TRUE@ # Possibly libmath as well...
# These rules are messy, but are hella worth it.
doxygen:
-(srcdir=`cd ${top_srcdir}; ${PWD_COMMAND}`; \
builddir=`${PWD_COMMAND}`; \
${SHELL} ${srcdir}/docs/doxygen/run_doxygen \
--host_alias=${host_alias} \
--mode=user $${srcdir} $${builddir})
doxygen-maint:
-(srcdir=`cd ${top_srcdir}; ${PWD_COMMAND}`; \
builddir=`${PWD_COMMAND}`; \
${SHELL} ${srcdir}/docs/doxygen/run_doxygen \
--host_alias=${host_alias} \
--mode=maint $${srcdir} $${builddir})
doxygen-man:
-(srcdir=`cd ${top_srcdir}; ${PWD_COMMAND}`; \
builddir=`${PWD_COMMAND}`; \
${SHELL} ${srcdir}/docs/doxygen/run_doxygen \
--host_alias=${host_alias} \
--mode=man $${srcdir} $${builddir})
.PHONY: doxygen doxygen-maint doxygen-man
@ -703,33 +787,14 @@ doxygen-man:
check-%:
cd testsuite && $(MAKE) $@
# Multilib support.
.PHONY: all-multi mostlyclean-multi clean-multi distclean-multi \
maintainer-clean-multi
all-recursive: all-multi
install-recursive: install-multi
mostlyclean-recursive: mostlyclean-multi
clean-recursive: clean-multi
distclean-recursive: distclean-multi
maintainer-clean-recursive: maintainer-clean-multi
all-multi:
: $(MAKE) ; exec $(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do
install-multi:
$(MULTIDO) $(AM_MAKEFLAGS) DO=install multi-do
mostlyclean-multi:
$(MULTICLEAN) $(AM_MAKEFLAGS) DO=mostlyclean multi-clean
clean-multi:
$(MULTICLEAN) $(AM_MAKEFLAGS) DO=clean multi-clean
distclean-multi:
$(MULTICLEAN) $(AM_MAKEFLAGS) DO=distclean multi-clean
maintainer-clean-multi:
$(MULTICLEAN) $(AM_MAKEFLAGS) DO=maintainer-clean multi-clean
# All the machinations with string instantiations messes up the
# automake-generated TAGS rule. Make a simple one here.
TAGS: tags-recursive $(LISP)
# Installation of distribution html documentation not yet supported
# TODO: Write custom install-html rule.
.PHONY: install-html
install-html:
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,219 @@
// Compatibility symbols for previous versions -*- C++ -*-
// Copyright (C) 2005, 2006
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/** @file compatibility.h
* This is an internal header file, included by other library sources.
* You should not attempt to use it directly.
*/
// Switch for symbol version macro.
#ifndef _GLIBCXX_APPLY_SYMVER
#error must define _GLIBCXX_APPLY_SYMVER before including __FILE__
#endif
/* gcc-3.4.4
_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv
_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv
*/
namespace
{
_GLIBCXX_APPLY_SYMVER(_ZNSt21istreambuf_iteratorXXIcSt11char_traitsIcEEppEv,
_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv)
#ifdef _GLIBCXX_USE_WCHAR_T
_GLIBCXX_APPLY_SYMVER(_ZNSt21istreambuf_iteratorXXIwSt11char_traitsIwEEppEv,
_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv)
#endif
} // anonymous namespace
/* gcc-4.0.0
_ZNSs4_Rep26_M_set_length_and_sharableEj
_ZNSs7_M_copyEPcPKcj
_ZNSs7_M_moveEPcPKcj
_ZNSs9_M_assignEPcjc
_ZNKSs11_M_disjunctEPKc
_ZNKSs15_M_check_lengthEjjPKc
_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj
_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj
_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj
_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw
_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw
_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc
_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv
_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv
_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv
_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv
_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv
_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv
_ZNSi6ignoreEi
_ZNSi6ignoreEv
_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi
_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv
_ZNSt11char_traitsIcE2eqERKcS2_
_ZNSt11char_traitsIwE2eqERKwS2_
*/
namespace
{
_GLIBCXX_APPLY_SYMVER(_ZNSt11char_traitsIcE4eqXXERKcS2_,
_ZNSt11char_traitsIcE2eqERKcS2_)
#ifdef _GLIBCXX_SIZE_T_IS_UINT
_GLIBCXX_APPLY_SYMVER(_ZNSs9_M_copyXXEPcPKcj,
_ZNSs7_M_copyEPcPKcj)
#else
_GLIBCXX_APPLY_SYMVER(_ZNSs9_M_copyXXEPcPKcm,
_ZNSs7_M_copyEPcPKcm)
#endif
#ifdef _GLIBCXX_SIZE_T_IS_UINT
_GLIBCXX_APPLY_SYMVER(_ZNSs9_M_moveXXEPcPKcj,
_ZNSs7_M_moveEPcPKcj)
#else
_GLIBCXX_APPLY_SYMVER(_ZNSs9_M_moveXXEPcPKcm,
_ZNSs7_M_moveEPcPKcm)
#endif
#ifdef _GLIBCXX_SIZE_T_IS_UINT
_GLIBCXX_APPLY_SYMVER(_ZNSs11_M_assignXXEPcjc,
_ZNSs9_M_assignEPcjc)
#else
_GLIBCXX_APPLY_SYMVER(_ZNSs11_M_assignXXEPcmc,
_ZNSs9_M_assignEPcmc)
#endif
_GLIBCXX_APPLY_SYMVER(_ZNKSs13_M_disjunctXXEPKc,
_ZNKSs11_M_disjunctEPKc)
#ifdef _GLIBCXX_SIZE_T_IS_UINT
_GLIBCXX_APPLY_SYMVER(_ZNKSs17_M_check_lengthXXEjjPKc,
_ZNKSs15_M_check_lengthEjjPKc)
#else
_GLIBCXX_APPLY_SYMVER(_ZNKSs17_M_check_lengthXXEmmPKc,
_ZNKSs15_M_check_lengthEmmPKc)
#endif
#ifdef _GLIBCXX_SIZE_T_IS_UINT
_GLIBCXX_APPLY_SYMVER(_ZNSs4_Rep28_M_set_length_and_sharableXXEj,
_ZNSs4_Rep26_M_set_length_and_sharableEj)
#else
_GLIBCXX_APPLY_SYMVER(_ZNSs4_Rep28_M_set_length_and_sharableXXEm,
_ZNSs4_Rep26_M_set_length_and_sharableEm)
#endif
_GLIBCXX_APPLY_SYMVER(_ZNSi8ignoreXXEv, _ZNSi6ignoreEv)
#ifdef _GLIBCXX_PTRDIFF_T_IS_INT
_GLIBCXX_APPLY_SYMVER(_ZNSi8ignoreXXEi, _ZNSi6ignoreEi)
#else
_GLIBCXX_APPLY_SYMVER(_ZNSi8ignoreXXEl, _ZNSi6ignoreEl)
#endif
_GLIBCXX_APPLY_SYMVER(_ZNKSt15basic_fstreamXXIcSt11char_traitsIcEE7is_openEv,
_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv)
_GLIBCXX_APPLY_SYMVER(_ZNKSt16basic_ifstreamXXIcSt11char_traitsIcEE7is_openEv,
_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv)
_GLIBCXX_APPLY_SYMVER(_ZNKSt16basic_ofstreamXXIcSt11char_traitsIcEE7is_openEv,
_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv)
// Support for wchar_t.
#ifdef _GLIBCXX_USE_WCHAR_T
_GLIBCXX_APPLY_SYMVER(_ZNSt11char_traitsIwE4eqXXERKwS2_,
_ZNSt11char_traitsIwE2eqERKwS2_)
#ifdef _GLIBCXX_SIZE_T_IS_UINT
_GLIBCXX_APPLY_SYMVER(_ZNSbIwSt11char_traitsIwESaIwEE9_M_copyXXEPwPKwj,
_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj)
#else
_GLIBCXX_APPLY_SYMVER(_ZNSbIwSt11char_traitsIwESaIwEE9_M_copyXXEPwPKwm,
_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm)
#endif
#ifdef _GLIBCXX_SIZE_T_IS_UINT
_GLIBCXX_APPLY_SYMVER(_ZNSbIwSt11char_traitsIwESaIwEE9_M_moveXXEPwPKwj,
_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj)
#else
_GLIBCXX_APPLY_SYMVER(_ZNSbIwSt11char_traitsIwESaIwEE9_M_moveXXEPwPKwm,
_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm)
#endif
#ifdef _GLIBCXX_SIZE_T_IS_UINT
_GLIBCXX_APPLY_SYMVER(_ZNSbIwSt11char_traitsIwESaIwEE11_M_assignXXEPwjw,
_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw)
#else
_GLIBCXX_APPLY_SYMVER(_ZNSbIwSt11char_traitsIwESaIwEE11_M_assignXXEPwmw,
_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw)
#endif
_GLIBCXX_APPLY_SYMVER(_ZNKSbIwSt11char_traitsIwESaIwEE13_M_disjunctXXEPKw,
_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw)
#ifdef _GLIBCXX_SIZE_T_IS_UINT
_GLIBCXX_APPLY_SYMVER(_ZNKSbIwSt11char_traitsIwESaIwEE17_M_check_lengthXXEjjPKc,
_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc)
#else
_GLIBCXX_APPLY_SYMVER(_ZNKSbIwSt11char_traitsIwESaIwEE17_M_check_lengthXXEmmPKc,
_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc)
#endif
#ifdef _GLIBCXX_SIZE_T_IS_UINT
_GLIBCXX_APPLY_SYMVER(_ZNSbIwSt11char_traitsIwESaIwEE4_Rep28_M_set_length_and_sharableXXEj,
_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj)
#else
_GLIBCXX_APPLY_SYMVER(_ZNSbIwSt11char_traitsIwESaIwEE4_Rep28_M_set_length_and_sharableXXEm,
_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm)
#endif
_GLIBCXX_APPLY_SYMVER(_ZNSt13basic_istreamIwSt11char_traitsIwEE8ignoreXXEv,
_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv)
#ifdef _GLIBCXX_PTRDIFF_T_IS_INT
_GLIBCXX_APPLY_SYMVER(_ZNSt13basic_istreamIwSt11char_traitsIwEE8ignoreXXEi,
_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi)
#else
_GLIBCXX_APPLY_SYMVER(_ZNSt13basic_istreamIwSt11char_traitsIwEE8ignoreXXEl,
_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEl)
#endif
_GLIBCXX_APPLY_SYMVER(_ZNKSt15basic_fstreamXXIwSt11char_traitsIwEE7is_openEv,
_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv)
_GLIBCXX_APPLY_SYMVER(_ZNKSt16basic_ifstreamXXIwSt11char_traitsIwEE7is_openEv,
_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv)
_GLIBCXX_APPLY_SYMVER(_ZNKSt16basic_ofstreamXXIwSt11char_traitsIwEE7is_openEv,
_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv)
#endif
} // anonymous namespace

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,202 @@
## Linker script for GNU namespace versioning.
##
## Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
##
## This file is part of the libstdc++ version 3 distribution.
##
## This file is part of the GNU ISO C++ Library. This library is free
## software; you can redistribute it and/or modify it under the
## terms of the GNU General Public License as published by the
## Free Software Foundation; either version 2, or (at your option)
## any later version.
##
## This library is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License along
## with this library; see the file COPYING. If not, write to the Free
## Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
## USA.
GLIBCXX_3.7 {
global:
# Names inside the 'extern' block are demangled names.
extern "C++"
{
std::_6::*;
std::*
};
# 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[](size_t)
_Zna[jm];
# operator new[](size_t, std::nothrow_t const&)
_Zna[jm]RKSt9nothrow_t;
# operator delete[](void*)
_ZdaPv;
# operator delete[](void*, std::nothrow_t const&)
_ZdaPvRKSt9nothrow_t;
# function-scope static objects requires a guard variable.
_ZGVNSt*;
_ZTT*;
_ZTV*;
_ZTI*;
_ZTS*;
_ZTv0_n*;
# std::__convert_to_v
_ZNSt2_614__convert_to_v*;
# std::__copy_streambufs
_ZNSt2_617__copy_streambufsI[cw]NS_11char_traitsI[cw]EEEEiPNS_15basic_streambufIT_T0_EES7_;
# __gnu_cxx::__atomic_add
# __gnu_cxx::__exchange_and_add
_ZN9__gnu_cxx2_612__atomic_addEPV[il][il];
_ZN9__gnu_cxx2_618__exchange_and_addEPV[li][il];
# __gnu_cxx::__pool
_ZN9__gnu_cxx2_66__poolILb[01]EE13_M_initializeEv;
_ZN9__gnu_cxx2_66__poolILb[01]EE16_M_reserve_blockE[jm][jm];
_ZN9__gnu_cxx2_66__poolILb[01]EE16_M_reclaim_blockEPc[jm];
_ZN9__gnu_cxx2_66__poolILb[01]EE10_M_destroyEv;
_ZN9__gnu_cxx2_66__poolILb1EE16_M_get_thread_idEv;
_ZN9__gnu_cxx2_617__pool_alloc_base9_M_refillE[jm];
_ZN9__gnu_cxx2_617__pool_alloc_base16_M_get_free_listE[jm];
_ZN9__gnu_cxx2_617__pool_alloc_base12_M_get_mutexEv;
_ZN9__gnu_cxx2_69free_list6_M_getE[jm];
_ZN9__gnu_cxx2_69free_list8_M_clearEv;
local:
*;
};
# Symbols in the support library (libsupc++) have their own tag.
CXXABI_1.7 {
global:
__cxa_allocate_exception;
__cxa_bad_cast;
__cxa_bad_typeid;
__cxa_begin_catch;
__cxa_begin_cleanup;
__cxa_call_unexpected;
__cxa_current_exception_type;
__cxa_demangle;
__cxa_end_catch;
__cxa_end_cleanup;
__cxa_free_exception;
__cxa_get_exception_ptr;
__cxa_get_globals;
__cxa_get_globals_fast;
__cxa_guard_abort;
__cxa_guard_acquire;
__cxa_guard_release;
__cxa_pure_virtual;
__cxa_rethrow;
__cxa_throw;
__cxa_type_match;
__cxa_vec_cctor;
__cxa_vec_cleanup;
__cxa_vec_ctor;
__cxa_vec_delete2;
__cxa_vec_delete3;
__cxa_vec_delete;
__cxa_vec_dtor;
__cxa_vec_new2;
__cxa_vec_new3;
__cxa_vec_new;
__gxx_personality_v0;
__gxx_personality_sj0;
__dynamic_cast;
# *_type_info classes, ctor and dtor
_ZN10__cxxabiv117__array_type_info*;
_ZN10__cxxabiv117__class_type_info*;
_ZN10__cxxabiv116__enum_type_info*;
_ZN10__cxxabiv120__function_type_info*;
_ZN10__cxxabiv123__fundamental_type_info*;
_ZN10__cxxabiv117__pbase_type_info*;
_ZN10__cxxabiv129__pointer_to_member_type_info*;
_ZN10__cxxabiv119__pointer_type_info*;
_ZN10__cxxabiv120__si_class_type_info*;
_ZN10__cxxabiv121__vmi_class_type_info*;
# *_type_info classes, member functions
_ZNK10__cxxabiv117__class_type_info*;
_ZNK10__cxxabiv120__function_type_info*;
_ZNK10__cxxabiv117__pbase_type_info*;
_ZNK10__cxxabiv129__pointer_to_member_type_info*;
_ZNK10__cxxabiv119__pointer_type_info*;
_ZNK10__cxxabiv120__si_class_type_info*;
_ZNK10__cxxabiv121__vmi_class_type_info*;
# virtual table
_ZTVN10__cxxabiv117__array_type_infoE;
_ZTVN10__cxxabiv117__class_type_infoE;
_ZTVN10__cxxabiv116__enum_type_infoE;
_ZTVN10__cxxabiv120__function_type_infoE;
_ZTVN10__cxxabiv123__fundamental_type_infoE;
_ZTVN10__cxxabiv117__pbase_type_infoE;
_ZTVN10__cxxabiv129__pointer_to_member_type_infoE;
_ZTVN10__cxxabiv119__pointer_type_infoE;
_ZTVN10__cxxabiv120__si_class_type_infoE;
_ZTVN10__cxxabiv121__vmi_class_type_infoE;
# typeinfo structure (and some names)
_ZTI[a-z];
_ZTIP[a-z];
_ZTIPK[a-z];
_ZTIN10__cxxabiv117__array_type_infoE;
_ZTIN10__cxxabiv117__class_type_infoE;
_ZTIN10__cxxabiv116__enum_type_infoE;
_ZTIN10__cxxabiv120__function_type_infoE;
_ZTIN10__cxxabiv123__fundamental_type_infoE;
_ZTIN10__cxxabiv117__pbase_type_infoE;
_ZTIN10__cxxabiv129__pointer_to_member_type_infoE;
_ZTIN10__cxxabiv119__pointer_type_infoE;
_ZTIN10__cxxabiv120__si_class_type_infoE;
_ZTIN10__cxxabiv121__vmi_class_type_infoE;
# typeinfo name
_ZTS[a-z];
_ZTSP[a-z];
_ZTSPK[a-z];
_ZTSN10__cxxabiv117__array_type_infoE;
_ZTSN10__cxxabiv117__class_type_infoE;
_ZTSN10__cxxabiv116__enum_type_infoE;
_ZTSN10__cxxabiv120__function_type_infoE;
_ZTSN10__cxxabiv123__fundamental_type_infoE;
_ZTSN10__cxxabiv117__pbase_type_infoE;
_ZTSN10__cxxabiv129__pointer_to_member_type_infoE;
_ZTSN10__cxxabiv119__pointer_type_infoE;
_ZTSN10__cxxabiv120__si_class_type_infoE;
_ZTSN10__cxxabiv121__vmi_class_type_infoE;
# __gnu_cxx::_verbose_terminate_handler()
_ZN9__gnu_cxx2_627__verbose_terminate_handlerEv;
local:
*;
};

View File

@ -0,0 +1,806 @@
## Linker script for GNU versioning (GNU ld 2.13.91+ only.)
##
## Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007
## Free Software Foundation, Inc.
##
## This file is part of the GNU ISO C++ Library. This library is free
## software; you can redistribute it and/or modify it under the
## terms of the GNU General Public License as published by the
## Free Software Foundation; either version 2, or (at your option)
## any later version.
##
## This library is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License along
## with this library; see the file COPYING. If not, write to the Free
## Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
## USA.
GLIBCXX_3.4 {
global:
# Names inside the 'extern' block are demangled names.
extern "C++"
{
std::[A-Za]*;
# std::ba[a-r]*;
std::basic_[a-e]*;
std::basic_f[a-r]*;
# std::basic_fstream;
std::basic_f[t-z]*;
std::basic_[g-h]*;
std::basic_i[a-e]*;
# std::basic_ifstream;
std::basic_i[g-r]*;
std::basic_istr[a-d]*;
# std::basic_istream;
std::basic_istr[f-z]*;
std::basic_i[t-z]*;
std::basic_[j-n]*;
std::basic_o[a-e]*;
# std::basic_ofstream;
# std::basic_o[g-z]*;
std::basic_o[g-r]*;
std::basic_ostr[a-d]*;
std::basic_ostr[f-z]*;
std::basic_[p-r]*;
std::basic_streambuf*;
# std::basic_string
# std::basic_stringbuf
std::basic_stringstream*;
std::basic_[t-z]*;
std::ba[t-z]*;
std::b[b-z]*;
std::c[a-g]*;
# std::char_traits;
std::c[i-z]*;
std::[d-h]*;
std::i[a-n]*;
std::ios_base::[A-Ha-z]*;
std::ios_base::_M_grow_words*;
std::ios_base::_M_init*;
std::ios_base::Init::[A-Za-z]*;
std::ios_base::[J-Za-z]*;
std::i[p-r]*;
# std::istream
# std::istreambuf_iterator
std::istringstream*;
std::istrstream*;
std::i[t-z]*;
std::[A-Zj-k]*;
std::length_error*;
std::logic_error*;
std::locale::[A-Za-e]*;
std::locale::facet::[A-Za-z]*;
std::locale::facet::_S_get_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-h]*;
std::locale::id::[A-Za-z]*;
std::locale::id::_M_id*;
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-r]*;
std::[A-Zm]*;
std::n[^u]*;
std::nu[^m]*;
std::num[^e]*;
std::[p-r]*;
std::ostrstream*;
std::out_of_range*;
std::overflow_error*;
std::set_new_handler*;
std::set_terminate*;
std::set_unexpected*;
# std::string
std::strstream*;
std::strstreambuf*;
std::[A-Zt-z]*;
std::_List_node_base::hook*;
std::_List_node_base::swap*;
std::_List_node_base::unhook*;
std::_List_node_base::reverse*;
std::_List_node_base::transfer*;
std::__throw_*;
std::__timepunct*;
std::__numeric_limits_base*;
std::__num_base::_S_format_float*;
std::__num_base::_S_format_int*;
std::__num_base::_S_atoms_in;
std::__num_base::_S_atoms_out;
std::__moneypunct_cache*;
std::__numpunct_cache*;
std::__timepunct_cache*;
__gnu_debug::_Error_formatter*
};
# Names not in an 'extern' block are mangled names.
# __gnu_debug::_Safe_sequence_base and _Safe_iterator_base
_ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv;
_ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv;
_ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv;
_ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_;
_ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb;
_ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv;
_ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv;
_ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_;
# std::string
_ZNSsC*;
_ZNSsD*;
_ZNSs[0-9][a-z]*;
_ZNSs12_Alloc_hiderC*;
_ZNSs12_M_leak_hardEv;
_ZNSs12_S_constructE[jm]cRKSaIcE;
_ZNSs12_S_empty_repEv;
_ZNSs13_S_copy_chars*;
_ZNSs[0-9][0-9]_M_replace*;
_ZNSs4_Rep10_M_destroy*;
_ZNSs4_Rep10_M_dispose*;
_ZNSs4_Rep10_M_refcopyEv;
_ZNSs4_Rep10_M_refdataEv;
_ZNSs4_Rep12_S_empty_repEv;
_ZNSs4_Rep13_M_set_leakedEv;
_ZNSs4_Rep15_M_set_sharableEv;
_ZNSs4_Rep7_M_grab*;
_ZNSs4_Rep8_M_clone*;
_ZNSs4_Rep9_S_createE[jm][jm]*;
_ZNSs7_M_dataEPc;
_ZNSs7_M_leakEv;
_ZNSs9_M_mutateE[jm][jm][jm];
_ZNSs4_Rep20_S_empty_rep_storageE;
_ZNSs4_Rep11_S_max_sizeE;
_ZNSs4_Rep11_S_terminalE;
_ZNSsaSE*;
_ZNSsixE*;
_ZNSspLE*;
_ZNKSs[0-9][a-z]*;
_ZNKSs[0-9][0-9][a-z]*;
_ZNKSs[a-z]*;
_ZNKSs4_Rep12_M_is_leakedEv;
_ZNKSs4_Rep12_M_is_sharedEv;
_ZNKSs6_M_repEv;
_ZNKSs7_M_dataEv;
_ZNKSs7_M_iendEv;
_ZNKSs8_M_check*;
_ZNKSs8_M_limit*;
_ZNKSs9_M_ibeginEv;
_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_E*;
# std::wstring
_ZNSbIwSt11char_traitsIwESaIwEEC*;
_ZNSbIwSt11char_traitsIwESaIwEED*;
_ZNSbIwSt11char_traitsIwESaIwEE[0-9][a-z]*;
_ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC*;
_ZNSbIwSt11char_traitsIwESaIwEE12_M_leak_hardEv;
_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructE[jm]wRKS1_;
_ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv;
_ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_chars*;
_ZNSbIwSt11char_traitsIwESaIwEE[0-9][0-9]_M_replace*;
_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_destroy*;
_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_dispose*;
_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refcopyEv;
_ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refdataEv;
_ZNSbIwSt11char_traitsIwESaIwEE4_Rep12_S_empty_repEv;
_ZNSbIwSt11char_traitsIwESaIwEE4_Rep13_M_set_leakedEv;
_ZNSbIwSt11char_traitsIwESaIwEE4_Rep15_M_set_sharableEv;
_ZNSbIwSt11char_traitsIwESaIwEE4_Rep7_M_grab*;
_ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_clone*;
_ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createE[jm][jm]*;
_ZNSbIwSt11char_traitsIwESaIwEE7_M_dataEPw;
_ZNSbIwSt11char_traitsIwESaIwEE7_M_leakEv;
_ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateE[jm][jm][jm];
_ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE;
_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_max_sizeE;
_ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_terminalE;
_ZNSbIwSt11char_traitsIwESaIwEEaSE*;
_ZNSbIwSt11char_traitsIwESaIwEEixE*;
_ZNSbIwSt11char_traitsIwESaIwEEpLE*;
_ZNKSbIwSt11char_traitsIwESaIwEE[0-9][a-z]*;
_ZNKSbIwSt11char_traitsIwESaIwEE[0-9][0-9][a-z]*;
_ZNKSbIwSt11char_traitsIwESaIwEE[a-z]*;
_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_leakedEv;
_ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_sharedEv;
_ZNKSbIwSt11char_traitsIwESaIwEE6_M_repEv;
_ZNKSbIwSt11char_traitsIwESaIwEE7_M_dataEv;
_ZNKSbIwSt11char_traitsIwESaIwEE7_M_iendEv;
_ZNKSbIwSt11char_traitsIwESaIwEE8_M_check*;
_ZNKSbIwSt11char_traitsIwESaIwEE8_M_limit*;
_ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv;
_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_E*;
# std::basic_stringbuf
_ZNSt15basic_stringbufI[cw]St11char_traitsI[cw]ESaI[cw]EE[CD]*;
_ZNSt15basic_stringbufI[cw]St11char_traitsI[cw]ESaI[cw]EE[0-9][a-r]*;
_ZNSt15basic_stringbufI[cw]St11char_traitsI[cw]ESaI[cw]EE[0-9]seek*;
_ZNSt15basic_stringbufI[cw]St11char_traitsI[cw]ESaI[cw]EE[0-9]set*;
_ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv;
_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv;
_ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strERKSs;
_ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E;
_ZNSt15basic_stringbufI[cw]St11char_traitsI[cw]ESaI[cw]EE[0-9][t-z]*;
_ZNSt15basic_stringbufI[cw]St11char_traitsI[cw]ESaI[cw]EE[0-9]_M_[a-z]*;
_ZNSt15basic_stringbufI[cw]St11char_traitsI[cw]ESaI[cw]EE[0-9][0-9]_M_[a-z]*;
# std::basic_iostream constructors, destructors
_ZNSdC*;
_ZNSdD*;
# std::basic_fstream
_ZNSt13basic_fstreamI[cw]St11char_traitsI[cw]EEC*;
_ZNSt13basic_fstreamI[cw]St11char_traitsI[cw]EED*;
_ZNSt13basic_fstreamI[cw]St11char_traitsI[cw]EE5closeEv;
_ZNSt13basic_fstreamI[cw]St11char_traitsI[cw]EE7is_openEv;
_ZNSt13basic_fstreamI[cw]St11char_traitsI[cw]EE4open*;
_ZNKSt13basic_fstreamI[cw]St11char_traitsI[cw]EE5rdbufEv;
# std::basic_ifstream
_ZNSt14basic_ifstreamI[cw]St11char_traitsI[cw]EEC*;
_ZNSt14basic_ifstreamI[cw]St11char_traitsI[cw]EED*;
_ZNSt14basic_ifstreamI[cw]St11char_traitsI[cw]EE5closeEv;
_ZNSt14basic_ifstreamI[cw]St11char_traitsI[cw]EE7is_openEv;
_ZNSt14basic_ifstreamI[cw]St11char_traitsI[cw]EE4open*;
_ZNKSt14basic_ifstreamI[cw]St11char_traitsI[cw]EE5rdbufEv;
# std::basic_ofstream
_ZNSt14basic_ofstreamI[cw]St11char_traitsI[cw]EEC*;
_ZNSt14basic_ofstreamI[cw]St11char_traitsI[cw]EED*;
_ZNSt14basic_ofstreamI[cw]St11char_traitsI[cw]EE5closeEv;
_ZNSt14basic_ofstreamI[cw]St11char_traitsI[cw]EE7is_openEv;
_ZNSt14basic_ofstreamI[cw]St11char_traitsI[cw]EE4open*;
_ZNKSt14basic_ofstreamI[cw]St11char_traitsI[cw]EE5rdbufEv;
# std::basic_istream<char>
_ZNSiC*;
_ZNSiD*;
_ZNKSi[0-9][a-z]*;
_ZNSi[0-9][a-h]*;
_ZNSi[0-9][j-z]*;
_ZNSi6ignoreE[il][il];
_ZNSirsE*[^g];
# std::basic_istream<wchar_t>
_ZNSt13basic_istreamIwSt11char_traitsIwEEC*;
_ZNSt13basic_istreamIwSt11char_traitsIwEED*;
_ZNKSt13basic_istreamIwSt11char_traitsIwEE[0-9][a-z]*;
_ZNSt13basic_istreamIwSt11char_traitsIwEE[0-9][a-h]*;
_ZNSt13basic_istreamIwSt11char_traitsIwEE[0-9][j-z]*;
_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreE[il][ijlm];
_ZNSt13basic_istreamIwSt11char_traitsIwEErsE*[^g];
# std::istream operators and extractors
_ZSt7getlineI[cw]St11char_traitsI[cw]ESaI[cw]EERSt13basic_istream*;
_ZSt2wsI[cw]St11char_traitsI[cw]EE*;
_ZStrsI[cw]St11char_traitsI[cw]EERSt13basic_istream*;
_ZStrsI[cw]St11char_traitsI[cw]ESaI[cw]EERSt13basic_istream*;
_ZStrsISt11char_traitsI[cw]EERSt13basic_istream*;
_ZStrsId[cw]St11char_traitsI[cw]EERSt13basic_istream*;
_ZStrsIe[cw]St11char_traitsI[cw]EERSt13basic_istream*;
_ZStrsIf[cw]St11char_traitsI[cw]EERSt13basic_istream*;
# std::basic_ostream<char>
_ZNSoC*;
_ZNSoD*;
_ZNKSo6sentrycvbEv;
_ZNSo8_M_writeEPKc[il];
_ZNSo[0-9][a-z]*;
_ZNSolsE*[^g];
# std::basic_ostream<wchar_t>
_ZNSt13basic_ostreamIwSt11char_traitsIwEEC*;
_ZNSt13basic_ostreamIwSt11char_traitsIwEED*;
_ZNKSt13basic_ostreamIwSt11char_traitsIwEE[0-9][a-z]*;
_ZNSt13basic_ostreamIwSt11char_traitsIwEE3putEw;
_ZNSt13basic_ostreamIwSt11char_traitsIwEE5flushEv;
_ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpE*;
_ZNSt13basic_ostreamIwSt11char_traitsIwEE5tellpEv;
_ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKw*;
_ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentry*;
_ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKw[il];
_ZNSt13basic_ostreamIwSt11char_traitsIwEElsE*[^g];
# std::ostream operators and inserters
_ZSt4end[ls]I[cw]St11char_traitsI[cw]EERSt13basic_ostream*;
_ZSt5flushI[cw]St11char_traitsI[cw]EERSt13basic_ostream*;
_ZStlsI[cw]St11char_traitsI[cw]EERSt13basic_ostream*;
_ZStlsI[cw]St11char_traitsI[cw]ESaI[cw]EERSt13basic_ostream*;
_ZStlsISt11char_traitsI[cw]EERSt13basic_ostream*;
_ZStlsId[cw]St11char_traitsI[cw]EERSt13basic_ostream*;
_ZStlsIe[cw]St11char_traitsI[cw]EERSt13basic_ostream*;
_ZStlsIf[cw]St11char_traitsI[cw]EERSt13basic_ostream*;
# std::locale destructors
_ZNSt6localeD*;
# std::locale::facet destructors
_ZNSt6locale5facetD*;
# std::locale::_Impl constructors, destructors
_ZNSt6locale5_ImplC*;
_ZNSt6locale5_ImplD*;
# std::ios_base, std::ios_base::Init destructors
_ZNSt8ios_baseD*;
_ZNSt8ios_base4InitD*;
# bool std::has_facet
_ZSt9has_facetIS*;
# std::num_get
_ZNKSt7num_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE*;
# std::num_put
_ZNKSt7num_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEE*;
# std::money_get
_ZNKSt9money_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE*;
# std::money_put
_ZNKSt9money_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEE*;
# std::numeric_limits
_ZNSt14numeric_limitsI[^g]*;
# std::_Rb_tree
_ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base;
_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base;
_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base;
_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base;
_ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_;
_ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_;
_ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_;
_ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_;
_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_;
# std::__basic_file
_ZNKSt12__basic_fileIcE7is_openEv;
_ZNSt12__basic_fileIcE2fdEv;
_ZNSt12__basic_fileIcE4openEPKcSt13_Ios_Openmodei;
_ZNSt12__basic_fileIcE4syncEv;
_ZNSt12__basic_fileIcE5closeEv;
_ZNSt12__basic_fileIcE6xsgetn*;
_ZNSt12__basic_fileIcE6xsputn*;
_ZNSt12__basic_fileIcE7seekoff*;
_ZNSt12__basic_fileIcE8sys_openE*St13_Ios_Openmode;
_ZNSt12__basic_fileIcE8xsputn_2*;
_ZNSt12__basic_fileIcE9showmanycEv;
_ZNSt12__basic_fileIcEC*;
_ZNSt12__basic_fileIcED*;
# std::__convert_to_v
_ZSt14__convert_to_vI[^g]*;
# __gnu_cxx::stdio_sync_filebuf
_ZTVN9__gnu_cxx18stdio_sync_filebufI[cw]St11char_traitsI[cw]EEE;
# __gnu_cxx::__atomic_add
# __gnu_cxx::__exchange_and_add
_ZN9__gnu_cxx12__atomic_addEPV[il]i;
_ZN9__gnu_cxx18__exchange_and_addEPV[il]i;
# debug mode
_ZN10__gnu_norm15_List_node_base4hook*;
_ZN10__gnu_norm15_List_node_base4swap*;
_ZN10__gnu_norm15_List_node_base6unhookEv;
_ZN10__gnu_norm15_List_node_base7reverseEv;
_ZN10__gnu_norm15_List_node_base8transfer*;
# 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[](size_t)
_Zna[jm];
# operator new[](size_t, std::nothrow_t const&)
_Zna[jm]RKSt9nothrow_t;
# operator delete[](void*)
_ZdaPv;
# operator delete[](void*, std::nothrow_t const&)
_ZdaPvRKSt9nothrow_t;
# virtual table
_ZTVNSt8ios_base7failureE;
_ZTVNSt6locale5facetE;
_ZTVS[a-z];
_ZTVSt[0-9][A-Za-z]*;
_ZTVSt[0-9][0-9][A-Za-z]*;
_ZTVSt11__timepunctI[cw]E;
_ZTVSt23__codecvt_abstract_baseI[cw]c11__mbstate_tE;
_ZTVSt21__ctype_abstract_baseI[cw]E;
# VTT structure
_ZTTS[a-z];
_ZTTSt[0-9][A-Za-z]*;
_ZTTSt[0-9][0-9][A-Za-z]*;
# typeinfo structure
_ZTIS[a-z];
_ZTINSt8ios_base7failureE;
_ZTINSt6locale5facetE;
_ZTISt[0-9][A-Za-z]*;
_ZTISt[0-9][0-9][A-Za-z]*;
_ZTISt11__timepunctI[cw]E;
_ZTISt10__num_base;
_ZTISt21__ctype_abstract_baseI[cw]E;
_ZTISt23__codecvt_abstract_baseI[cw]c11__mbstate_tE;
_ZTIN9__gnu_cxx18stdio_sync_filebufI[cw]St11char_traitsI[cw]EEE;
_ZTIN9__gnu_cxx13stdio_filebufI[cw]St11char_traitsI[cw]EEE;
# typeinfo name
_ZTSNSt8ios_base7failureE;
_ZTSNSt6locale5facetE;
_ZTSS[a-z];
_ZTSSt[0-9][A-Za-z]*;
_ZTSSt[0-9][0-9][A-Za-z]*;
_ZTSSt11__timepunctI[cw]E;
_ZTSSt10__num_base;
_ZTSSt21__ctype_abstract_baseI[cw]E;
_ZTSSt23__codecvt_abstract_baseI[cw]c11__mbstate_tE;
_ZTSN9__gnu_cxx18stdio_sync_filebufI[cw]St11char_traitsI[cw]EEE;
_ZTSN9__gnu_cxx13stdio_filebufI[cw]St11char_traitsI[cw]EEE;
# std::bad_alloc::~bad_alloc, std::bad_cast::~bad_cast,
# std::bad_typeid::~bad_typeid, std::bad_exception::~bad_exception
_ZNSt9bad_allocD*;
_ZNSt8bad_castD*;
_ZNSt10bad_typeidD*;
_ZNSt13bad_exceptionD*;
# function-scope static objects requires a guard variable.
_ZGVNSt[^1]*;
_ZGVNSt1[^7]*;
# virtual function thunks
_ZThn8_NS*;
_ZThn16_NS*;
_ZTv0_n12_NS*;
_ZTv0_n24_NS*;
# 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;
__signbit;
__signbitf;
__signbitl;
# GLIBCXX_ABI compatibility only.
# std::string
_ZNKSs11_M_disjunctEPKc;
_ZNKSs15_M_check_lengthE[jm][jm]PKc;
_ZNSs4_Rep26_M_set_length_and_sharableE*;
_ZNSs7_M_copyEPcPKc[jm];
_ZNSs7_M_moveEPcPKc[jm];
_ZNSs9_M_assignEPc[jm]c;
# std::wstring
_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw;
_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthE[jm][jm]PKc;
_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableE*;
_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKw[jm];
_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKw[jm];
_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPw[jm]w;
_ZNKSt13basic_fstreamI[cw]St11char_traitsI[cw]EE7is_openEv;
_ZNKSt14basic_ifstreamI[cw]St11char_traitsI[cw]EE7is_openEv;
_ZNKSt14basic_ofstreamI[cw]St11char_traitsI[cw]EE7is_openEv;
_ZNSi6ignoreE[ilv];
_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreE[ilv];
_ZNSt11char_traitsI[cw]E2eqERK[cw]S2_;
_ZNSt19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEppEv;
# std::locale::Impl _M_ members
_ZNSt6locale5_Impl16_M_install_facetEPKNS_2idEPKNS_5facetE;
_ZNSt6locale5_Impl16_M_replace_facetEPKS0_PKNS_2idE;
_ZNSt6locale5_Impl19_M_replace_categoryEPKS0_PKPKNS_2idE;
_ZNSt6locale5_Impl21_M_replace_categoriesEPKS0_i;
# DO NOT DELETE THIS LINE. Port-specific symbols, if any, will be here.
local:
*;
};
GLIBCXX_3.4.1 {
_ZNSt12__basic_fileIcE4fileEv;
} GLIBCXX_3.4;
GLIBCXX_3.4.2 {
_ZN9__gnu_cxx18stdio_sync_filebufI[cw]St11char_traitsI[cw]EE4fileEv;
_ZN9__gnu_cxx17__pool_alloc_base9_M_refillE[jm];
_ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listE[jm];
_ZN9__gnu_cxx17__pool_alloc_base12_M_get_mutexEv;
} GLIBCXX_3.4.1;
GLIBCXX_3.4.3 {
# stub functions from libmath
acosf;
acosl;
asinf;
asinl;
atanf;
atanl;
ceilf;
ceill;
floorf;
floorl;
fmodf;
fmodl;
frexpf;
frexpl;
ldexpf;
ldexpl;
modff;
modfl;
} GLIBCXX_3.4.2;
GLIBCXX_3.4.4 {
_ZN9__gnu_cxx6__poolILb0EE13_M_initializeEv;
_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEPFvPvE;
_ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv;
_ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv;
_ZN9__gnu_cxx6__poolILb[01]EE16_M_reserve_blockE[jm][jm];
_ZN9__gnu_cxx6__poolILb[01]EE16_M_reclaim_blockEPc[jm];
_ZN9__gnu_cxx6__poolILb[01]EE10_M_destroyEv;
_ZN9__gnu_cxx9free_list6_M_getE*;
_ZN9__gnu_cxx9free_list8_M_clearEv;
} GLIBCXX_3.4.3;
GLIBCXX_3.4.5 {
# std::string
_ZNKSs11_M_disjunctEPKc;
_ZNKSs15_M_check_lengthE[jm][jm]PKc;
_ZNSs4_Rep26_M_set_length_and_sharableE*;
_ZNSs7_M_copyEPcPKc[jm];
_ZNSs7_M_moveEPcPKc[jm];
_ZNSs9_M_assignEPc[jm]c;
# std::wstring
_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw;
_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthE[jm][jm]PKc;
_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableE*;
_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKw[jm];
_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKw[jm];
_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPw[jm]w;
_ZNKSt13basic_fstreamI[cw]St11char_traitsI[cw]EE7is_openEv;
_ZNKSt14basic_ifstreamI[cw]St11char_traitsI[cw]EE7is_openEv;
_ZNKSt14basic_ofstreamI[cw]St11char_traitsI[cw]EE7is_openEv;
_ZNSi6ignoreE[ilv];
_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreE[ilv];
_ZNSt11char_traitsI[cw]E2eqERK[cw]S2_;
_ZNSt19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEppEv;
} GLIBCXX_3.4.4;
GLIBCXX_3.4.6 {
_ZSt17__copy_streambufsI[cw]St11char_traitsI[cw]EEiPSt15basic_streambuf*;
_ZNSt8ios_base17_M_call_callbacksENS_5eventE;
_ZNSt8ios_base20_M_dispose_callbacksEv;
_ZNSt6locale5facet13_S_get_c_nameEv;
_ZNSt15basic_stringbufI[cw]St11char_traitsI[cw]ESaI[cw]EE9showmanycEv;
_ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv;
_ZN9__gnu_cxx6__poolILb1EE13_M_initializeEv;
} GLIBCXX_3.4.5;
GLIBCXX_3.4.7 {
_ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetE[jm];
} GLIBCXX_3.4.6;
GLIBCXX_3.4.8 {
_ZSt17__copy_streambufsI[cw]St11char_traitsI[cw]EElPSt15basic_streambuf*;
} GLIBCXX_3.4.7;
GLIBCXX_3.4.9 {
_ZNSt6__norm15_List_node_base4hook*;
_ZNSt6__norm15_List_node_base4swap*;
_ZNSt6__norm15_List_node_base6unhookEv;
_ZNSt6__norm15_List_node_base7reverseEv;
_ZNSt6__norm15_List_node_base8transfer*;
_ZNSo9_M_insertI[^g]*;
_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertI[^g]*;
_ZNSi10_M_extractI[^g]*;
_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractI[^g]*;
_ZSt21__copy_streambufs_eofI[cw]St11char_traitsI[cw]EE[il]PSt15basic_streambuf*;
_ZSt16__ostream_insert*;
_ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv;
_ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb;
_ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv;
_ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv;
_ZNKSt9bad_alloc4whatEv;
_ZNKSt8bad_cast4whatEv;
_ZNKSt10bad_typeid4whatEv;
_ZNKSt13bad_exception4whatEv;
} GLIBCXX_3.4.8;
# Symbols in the support library (libsupc++) have their own tag.
CXXABI_1.3 {
global:
__cxa_allocate_exception;
__cxa_bad_cast;
__cxa_bad_typeid;
__cxa_begin_catch;
__cxa_begin_cleanup;
__cxa_call_unexpected;
__cxa_current_exception_type;
__cxa_demangle;
__cxa_end_catch;
__cxa_end_cleanup;
__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;
__cxa_type_match;
__cxa_vec_cctor;
__cxa_vec_cleanup;
__cxa_vec_ctor;
__cxa_vec_delete2;
__cxa_vec_delete3;
__cxa_vec_delete;
__cxa_vec_dtor;
__cxa_vec_new2;
__cxa_vec_new3;
__cxa_vec_new;
__gxx_personality_v0;
__gxx_personality_sj0;
__dynamic_cast;
# *_type_info classes, ctor and dtor
_ZN10__cxxabiv117__array_type_info*;
_ZN10__cxxabiv117__class_type_info*;
_ZN10__cxxabiv116__enum_type_info*;
_ZN10__cxxabiv120__function_type_info*;
_ZN10__cxxabiv123__fundamental_type_info*;
_ZN10__cxxabiv117__pbase_type_info*;
_ZN10__cxxabiv129__pointer_to_member_type_info*;
_ZN10__cxxabiv119__pointer_type_info*;
_ZN10__cxxabiv120__si_class_type_info*;
_ZN10__cxxabiv121__vmi_class_type_info*;
# *_type_info classes, member functions
_ZNK10__cxxabiv117__class_type_info*;
_ZNK10__cxxabiv120__function_type_info*;
_ZNK10__cxxabiv117__pbase_type_info*;
_ZNK10__cxxabiv129__pointer_to_member_type_info*;
_ZNK10__cxxabiv119__pointer_type_info*;
_ZNK10__cxxabiv120__si_class_type_info*;
_ZNK10__cxxabiv121__vmi_class_type_info*;
# virtual table
_ZTVN10__cxxabiv117__array_type_infoE;
_ZTVN10__cxxabiv117__class_type_infoE;
_ZTVN10__cxxabiv116__enum_type_infoE;
_ZTVN10__cxxabiv120__function_type_infoE;
_ZTVN10__cxxabiv123__fundamental_type_infoE;
_ZTVN10__cxxabiv117__pbase_type_infoE;
_ZTVN10__cxxabiv129__pointer_to_member_type_infoE;
_ZTVN10__cxxabiv119__pointer_type_infoE;
_ZTVN10__cxxabiv120__si_class_type_infoE;
_ZTVN10__cxxabiv121__vmi_class_type_infoE;
# typeinfo structure (and some names)
_ZTI[a-fh-z];
_ZTIP[a-fh-z];
_ZTIPK[a-fh-z];
_ZTIN10__cxxabiv117__array_type_infoE;
_ZTIN10__cxxabiv117__class_type_infoE;
_ZTIN10__cxxabiv116__enum_type_infoE;
_ZTIN10__cxxabiv120__function_type_infoE;
_ZTIN10__cxxabiv123__fundamental_type_infoE;
_ZTIN10__cxxabiv117__pbase_type_infoE;
_ZTIN10__cxxabiv129__pointer_to_member_type_infoE;
_ZTIN10__cxxabiv119__pointer_type_infoE;
_ZTIN10__cxxabiv120__si_class_type_infoE;
_ZTIN10__cxxabiv121__vmi_class_type_infoE;
# typeinfo name
_ZTS[a-fh-z];
_ZTSP[a-fh-z];
_ZTSPK[a-fh-z];
_ZTSN10__cxxabiv117__array_type_infoE;
_ZTSN10__cxxabiv117__class_type_infoE;
_ZTSN10__cxxabiv116__enum_type_infoE;
_ZTSN10__cxxabiv120__function_type_infoE;
_ZTSN10__cxxabiv123__fundamental_type_infoE;
_ZTSN10__cxxabiv117__pbase_type_infoE;
_ZTSN10__cxxabiv129__pointer_to_member_type_infoE;
_ZTSN10__cxxabiv119__pointer_type_infoE;
_ZTSN10__cxxabiv120__si_class_type_infoE;
_ZTSN10__cxxabiv121__vmi_class_type_infoE;
# __gnu_cxx::_verbose_terminate_handler()
_ZN9__gnu_cxx27__verbose_terminate_handlerEv;
local:
*;
};
CXXABI_1.3.1 {
__cxa_get_exception_ptr;
} CXXABI_1.3;

View File

@ -0,0 +1,7 @@
#
# This is a placeholder file. It does nothing and is not used.
#
# If you are seeing this file as your linker script (named
# libstdc++-symbols.ver), then either 1) the configuration process
# determined that symbol versioning should not be done, or 2) you
# specifically turned it off. (ie, --disable-symvers).

View File

@ -1,6 +1,6 @@
// Base to std::allocator -*- C++ -*-
// Copyright (C) 2004 Free Software Foundation, Inc.
// Copyright (C) 2004, 2005 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
@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -27,11 +27,16 @@
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/** @file c++allocator.h
* This is an internal header file, included by other library headers.
* You should not attempt to use it directly.
*/
#ifndef _CXX_ALLOCATOR_H
#define _CXX_ALLOCATOR_H 1
// Define bitmap_allocator as the base class to std::allocator.
#include <ext/bitmap_allocator.h>
#define ___glibcxx_base_allocator __gnu_cxx::bitmap_allocator
#define __glibcxx_base_allocator __gnu_cxx::bitmap_allocator
#endif

View File

@ -1,6 +1,6 @@
// Base to std::allocator -*- C++ -*-
// Copyright (C) 2004 Free Software Foundation, Inc.
// Copyright (C) 2004, 2005 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
@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -27,11 +27,16 @@
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/** @file c++allocator.h
* This is an internal header file, included by other library headers.
* You should not attempt to use it directly.
*/
#ifndef _CXX_ALLOCATOR_H
#define _CXX_ALLOCATOR_H 1
// Define new_allocator as the base class to std::allocator.
#include <ext/malloc_allocator.h>
#define ___glibcxx_base_allocator __gnu_cxx::malloc_allocator
#define __glibcxx_base_allocator __gnu_cxx::malloc_allocator
#endif

View File

@ -1,6 +1,6 @@
// Base to std::allocator -*- C++ -*-
// Copyright (C) 2004 Free Software Foundation, Inc.
// Copyright (C) 2004, 2005 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
@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -27,11 +27,16 @@
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/** @file c++allocator.h
* This is an internal header file, included by other library headers.
* You should not attempt to use it directly.
*/
#ifndef _CXX_ALLOCATOR_H
#define _CXX_ALLOCATOR_H 1
// Define mt_allocator as the base class to std::allocator.
#include <ext/mt_allocator.h>
#define ___glibcxx_base_allocator __gnu_cxx::__mt_alloc
#define __glibcxx_base_allocator __gnu_cxx::__mt_alloc
#endif

View File

@ -1,6 +1,6 @@
// Base to std::allocator -*- C++ -*-
// Copyright (C) 2004 Free Software Foundation, Inc.
// Copyright (C) 2004, 2005 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
@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -27,11 +27,16 @@
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/** @file c++allocator.h
* This is an internal header file, included by other library headers.
* You should not attempt to use it directly.
*/
#ifndef _CXX_ALLOCATOR_H
#define _CXX_ALLOCATOR_H 1
// Define new_allocator as the base class to std::allocator.
#include <ext/new_allocator.h>
#define ___glibcxx_base_allocator __gnu_cxx::new_allocator
#define __glibcxx_base_allocator __gnu_cxx::new_allocator
#endif

View File

@ -1,6 +1,6 @@
// Base to std::allocator -*- C++ -*-
// Copyright (C) 2004 Free Software Foundation, Inc.
// Copyright (C) 2004, 2005 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
@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -27,11 +27,16 @@
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/** @file c++allocator.h
* This is an internal header file, included by other library headers.
* You should not attempt to use it directly.
*/
#ifndef _CXX_ALLOCATOR_H
#define _CXX_ALLOCATOR_H 1
// Define new_allocator as the base class to std::allocator.
#include <ext/pool_allocator.h>
#define ___glibcxx_base_allocator __gnu_cxx::__pool_alloc
#define __glibcxx_base_allocator __gnu_cxx::__pool_alloc
#endif

View File

@ -0,0 +1,38 @@
// Low-level type for atomic operations -*- C++ -*-
// Copyright (C) 2004 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
#ifndef _GLIBCXX_ATOMIC_WORD_H
#define _GLIBCXX_ATOMIC_WORD_H 1
typedef int _Atomic_word;
#define _GLIBCXX_READ_MEM_BARRIER __asm __volatile ("mb":::"memory")
#define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("wmb":::"memory")
#endif

View File

@ -0,0 +1,80 @@
// Control various target specific ABI tweaks. ARM version.
// Copyright (C) 2004, 2006 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/** @file cxxabi_tweaks.h
* The header provides an CPU-variable interface to the C++ ABI.
*/
#ifndef _CXXABI_TWEAKS_H
#define _CXXABI_TWEAKS_H 1
#ifdef __cplusplus
namespace __cxxabiv1
{
extern "C"
{
#endif
#ifdef __ARM_EABI__
// The ARM EABI uses the least significant bit of a 32-bit
// guard variable. */
#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0)
#define _GLIBCXX_GUARD_SET(x) *(x) = 1
typedef int __guard;
// We also want the element size in array cookies.
#define _GLIBCXX_ELTSIZE_IN_COOKIE 1
// __cxa_vec_ctor should return a pointer to the array.
typedef void * __cxa_vec_ctor_return_type;
#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x
// Constructors and destructors return the "this" pointer.
typedef void * __cxa_cdtor_return_type;
#else // __ARM_EABI__
// The generic ABI uses the first byte of a 64-bit guard variable.
#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0)
#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1
__extension__ typedef int __guard __attribute__((mode (__DI__)));
// __cxa_vec_ctor has void return type.
typedef void __cxa_vec_ctor_return_type;
#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return
// Constructors and destructors do not return a value.
typedef void __cxa_cdtor_return_type;
#endif //!__ARM_EABI__
#ifdef __cplusplus
}
} // namespace __cxxabiv1
#endif
#endif

View File

@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software

View File

@ -1,6 +1,6 @@
// Low-level functions for atomic operations: CRIS version -*- C++ -*-
// Copyright (C) 2001, 2003, 2004 Free Software Foundation, Inc.
// Copyright (C) 2001, 2003, 2004, 2005 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
@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -27,10 +27,10 @@
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
#include <bits/atomicity.h>
#include <ext/atomicity.h>
_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
namespace __gnu_cxx
{
_Atomic_word
__exchange_and_add(volatile _Atomic_word* __mem, int __val)
{
@ -47,8 +47,8 @@ namespace __gnu_cxx
" move.d %2,[%3] \n"
" bwf 0b \n"
" clearf \n"
: "=&r" (__result), "=m" (*__mem), "=&r" (__tmp)
: "r" (__mem), "g" (__val), "m" (*__mem)
: "=&r" (__result), "=Q" (*__mem), "=&r" (__tmp)
: "r" (__mem), "g" (__val), "Q" (*__mem)
/* The memory clobber must stay, regardless of
current uses of this function. */
: "memory");
@ -60,8 +60,8 @@ namespace __gnu_cxx
" add.d %0,%2 \n"
" move.d %2,[%3] \n"
" move $r9,$ccr \n"
: "=&r" (__result), "=m" (*__mem), "=&r" (__tmp)
: "r" (__mem), "g" (__val), "m" (*__mem)
: "=&r" (__result), "=Q" (*__mem), "=&r" (__tmp)
: "r" (__mem), "g" (__val), "Q" (*__mem)
: "r9",
/* The memory clobber must stay, regardless of
current uses of this function. */
@ -74,4 +74,5 @@ namespace __gnu_cxx
void
__atomic_add(volatile _Atomic_word* __mem, int __val)
{ __exchange_and_add(__mem, __val); }
} // namespace __gnu_cxx
_GLIBCXX_END_NAMESPACE

View File

@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -27,9 +27,26 @@
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/** @file atomic_word.h
* This file is a GNU extension to the Standard C++ Library.
*/
#ifndef _GLIBCXX_ATOMIC_WORD_H
#define _GLIBCXX_ATOMIC_WORD_H 1
typedef int _Atomic_word;
// Define these two macros using the appropriate memory barrier for the target.
// The commented out versions below are the defaults.
// See ia64/atomic_word.h for an alternative approach.
// This one prevents loads from being hoisted across the barrier;
// in other words, this is a Load-Load acquire barrier.
// This is necessary iff TARGET_RELAXED_ORDERING is defined in tm.h.
// #define _GLIBCXX_READ_MEM_BARRIER __asm __volatile ("":::"memory")
// This one prevents stores from being sunk across the barrier; in other
// words, a Store-Store release barrier.
// #define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("":::"memory")
#endif

View File

@ -0,0 +1,50 @@
// Low-level functions for atomic operations: version for CPUs providing
// atomic builtins -*- C++ -*-
// Copyright (C) 2006 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/** @file ext/atomicity.h
* This file is a GNU extension to the Standard C++ Library.
*/
#include <bits/c++config.h>
#include <bits/atomic_word.h>
_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
_Atomic_word
__attribute__ ((__unused__))
__exchange_and_add(volatile _Atomic_word* __mem, int __val)
{ return __sync_fetch_and_add(__mem, __val); }
void
__attribute__ ((__unused__))
__atomic_add(volatile _Atomic_word* __mem, int __val)
{ __sync_fetch_and_add(__mem, __val); }
_GLIBCXX_END_NAMESPACE

View File

@ -0,0 +1,61 @@
// Low-level functions for atomic operations: Generic version -*- C++ -*-
// Copyright (C) 1999, 2001, 2002, 2003, 2004, 2005, 2006
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/** @file ext/atomicity.h
* This file is a GNU extension to the Standard C++ Library.
*/
#include <ext/atomicity.h>
#include <ext/concurrence.h>
namespace
{
__gnu_cxx::__mutex atomic_mutex;
} // anonymous namespace
_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
_Atomic_word
__attribute__ ((__unused__))
__exchange_and_add(volatile _Atomic_word* __mem, int __val)
{
__gnu_cxx::__scoped_lock sentry(atomic_mutex);
_Atomic_word __result;
__result = *__mem;
*__mem += __val;
return __result;
}
void
__attribute__ ((__unused__))
__atomic_add(volatile _Atomic_word* __mem, int __val)
{ __exchange_and_add(__mem, __val); }
_GLIBCXX_END_NAMESPACE

View File

@ -0,0 +1,38 @@
// Specific definitions for generic platforms -*- C++ -*-
// Copyright (C) 2005 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/** @file cpu_defines.h
* This is an internal header file, included by other library headers.
* You should not attempt to use it directly.
*/
#ifndef _GLIBCXX_CPU_DEFINES
#define _GLIBCXX_CPU_DEFINES 1
#endif

View File

@ -0,0 +1,60 @@
// Control various target specific ABI tweaks. Generic version.
// Copyright (C) 2004, 2006 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/** @file cxxabi_tweaks.h
* The header provides an CPU-variable interface to the C++ ABI.
*/
#ifndef _CXXABI_TWEAKS_H
#define _CXXABI_TWEAKS_H 1
#ifdef __cplusplus
namespace __cxxabiv1
{
extern "C"
{
#endif
// The generic ABI uses the first byte of a 64-bit guard variable.
#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0)
#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1
__extension__ typedef int __guard __attribute__((mode (__DI__)));
// __cxa_vec_ctor has void return type.
typedef void __cxa_vec_ctor_return_type;
#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return
// Constructors and destructors do not return a value.
typedef void __cxa_cdtor_return_type;
#ifdef __cplusplus
}
} // namespace __cxxabiv1
#endif
#endif

View File

@ -1,6 +1,6 @@
// Low-level functions for atomic operations: PA-RISC version -*- C++ -*-
// Copyright (C) 2002, 2004 Free Software Foundation, Inc.
// Copyright (C) 2002, 2004, 2005 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
@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -28,10 +28,10 @@
// the GNU General Public License.
#include <bits/c++config.h>
#include <bits/atomicity.h>
#include <ext/atomicity.h>
_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
namespace __gnu_cxx
{
template<int _Inst>
struct _Atomicity_lock
{
@ -61,12 +61,12 @@ namespace __gnu_cxx
"nop\n\t"
"b,n .-20"
: "=&r" (tmp)
: "r" (&lock));
: "r" (&lock)
: "memory");
result = *__mem;
*__mem = result + __val;
/* Reset lock with PA 2.0 "ordered" store. */
__asm__ __volatile__ ("stw,ma %1,0(%0)"
__asm__ __volatile__ ("stw %1,0(%0)"
: : "r" (&lock), "r" (tmp) : "memory");
return result;
}
@ -85,11 +85,12 @@ namespace __gnu_cxx
"nop\n\t"
"b,n .-20"
: "=&r" (tmp)
: "r" (&lock));
: "r" (&lock)
: "memory");
*__mem += __val;
/* Reset lock with PA 2.0 "ordered" store. */
__asm__ __volatile__ ("stw,ma %1,0(%0)"
__asm__ __volatile__ ("stw %1,0(%0)"
: : "r" (&lock), "r" (tmp) : "memory");
}
} // namespace __gnu_cxx
_GLIBCXX_END_NAMESPACE

View File

@ -1,6 +1,6 @@
// Low-level functions for atomic operations: x86, x >= 3 version -*- C++ -*-
// Copyright (C) 2003, 2004 Free Software Foundation, Inc.
// Copyright (C) 2003, 2004, 2005 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
@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -27,10 +27,10 @@
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
#include <bits/atomicity.h>
#include <ext/atomicity.h>
_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
namespace __gnu_cxx
{
template<int __inst>
struct _Atomicity_lock
{
@ -71,4 +71,5 @@ namespace __gnu_cxx
__attribute__ ((__unused__))
__atomic_add(volatile _Atomic_word* __mem, int __val)
{ __exchange_and_add(__mem, __val); }
} // namespace __gnu_cxx
_GLIBCXX_END_NAMESPACE

View File

@ -1,6 +1,6 @@
// Low-level functions for atomic operations: x86, x >= 4 version -*- C++ -*-
// Copyright (C) 1999, 2000, 2001, 2004 Free Software Foundation, Inc.
// Copyright (C) 1999, 2000, 2001, 2004, 2005 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
@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -27,10 +27,10 @@
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
#include <bits/atomicity.h>
#include <ext/atomicity.h>
_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
namespace __gnu_cxx
{
_Atomic_word
__attribute__ ((__unused__))
__exchange_and_add(volatile _Atomic_word* __mem, int __val)
@ -49,5 +49,6 @@ namespace __gnu_cxx
__asm__ __volatile__ ("lock; add{l} {%1,%0|%0,%1}"
: "=m" (*__mem) : "ir" (__val), "m" (*__mem));
}
} // namespace __gnu_cxx
_GLIBCXX_END_NAMESPACE

View File

@ -0,0 +1,69 @@
// Low-level type for atomic operations -*- C++ -*-
// Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
#ifndef _GLIBCXX_ATOMIC_WORD_H
#define _GLIBCXX_ATOMIC_WORD_H 1
#include <bits/cxxabi_tweaks.h>
typedef int _Atomic_word;
namespace __gnu_cxx
{
// Test the first byte of __g and ensure that no loads are hoisted across
// the test.
inline bool
__test_and_acquire (__cxxabiv1::__guard *__g)
{
unsigned char __c;
unsigned char *__p = reinterpret_cast<unsigned char *>(__g);
// ldN.acq is a load with an implied hoist barrier.
// would ld8+mask be faster than just doing an ld1?
__asm __volatile ("ld1.acq %0 = %1" : "=r"(__c) : "m"(*__p) : "memory");
return __c != 0;
}
// Set the first byte of __g to 1 and ensure that no stores are sunk
// across the store.
inline void
__set_and_release (__cxxabiv1::__guard *__g)
{
unsigned char *__p = reinterpret_cast<unsigned char *>(__g);
// stN.rel is a store with an implied sink barrier.
// could load word, set flag, and CAS it back
__asm __volatile ("st1.rel %0 = %1" : "=m"(*__p) : "r"(1) : "memory");
}
// We don't define the _BARRIER macros on ia64 because the barriers are
// included in the test and set, above.
#define _GLIBCXX_GUARD_TEST_AND_ACQUIRE(G) __gnu_cxx::__test_and_acquire (G)
#define _GLIBCXX_GUARD_SET_AND_RELEASE(G) __gnu_cxx::__set_and_release (G)
}
#endif

View File

@ -1,6 +1,6 @@
// Low-level functions for atomic operations: m68k version -*- C++ -*-
// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
// Copyright (C) 2001, 2002, 2003, 2004, 2005 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
@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -27,10 +27,10 @@
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
#include <bits/atomicity.h>
#include <ext/atomicity.h>
_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
namespace __gnu_cxx
{
#if ( defined(__mc68020__) || defined(__mc68030__) \
|| defined(__mc68040__) || defined(__mc68060__) ) \
&& !defined(__mcpu32__)
@ -130,4 +130,5 @@ namespace __gnu_cxx
// architecturally guaranteed to be atomic.
__exchange_and_add(__mem, __val);
}
} // namespace __gnu_cxx
_GLIBCXX_END_NAMESPACE

View File

@ -1,6 +1,7 @@
// Low-level functions for atomic operations: MIPS version -*- C++ -*-
// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006
// 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
@ -15,7 +16,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -27,10 +28,11 @@
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
#include <bits/atomicity.h>
#include <ext/atomicity.h>
namespace __gnu_cxx
{
_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
// NB: MIPS II or above required.
_Atomic_word
__attribute__ ((__unused__))
__exchange_and_add(volatile _Atomic_word* __mem, int __val)
@ -44,14 +46,15 @@ namespace __gnu_cxx
#if _MIPS_SIM == _ABIO32
".set mips2\n\t"
#endif
"ll %0,%3\n\t"
"addu %1,%4,%0\n\t"
"sc %1,%2\n\t"
"ll %0,0(%2)\n\t"
"addu %1,%3,%0\n\t"
"sc %1,0(%2)\n\t"
".set pop\n\t"
"beqz %1,1b\n\t"
"/* End exchange & add */"
: "=&r"(__result), "=&r"(__tmp), "=m"(*__mem)
: "m" (*__mem), "r"(__val));
: "=&r"(__result), "=&r"(__tmp)
: "r"(__mem), "r"(__val)
: "memory" );
return __result;
}
@ -69,13 +72,15 @@ namespace __gnu_cxx
#if _MIPS_SIM == _ABIO32
".set mips2\n\t"
#endif
"ll %0,%2\n\t"
"addu %0,%3,%0\n\t"
"sc %0,%1\n\t"
"ll %0,0(%1)\n\t"
"addu %0,%2,%0\n\t"
"sc %0,0(%1)\n\t"
".set pop\n\t"
"beqz %0,1b\n\t"
"/* End atomic add */"
: "=&r"(__result), "=m"(*__mem)
: "m" (*__mem), "r"(__val));
: "=&r"(__result)
: "r"(__mem), "r"(__val)
: "memory" );
}
} // namespace __gnu_cxx
_GLIBCXX_END_NAMESPACE

View File

@ -0,0 +1,42 @@
// Low-level type for atomic operations -*- C++ -*-
// Copyright (C) 2004 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
#ifndef _GLIBCXX_ATOMIC_WORD_H
#define _GLIBCXX_ATOMIC_WORD_H 1
typedef int _Atomic_word;
#define _GLIBCXX_READ_MEM_BARRIER __asm __volatile ("isync":::"memory")
#ifdef __NO_LWSYNC__
#define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("sync":::"memory")
#else
#define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("lwsync":::"memory")
#endif
#endif

View File

@ -0,0 +1,41 @@
// Specific definitions for generic platforms -*- C++ -*-
// Copyright (C) 2005 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/** @file cpu_defines.h
* This is an internal header file, included by other library headers.
* You should not attempt to use it directly.
*/
#ifndef _GLIBCXX_CPU_DEFINES
#define _GLIBCXX_CPU_DEFINES 1
// Integer divide instructions don't trap on PowerPC.
#define __glibcxx_integral_traps false
#endif

View File

@ -0,0 +1,107 @@
// Low-level functions for atomic operations: sh version -*- C++ -*-
// Copyright (C) 1999, 2001, 2002, 2003, 2004, 2005, 2006
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
#ifndef _BITS_ATOMICITY_H
#define _BITS_ATOMICITY_H 1
#ifdef __SH4A__
typedef int _Atomic_word;
static inline _Atomic_word
__attribute__ ((__unused__))
__exchange_and_add (volatile _Atomic_word* __mem, int __val)
{
_Atomic_word __result;
__asm__ __volatile__
("0:\n"
"\tmovli.l\t@%2,r0\n"
"\tmov\tr0,%1\n"
"\tadd\t%3,r0\n"
"\tmovco.l\tr0,@%2\n"
"\tbf\t0b"
: "+m" (*__mem), "=r" (__result)
: "r" (__mem), "rI08" (__val)
: "r0");
return __result;
}
static inline void
__attribute__ ((__unused__))
__atomic_add (volatile _Atomic_word* __mem, int __val)
{
asm("0:\n"
"\tmovli.l\t@%1,r0\n"
"\tadd\t%2,r0\n"
"\tmovco.l\tr0,@%1\n"
"\tbf\t0b"
: "+m" (*__mem)
: "r" (__mem), "rI08" (__val)
: "r0");
}
#else /* !__SH4A__ */
/* This is generic/atomicity.h */
#include <ext/atomicity.h>
#include <ext/concurrence.h>
namespace
{
__gnu_cxx::__mutex atomic_mutex;
} // anonymous namespace
_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
_Atomic_word
__attribute__ ((__unused__))
__exchange_and_add(volatile _Atomic_word* __mem, int __val)
{
__gnu_cxx::__scoped_lock sentry(atomic_mutex);
_Atomic_word __result;
__result = *__mem;
*__mem += __val;
return __result;
}
void
__attribute__ ((__unused__))
__atomic_add(volatile _Atomic_word* __mem, int __val)
{ __exchange_and_add(__mem, __val); }
_GLIBCXX_END_NAMESPACE
#endif /* !__SH4A__ */
#endif /* atomicity.h */

View File

@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -36,4 +36,18 @@
typedef int _Atomic_word;
#endif
#if defined(__sparc_v9__)
// These are necessary under the V9 RMO model, though it is almost never
// used in userspace.
#define _GLIBCXX_READ_MEM_BARRIER \
__asm __volatile ("membar #LoadLoad":::"memory")
#define _GLIBCXX_WRITE_MEM_BARRIER \
__asm __volatile ("membar #StoreStore":::"memory")
#elif defined(__sparc_v8__)
// This is necessary under the PSO model.
#define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("stbar":::"memory")
#endif
#endif

View File

@ -1,6 +1,7 @@
// Low-level functions for atomic operations: Sparc version -*- C++ -*-
// Copyright (C) 1999, 2000, 2001, 2002, 2004 Free Software Foundation, Inc.
// Copyright (C) 1999, 2000, 2001, 2002, 2004, 2005
// 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
@ -15,7 +16,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -27,10 +28,10 @@
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
#include <bits/atomicity.h>
#include <ext/atomicity.h>
_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
namespace __gnu_cxx
{
#ifdef __arch64__
_Atomic_word
__attribute__ ((__unused__))
@ -122,4 +123,5 @@ namespace __gnu_cxx
: "memory");
}
#endif /* __arch32__ */
} // namespace __gnu_cxx
_GLIBCXX_END_NAMESPACE

View File

@ -1,6 +1,7 @@
// Wrapper of C-language FILE struct -*- C++ -*-
// Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2006
// 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
@ -15,7 +16,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -68,9 +69,9 @@
# endif
#endif
#include <limits> // For <off_t>::max() and min()
#include <limits> // For <off_t>::max() and min() and <streamsize>::max()
namespace __gnu_internal
namespace
{
// Map ios_base::openmode flags to a string for use in fopen().
// Table of valid combinations as given in [lib.filebuf.members]/2.
@ -94,6 +95,8 @@ namespace __gnu_internal
case (in ): return "r";
case (in|out ): return "r+";
case (in|out|trunc ): return "w+";
// Extension to Table 92.
case (in|out |app ): return "a+";
case ( out |binary): return "wb";
case ( out |app|binary): return "ab";
@ -101,6 +104,8 @@ namespace __gnu_internal
case (in |binary): return "rb";
case (in|out |binary): return "r+b";
case (in|out|trunc |binary): return "w+b";
// Extension to Table 92.
case (in|out |app|binary): return "a+b";
default: return 0; // invalid
}
@ -172,10 +177,11 @@ namespace __gnu_internal
return __n1 + __n2 - __nleft;
}
#endif
} // namespace __gnu_internal
} // anonymous namespace
_GLIBCXX_BEGIN_NAMESPACE(std)
namespace std
{
// Definitions for __basic_file<char>.
__basic_file<char>::__basic_file(__c_lock* /*__lock*/)
: _M_cfile(NULL), _M_cfile_created(false) { }
@ -208,7 +214,7 @@ namespace std
__basic_file<char>::sys_open(int __fd, ios_base::openmode __mode)
{
__basic_file* __ret = NULL;
const char* __c_mode = __gnu_internal::fopen_mode(__mode);
const char* __c_mode = fopen_mode(__mode);
if (__c_mode && !this->is_open() && (_M_cfile = fdopen(__fd, __c_mode)))
{
char* __buf = NULL;
@ -225,7 +231,7 @@ namespace std
int /*__prot*/)
{
__basic_file* __ret = NULL;
const char* __c_mode = __gnu_internal::fopen_mode(__mode);
const char* __c_mode = fopen_mode(__mode);
if (__c_mode && !this->is_open())
{
#ifdef _GLIBCXX_USE_LFS
@ -290,7 +296,7 @@ namespace std
streamsize
__basic_file<char>::xsputn(const char* __s, streamsize __n)
{ return __gnu_internal::xwrite(this->fd(), __s, __n); }
{ return xwrite(this->fd(), __s, __n); }
streamsize
__basic_file<char>::xsputn_2(const char* __s1, streamsize __n1,
@ -298,13 +304,13 @@ namespace std
{
streamsize __ret = 0;
#ifdef _GLIBCXX_HAVE_WRITEV
__ret = __gnu_internal::xwritev(this->fd(), __s1, __n1, __s2, __n2);
__ret = xwritev(this->fd(), __s1, __n1, __s2, __n2);
#else
if (__n1)
__ret = __gnu_internal::xwrite(this->fd(), __s1, __n1);
__ret = xwrite(this->fd(), __s1, __n1);
if (__ret == __n1)
__ret += __gnu_internal::xwrite(this->fd(), __s2, __n2);
__ret += xwrite(this->fd(), __s2, __n2);
#endif
return __ret;
}
@ -315,8 +321,8 @@ namespace std
#ifdef _GLIBCXX_USE_LFS
return lseek64(this->fd(), __off, __way);
#else
if (__off > std::numeric_limits<off_t>::max()
|| __off < std::numeric_limits<off_t>::min())
if (__off > numeric_limits<off_t>::max()
|| __off < numeric_limits<off_t>::min())
return -1L;
return lseek(this->fd(), __off, __way);
#endif
@ -352,11 +358,24 @@ namespace std
#if defined(_GLIBCXX_HAVE_S_ISREG) || defined(_GLIBCXX_HAVE_S_IFREG)
// Regular files.
#ifdef _GLIBCXX_USE_LFS
struct stat64 __buffer;
const int __err = fstat64(this->fd(), &__buffer);
if (!__err && _GLIBCXX_ISREG(__buffer.st_mode))
{
const streamoff __off = __buffer.st_size - lseek64(this->fd(), 0,
ios_base::cur);
return std::min(__off, streamoff(numeric_limits<streamsize>::max()));
}
#else
struct stat __buffer;
int __ret = fstat(this->fd(), &__buffer);
if (!__ret && _GLIBCXX_ISREG(__buffer.st_mode))
return __buffer.st_size - lseek(this->fd(), 0, ios_base::cur);
const int __err = fstat(this->fd(), &__buffer);
if (!__err && _GLIBCXX_ISREG(__buffer.st_mode))
return __buffer.st_size - lseek(this->fd(), 0, ios_base::cur);
#endif
#endif
return 0;
}
} // namespace std
_GLIBCXX_END_NAMESPACE

View File

@ -1,6 +1,7 @@
// Wrapper of C-language FILE struct -*- C++ -*-
// Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005
// 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
@ -15,7 +16,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -44,8 +45,8 @@
#include <bits/c++config.h>
#include <ios>
namespace std
{
_GLIBCXX_BEGIN_NAMESPACE(std)
// Generic declaration.
template<typename _CharT>
class __basic_file;
@ -105,6 +106,7 @@ namespace std
streamsize
showmanyc();
};
} // namespace std
_GLIBCXX_END_NAMESPACE
#endif

View File

@ -1,6 +1,7 @@
// underlying io library -*- C++ -*-
// Underlying io library details -*- C++ -*-
// Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006
// 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
@ -15,7 +16,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -27,6 +28,11 @@
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/** @file c++io.h
* This is an internal header file, included by other library headers.
* You should not attempt to use it directly.
*/
// c_io_stdio.h - Defines for using "C" stdio.h
#ifndef _C_IO_STDIO_H
@ -36,51 +42,13 @@
#include <cstddef>
#include <bits/gthr.h>
namespace std
{
_GLIBCXX_BEGIN_NAMESPACE(std)
typedef __gthread_mutex_t __c_lock;
// for basic_file.h
typedef FILE __c_file;
// XXX GLIBCXX_ABI Deprecated
// for ios_base.h
struct __ios_flags
{
typedef short __int_type;
static const __int_type _S_boolalpha = 0x0001;
static const __int_type _S_dec = 0x0002;
static const __int_type _S_fixed = 0x0004;
static const __int_type _S_hex = 0x0008;
static const __int_type _S_internal = 0x0010;
static const __int_type _S_left = 0x0020;
static const __int_type _S_oct = 0x0040;
static const __int_type _S_right = 0x0080;
static const __int_type _S_scientific = 0x0100;
static const __int_type _S_showbase = 0x0200;
static const __int_type _S_showpoint = 0x0400;
static const __int_type _S_showpos = 0x0800;
static const __int_type _S_skipws = 0x1000;
static const __int_type _S_unitbuf = 0x2000;
static const __int_type _S_uppercase = 0x4000;
static const __int_type _S_adjustfield = 0x0020 | 0x0080 | 0x0010;
static const __int_type _S_basefield = 0x0002 | 0x0040 | 0x0008;
static const __int_type _S_floatfield = 0x0100 | 0x0004;
// 27.4.2.1.3 Type ios_base::iostate
static const __int_type _S_badbit = 0x01;
static const __int_type _S_eofbit = 0x02;
static const __int_type _S_failbit = 0x04;
// 27.4.2.1.4 Type openmode
static const __int_type _S_app = 0x01;
static const __int_type _S_ate = 0x02;
static const __int_type _S_bin = 0x04;
static const __int_type _S_in = 0x08;
static const __int_type _S_out = 0x10;
static const __int_type _S_trunc = 0x20;
};
}
_GLIBCXX_END_NAMESPACE
#endif

View File

@ -0,0 +1,171 @@
// std::ctype implementation details, GNU version -*- C++ -*-
// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
//
// ISO C++ 14882: 22.2.1.1.2 ctype virtual functions.
//
// Written by Benjamin Kosnik <bkoz@redhat.com>
#include <locale>
#include <bits/c++locale_internal.h>
namespace std
{
// NB: The other ctype<char> specializations are in src/locale.cc and
// various /config/os/* files.
template<>
ctype_byname<char>::ctype_byname(const char* __s, size_t __refs)
: ctype<char>(0, false, __refs)
{
if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0)
{
this->_S_destroy_c_locale(this->_M_c_locale_ctype);
this->_S_create_c_locale(this->_M_c_locale_ctype, __s);
}
}
#ifdef _GLIBCXX_USE_WCHAR_T
ctype<wchar_t>::__wmask_type
ctype<wchar_t>::_M_convert_to_wmask(const mask __m) const
{
// Darwin uses the same codes for 'char' as 'wchar_t', so this routine
// never gets called.
return __m;
};
wchar_t
ctype<wchar_t>::do_toupper(wchar_t __c) const
{ return towupper(__c); }
const wchar_t*
ctype<wchar_t>::do_toupper(wchar_t* __lo, const wchar_t* __hi) const
{
while (__lo < __hi)
{
*__lo = towupper(*__lo);
++__lo;
}
return __hi;
}
wchar_t
ctype<wchar_t>::do_tolower(wchar_t __c) const
{ return towlower(__c); }
const wchar_t*
ctype<wchar_t>::do_tolower(wchar_t* __lo, const wchar_t* __hi) const
{
while (__lo < __hi)
{
*__lo = towlower(*__lo);
++__lo;
}
return __hi;
}
wchar_t
ctype<wchar_t>::
do_widen(char __c) const
{ return _M_widen[static_cast<unsigned char>(__c)]; }
const char*
ctype<wchar_t>::
do_widen(const char* __lo, const char* __hi, wchar_t* __dest) const
{
while (__lo < __hi)
{
*__dest = _M_widen[static_cast<unsigned char>(*__lo)];
++__lo;
++__dest;
}
return __hi;
}
char
ctype<wchar_t>::
do_narrow(wchar_t __wc, char __dfault) const
{
if (__wc >= 0 && __wc < 128 && _M_narrow_ok)
return _M_narrow[__wc];
const int __c = wctob(__wc);
return (__c == EOF ? __dfault : static_cast<char>(__c));
}
const wchar_t*
ctype<wchar_t>::
do_narrow(const wchar_t* __lo, const wchar_t* __hi, char __dfault,
char* __dest) const
{
if (_M_narrow_ok)
while (__lo < __hi)
{
if (*__lo >= 0 && *__lo < 128)
*__dest = _M_narrow[*__lo];
else
{
const int __c = wctob(*__lo);
*__dest = (__c == EOF ? __dfault : static_cast<char>(__c));
}
++__lo;
++__dest;
}
else
while (__lo < __hi)
{
const int __c = wctob(*__lo);
*__dest = (__c == EOF ? __dfault : static_cast<char>(__c));
++__lo;
++__dest;
}
return __hi;
}
void
ctype<wchar_t>::_M_initialize_ctype()
{
wint_t __i;
for (__i = 0; __i < 128; ++__i)
{
const int __c = wctob(__i);
if (__c == EOF)
break;
else
_M_narrow[__i] = static_cast<char>(__c);
}
if (__i == 128)
_M_narrow_ok = true;
else
_M_narrow_ok = false;
for (size_t __i = 0;
__i < sizeof(_M_widen) / sizeof(wint_t); ++__i)
_M_widen[__i] = btowc(__i);
}
#endif // _GLIBCXX_USE_WCHAR_T
}

View File

@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software

View File

@ -1,6 +1,7 @@
// Wrapper for underlying C-language localization -*- C++ -*-
// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006
// 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
@ -15,7 +16,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -42,47 +43,44 @@
#include <ieeefp.h>
#endif
namespace std
{
_GLIBCXX_BEGIN_NAMESPACE(std)
// Specializations for all types used in num_get.
template<>
void
__convert_to_v(const char* __s, float& __v, ios_base::iostate& __err,
const __c_locale&)
{
if (!(__err & ios_base::failbit))
{
// Assumes __s formatted for "C" locale.
char* __old = strdup(setlocale(LC_ALL, NULL));
setlocale(LC_ALL, "C");
char* __sanity;
errno = 0;
// Assumes __s formatted for "C" locale.
errno = 0;
char* __old = strdup(setlocale(LC_ALL, NULL));
setlocale(LC_ALL, "C");
char* __sanity;
#if defined(_GLIBCXX_HAVE_STRTOF)
float __f = strtof(__s, &__sanity);
float __f = strtof(__s, &__sanity);
#else
double __d = strtod(__s, &__sanity);
float __f = static_cast<float>(__d);
double __d = strtod(__s, &__sanity);
float __f = static_cast<float>(__d);
#ifdef _GLIBCXX_HAVE_FINITEF
if (!finitef (__f))
errno = ERANGE;
if (!finitef (__f))
errno = ERANGE;
#elif defined (_GLIBCXX_HAVE_FINITE)
if (!finite (static_cast<double> (__f)))
errno = ERANGE;
if (!finite (static_cast<double> (__f)))
errno = ERANGE;
#elif defined (_GLIBCXX_HAVE_ISINF)
if (isinf (static_cast<double> (__f)))
errno = ERANGE;
if (isinf (static_cast<double> (__f)))
errno = ERANGE;
#else
if (fabs(__d) > numeric_limits<float>::max())
errno = ERANGE;
if (fabs(__d) > numeric_limits<float>::max())
errno = ERANGE;
#endif
#endif
if (__sanity != __s && errno != ERANGE)
__v = __f;
else
__err |= ios_base::failbit;
setlocale(LC_ALL, __old);
free(__old);
}
if (__sanity != __s && errno != ERANGE)
__v = __f;
else
__err |= ios_base::failbit;
setlocale(LC_ALL, __old);
free(__old);
}
template<>
@ -90,21 +88,18 @@ namespace std
__convert_to_v(const char* __s, double& __v, ios_base::iostate& __err,
const __c_locale&)
{
if (!(__err & ios_base::failbit))
{
// Assumes __s formatted for "C" locale.
char* __old = strdup(setlocale(LC_ALL, NULL));
setlocale(LC_ALL, "C");
char* __sanity;
errno = 0;
double __d = strtod(__s, &__sanity);
if (__sanity != __s && errno != ERANGE)
__v = __d;
else
__err |= ios_base::failbit;
setlocale(LC_ALL, __old);
free(__old);
}
// Assumes __s formatted for "C" locale.
errno = 0;
char* __old = strdup(setlocale(LC_ALL, NULL));
setlocale(LC_ALL, "C");
char* __sanity;
double __d = strtod(__s, &__sanity);
if (__sanity != __s && errno != ERANGE)
__v = __d;
else
__err |= ios_base::failbit;
setlocale(LC_ALL, __old);
free(__old);
}
template<>
@ -112,36 +107,27 @@ namespace std
__convert_to_v(const char* __s, long double& __v,
ios_base::iostate& __err, const __c_locale&)
{
if (!(__err & ios_base::failbit))
{
// Assumes __s formatted for "C" locale.
char* __old = strdup(setlocale(LC_ALL, NULL));
setlocale(LC_ALL, "C");
// Assumes __s formatted for "C" locale.
errno = 0;
char* __old = strdup(setlocale(LC_ALL, NULL));
setlocale(LC_ALL, "C");
#if defined(_GLIBCXX_HAVE_STRTOLD)
char* __sanity;
errno = 0;
long double __ld = strtold(__s, &__sanity);
if (__sanity != __s && errno != ERANGE)
__v = __ld;
char* __sanity;
long double __ld = strtold(__s, &__sanity);
if (__sanity != __s && errno != ERANGE)
__v = __ld;
#else
typedef char_traits<char>::int_type int_type;
long double __ld;
errno = 0;
int __p = sscanf(__s, "%Lf", &__ld);
if (errno == ERANGE)
__p = 0;
#ifdef _GLIBCXX_HAVE_FINITEL
if ((__p == 1) && !finitel (__ld))
__p = 0;
typedef char_traits<char>::int_type int_type;
long double __ld;
int __p = sscanf(__s, "%Lf", &__ld);
if (__p && static_cast<int_type>(__p) != char_traits<char>::eof()
&& errno != ERANGE)
__v = __ld;
#endif
if (__p && static_cast<int_type>(__p) != char_traits<char>::eof())
__v = __ld;
#endif
else
__err |= ios_base::failbit;
setlocale(LC_ALL, __old);
free(__old);
}
else
__err |= ios_base::failbit;
setlocale(LC_ALL, __old);
free(__old);
}
void
@ -163,10 +149,11 @@ namespace std
__c_locale
locale::facet::_S_clone_c_locale(__c_locale&)
{ return __c_locale(); }
} // namespace std
namespace __gnu_cxx
{
_GLIBCXX_END_NAMESPACE
_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] =
{
"LC_CTYPE",
@ -176,9 +163,18 @@ namespace __gnu_cxx
"LC_MONETARY",
"LC_MESSAGES"
};
}
namespace std
{
_GLIBCXX_END_NAMESPACE
_GLIBCXX_BEGIN_NAMESPACE(std)
const char* const* const locale::_S_categories = __gnu_cxx::category_names;
} // namespace std
_GLIBCXX_END_NAMESPACE
// XXX GLIBCXX_ABI Deprecated
#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
extern "C" void ldbl (void) __attribute__ ((alias (#dbl)))
_GLIBCXX_LDBL_COMPAT(_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKPi, _ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKPi);
#endif // _GLIBCXX_LONG_DOUBLE_COMPAT

View File

@ -1,6 +1,7 @@
// Wrapper for underlying C-language localization -*- C++ -*-
// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006
// 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
@ -15,7 +16,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -27,6 +28,11 @@
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/** @file c++locale.h
* This is an internal header file, included by other library headers.
* You should not attempt to use it directly.
*/
//
// ISO C++ 14882: 22.8 Standard locale categories.
//
@ -40,47 +46,52 @@
#include <clocale>
#include <cstring> // get std::strlen
#include <cstdio> // get std::snprintf or std::sprintf
#include <cstdio> // get std::vsnprintf or std::vsprintf
#include <cstdarg>
#define _GLIBCXX_NUM_CATEGORIES 0
namespace std
{
_GLIBCXX_BEGIN_NAMESPACE(std)
typedef int* __c_locale;
// Convert numeric value of type _Tv to string and return length of
// string. If snprintf is available use it, otherwise fall back to
// the unsafe sprintf which, in general, can be dangerous and should
// be avoided.
template<typename _Tv>
int
__convert_from_v(char* __out,
const int __size __attribute__((__unused__)),
const char* __fmt,
_Tv __v, const __c_locale&, int __prec)
{
char* __old = std::setlocale(LC_NUMERIC, NULL);
char* __sav = NULL;
if (std::strcmp(__old, "C"))
{
__sav = new char[std::strlen(__old) + 1];
std::strcpy(__sav, __old);
std::setlocale(LC_NUMERIC, "C");
}
// Convert numeric value of type double and long double to string and
// return length of string. If vsnprintf is available use it, otherwise
// fall back to the unsafe vsprintf which, in general, can be dangerous
// and should be avoided.
inline int
__convert_from_v(const __c_locale&, char* __out,
const int __size __attribute__((__unused__)),
const char* __fmt, ...)
{
char* __old = std::setlocale(LC_NUMERIC, NULL);
char* __sav = NULL;
if (std::strcmp(__old, "C"))
{
__sav = new char[std::strlen(__old) + 1];
std::strcpy(__sav, __old);
std::setlocale(LC_NUMERIC, "C");
}
va_list __args;
va_start(__args, __fmt);
#ifdef _GLIBCXX_USE_C99
const int __ret = std::snprintf(__out, __size, __fmt, __prec, __v);
const int __ret = std::vsnprintf(__out, __size, __fmt, __args);
#else
const int __ret = std::sprintf(__out, __fmt, __prec, __v);
const int __ret = std::vsprintf(__out, __fmt, __args);
#endif
va_end(__args);
if (__sav)
{
std::setlocale(LC_NUMERIC, __sav);
delete [] __sav;
}
return __ret;
}
}
if (__sav)
{
std::setlocale(LC_NUMERIC, __sav);
delete [] __sav;
}
return __ret;
}
_GLIBCXX_END_NAMESPACE
#endif

View File

@ -1,6 +1,6 @@
// std::codecvt implementation details, generic version -*- C++ -*-
// Copyright (C) 2002 Free Software Foundation, Inc.
// Copyright (C) 2002, 2005 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
@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -35,8 +35,8 @@
#include <locale>
namespace std
{
_GLIBCXX_BEGIN_NAMESPACE(std)
// Specializations.
#ifdef _GLIBCXX_USE_WCHAR_T
codecvt_base::result
@ -214,4 +214,5 @@ namespace std
return __ret;
}
#endif
}
_GLIBCXX_END_NAMESPACE

View File

@ -1,6 +1,6 @@
// std::collate implementation details, generic version -*- C++ -*-
// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
// Copyright (C) 2001, 2002, 2005 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
@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -35,8 +35,8 @@
#include <locale>
namespace std
{
_GLIBCXX_BEGIN_NAMESPACE(std)
// These are basically extensions to char_traits, and perhaps should
// be put there instead of here.
template<>
@ -69,4 +69,5 @@ namespace std
size_t __n) const
{ return wcsxfrm(__to, __from, __n); }
#endif
}
_GLIBCXX_END_NAMESPACE

View File

@ -1,6 +1,6 @@
// std::ctype implementation details, generic version -*- C++ -*-
// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
// Copyright (C) 2001, 2002, 2003, 2004, 2005 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
@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -35,8 +35,8 @@
#include <locale>
namespace std
{
_GLIBCXX_BEGIN_NAMESPACE(std)
// NB: The other ctype<char> specializations are in src/locale.cc and
// various /config/os/* files.
template<>
@ -91,7 +91,7 @@ namespace std
__ret = wctype("graph");
break;
default:
__ret = 0;
__ret = __wmask_type();
}
return __ret;
};
@ -264,4 +264,5 @@ namespace std
}
}
#endif // _GLIBCXX_USE_WCHAR_T
}
_GLIBCXX_END_NAMESPACE

View File

@ -1,6 +1,6 @@
// std::messages implementation details, generic version -*- C++ -*-
// Copyright (C) 2001 Free Software Foundation, Inc.
// Copyright (C) 2001, 2005 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
@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -35,8 +35,8 @@
#include <locale>
namespace std
{
_GLIBCXX_BEGIN_NAMESPACE(std)
// Specializations
template<>
string
@ -49,4 +49,5 @@ namespace std
messages<wchar_t>::do_get(catalog, int, int, const wstring& __dfault) const
{ return __dfault; }
#endif
}
_GLIBCXX_END_NAMESPACE

View File

@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -27,12 +27,19 @@
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/** @file messages_members.h
* This is an internal header file, included by other library headers.
* You should not attempt to use it directly.
*/
//
// ISO C++ 14882: 22.2.7.1.2 messages virtual functions
//
// Written by Benjamin Kosnik <bkoz@redhat.com>
_GLIBCXX_BEGIN_NAMESPACE(std)
// Non-virtual member functions.
template<typename _CharT>
messages<_CharT>::messages(size_t __refs)
@ -82,3 +89,5 @@
this->_S_create_c_locale(this->_M_c_locale_messages, __s);
}
}
_GLIBCXX_END_NAMESPACE

View File

@ -1,6 +1,6 @@
// std::moneypunct implementation details, generic version -*- C++ -*-
// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
// Copyright (C) 2001, 2002, 2003, 2004, 2005 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
@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -35,8 +35,8 @@
#include <locale>
namespace std
{
_GLIBCXX_BEGIN_NAMESPACE(std)
// Construct and return valid pattern consisting of some combination of:
// space none symbol sign value
money_base::pattern
@ -127,12 +127,9 @@ namespace std
_M_data->_M_pos_format = money_base::_S_default_pattern;
_M_data->_M_neg_format = money_base::_S_default_pattern;
unsigned char uc;
for (size_t __i = 0; __i < money_base::_S_end; ++__i)
{
uc = static_cast<unsigned char>(money_base::_S_atoms[__i]);
_M_data->_M_atoms[__i] = btowc(uc);
}
_M_data->_M_atoms[__i] =
static_cast<wchar_t>(money_base::_S_atoms[__i]);
}
template<>
@ -158,12 +155,9 @@ namespace std
_M_data->_M_pos_format = money_base::_S_default_pattern;
_M_data->_M_neg_format = money_base::_S_default_pattern;
unsigned char uc;
for (size_t __i = 0; __i < money_base::_S_end; ++__i)
{
uc = static_cast<unsigned char>(money_base::_S_atoms[__i]);
_M_data->_M_atoms[__i] = btowc(uc);
}
_M_data->_M_atoms[__i] =
static_cast<wchar_t>(money_base::_S_atoms[__i]);
}
template<>
@ -174,4 +168,5 @@ namespace std
moneypunct<wchar_t, false>::~moneypunct()
{ delete _M_data; }
#endif
}
_GLIBCXX_END_NAMESPACE

View File

@ -1,6 +1,6 @@
// std::numpunct implementation details, generic version -*- C++ -*-
// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
// Copyright (C) 2001, 2002, 2003, 2004, 2005 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
@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -35,8 +35,8 @@
#include <locale>
namespace std
{
_GLIBCXX_BEGIN_NAMESPACE(std)
template<>
void
numpunct<char>::_M_initialize_numpunct(__c_locale)
@ -59,9 +59,9 @@ namespace std
_M_data->_M_atoms_in[__i] = __num_base::_S_atoms_in[__i];
_M_data->_M_truename = "true";
_M_data->_M_truename_size = strlen(_M_data->_M_truename);
_M_data->_M_truename_size = 4;
_M_data->_M_falsename = "false";
_M_data->_M_falsename_size = strlen(_M_data->_M_falsename);
_M_data->_M_falsename_size = 5;
}
template<>
@ -85,27 +85,24 @@ namespace std
_M_data->_M_thousands_sep = L',';
// Use ctype::widen code without the facet...
unsigned char uc;
for (size_t __i = 0; __i < __num_base::_S_oend; ++__i)
{
uc = static_cast<unsigned char>(__num_base::_S_atoms_out[__i]);
_M_data->_M_atoms_out[__i] = btowc(uc);
}
_M_data->_M_atoms_out[__i] =
static_cast<wchar_t>(__num_base::_S_atoms_out[__i]);
for (size_t __i = 0; __i < __num_base::_S_iend; ++__i)
{
uc = static_cast<unsigned char>(__num_base::_S_atoms_in[__i]);
_M_data->_M_atoms_in[__i] = btowc(uc);
}
_M_data->_M_atoms_in[__i] =
static_cast<wchar_t>(__num_base::_S_atoms_in[__i]);
_M_data->_M_truename = L"true";
_M_data->_M_truename_size = wcslen(_M_data->_M_truename);
_M_data->_M_truename_size = 4;
_M_data->_M_falsename = L"false";
_M_data->_M_falsename_size = wcslen(_M_data->_M_falsename);
_M_data->_M_falsename_size = 5;
}
template<>
numpunct<wchar_t>::~numpunct()
{ delete _M_data; }
#endif
}
_GLIBCXX_END_NAMESPACE

View File

@ -1,6 +1,6 @@
// std::time_get, std::time_put implementation, generic version -*- C++ -*-
// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
// Copyright (C) 2001, 2002, 2003, 2004, 2005 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
@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -36,8 +36,8 @@
#include <locale>
namespace std
{
_GLIBCXX_BEGIN_NAMESPACE(std)
template<>
void
__timepunct<char>::
@ -201,4 +201,5 @@ namespace std
_M_data->_M_amonth12 = L"Dec";
}
#endif
}
_GLIBCXX_END_NAMESPACE

View File

@ -1,6 +1,6 @@
// std::time_get, std::time_put implementation, generic version -*- C++ -*-
// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
// Copyright (C) 2001, 2002, 2003, 2004, 2005 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
@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -27,6 +27,11 @@
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/** @file time_members.h
* This is an internal header file, included by other library headers.
* You should not attempt to use it directly.
*/
//
// ISO C++ 14882: 22.2.5.1.2 - time_get functions
// ISO C++ 14882: 22.2.5.3.2 - time_put functions
@ -34,6 +39,8 @@
// Written by Benjamin Kosnik <bkoz@redhat.com>
_GLIBCXX_BEGIN_NAMESPACE(std)
template<typename _CharT>
__timepunct<_CharT>::__timepunct(size_t __refs)
: facet(__refs), _M_data(NULL)
@ -55,10 +62,18 @@
size_t __refs)
: facet(__refs), _M_data(NULL)
{
char* __tmp = new char[std::strlen(__s) + 1];
std::strcpy(__tmp, __s);
const size_t __len = std::strlen(__s) + 1;
char* __tmp = new char[__len];
std::memcpy(__tmp, __s, __len);
_M_name_timepunct = __tmp;
_M_initialize_timepunct(__cloc);
try
{ _M_initialize_timepunct(__cloc); }
catch(...)
{
delete [] _M_name_timepunct;
__throw_exception_again;
}
}
template<typename _CharT>
@ -69,3 +84,5 @@
delete _M_data;
_S_destroy_c_locale(_M_c_locale_timepunct);
}
_GLIBCXX_END_NAMESPACE

View File

@ -1,6 +1,6 @@
// Prototypes for GLIBC thread locale __-prefixed functions -*- C++ -*-
// Copyright (C) 2002, 2004 Free Software Foundation, Inc.
// Copyright (C) 2002, 2004, 2005 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
@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -27,13 +27,18 @@
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/** @file c++locale_internal.h
* This is an internal header file, included by other library headers.
* You should not attempt to use it directly.
*/
// Written by Jakub Jelinek <jakub@redhat.com>
#include <bits/c++config.h>
#include <clocale>
#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
extern "C" __typeof(iswctype_l) __iswctype_l;
extern "C" __typeof(nl_langinfo_l) __nl_langinfo_l;
extern "C" __typeof(strcoll_l) __strcoll_l;
extern "C" __typeof(strftime_l) __strftime_l;
@ -41,15 +46,19 @@ extern "C" __typeof(strtod_l) __strtod_l;
extern "C" __typeof(strtof_l) __strtof_l;
extern "C" __typeof(strtold_l) __strtold_l;
extern "C" __typeof(strxfrm_l) __strxfrm_l;
extern "C" __typeof(newlocale) __newlocale;
extern "C" __typeof(freelocale) __freelocale;
extern "C" __typeof(duplocale) __duplocale;
extern "C" __typeof(uselocale) __uselocale;
#ifdef _GLIBCXX_USE_WCHAR_T
extern "C" __typeof(iswctype_l) __iswctype_l;
extern "C" __typeof(towlower_l) __towlower_l;
extern "C" __typeof(towupper_l) __towupper_l;
extern "C" __typeof(wcscoll_l) __wcscoll_l;
extern "C" __typeof(wcsftime_l) __wcsftime_l;
extern "C" __typeof(wcsxfrm_l) __wcsxfrm_l;
extern "C" __typeof(wctype_l) __wctype_l;
extern "C" __typeof(newlocale) __newlocale;
extern "C" __typeof(freelocale) __freelocale;
extern "C" __typeof(duplocale) __duplocale;
extern "C" __typeof(uselocale) __uselocale;
#endif
#endif // GLIBC 2.3 and later

View File

@ -1,6 +1,7 @@
// Wrapper for underlying C-language localization -*- C++ -*-
// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006
// 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
@ -15,7 +16,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -39,23 +40,20 @@
#include <langinfo.h>
#include <bits/c++locale_internal.h>
namespace std
{
_GLIBCXX_BEGIN_NAMESPACE(std)
template<>
void
__convert_to_v(const char* __s, float& __v, ios_base::iostate& __err,
const __c_locale& __cloc)
{
if (!(__err & ios_base::failbit))
{
char* __sanity;
errno = 0;
float __f = __strtof_l(__s, &__sanity, __cloc);
if (__sanity != __s && errno != ERANGE)
__v = __f;
else
__err |= ios_base::failbit;
}
char* __sanity;
errno = 0;
float __f = __strtof_l(__s, &__sanity, __cloc);
if (__sanity != __s && errno != ERANGE)
__v = __f;
else
__err |= ios_base::failbit;
}
template<>
@ -63,16 +61,13 @@ namespace std
__convert_to_v(const char* __s, double& __v, ios_base::iostate& __err,
const __c_locale& __cloc)
{
if (!(__err & ios_base::failbit))
{
char* __sanity;
errno = 0;
double __d = __strtod_l(__s, &__sanity, __cloc);
if (__sanity != __s && errno != ERANGE)
__v = __d;
else
__err |= ios_base::failbit;
}
char* __sanity;
errno = 0;
double __d = __strtod_l(__s, &__sanity, __cloc);
if (__sanity != __s && errno != ERANGE)
__v = __d;
else
__err |= ios_base::failbit;
}
template<>
@ -80,16 +75,19 @@ namespace std
__convert_to_v(const char* __s, long double& __v, ios_base::iostate& __err,
const __c_locale& __cloc)
{
if (!(__err & ios_base::failbit))
{
char* __sanity;
errno = 0;
long double __ld = __strtold_l(__s, &__sanity, __cloc);
if (__sanity != __s && errno != ERANGE)
__v = __ld;
else
__err |= ios_base::failbit;
}
char* __sanity;
errno = 0;
#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
// Prefer strtold_l, as __strtold_l isn't prototyped in more recent
// glibc versions.
long double __ld = strtold_l(__s, &__sanity, __cloc);
#else
long double __ld = __strtold_l(__s, &__sanity, __cloc);
#endif
if (__sanity != __s && errno != ERANGE)
__v = __ld;
else
__err |= ios_base::failbit;
}
void
@ -108,17 +106,18 @@ namespace std
void
locale::facet::_S_destroy_c_locale(__c_locale& __cloc)
{
if (_S_get_c_locale() != __cloc)
if (__cloc && _S_get_c_locale() != __cloc)
__freelocale(__cloc);
}
__c_locale
locale::facet::_S_clone_c_locale(__c_locale& __cloc)
{ return __duplocale(__cloc); }
} // namespace std
namespace __gnu_cxx
{
_GLIBCXX_END_NAMESPACE
_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] =
{
"LC_CTYPE",
@ -134,9 +133,18 @@ namespace __gnu_cxx
"LC_MEASUREMENT",
"LC_IDENTIFICATION"
};
}
namespace std
{
_GLIBCXX_END_NAMESPACE
_GLIBCXX_BEGIN_NAMESPACE(std)
const char* const* const locale::_S_categories = __gnu_cxx::category_names;
} // namespace std
_GLIBCXX_END_NAMESPACE
// XXX GLIBCXX_ABI Deprecated
#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
extern "C" void ldbl (void) __attribute__ ((alias (#dbl)))
_GLIBCXX_LDBL_COMPAT(_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct, _ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct);
#endif // _GLIBCXX_LONG_DOUBLE_COMPAT

View File

@ -1,6 +1,7 @@
// Wrapper for underlying C-language localization -*- C++ -*-
// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006
// 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
@ -15,7 +16,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -27,6 +28,11 @@
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/** @file c++locale.h
* This is an internal header file, included by other library headers.
* You should not attempt to use it directly.
*/
//
// ISO C++ 14882: 22.8 Standard locale categories.
//
@ -39,61 +45,68 @@
#pragma GCC system_header
#include <cstring> // get std::strlen
#include <cstdio> // get std::snprintf or std::sprintf
#include <cstdio> // get std::vsnprintf or std::vsprintf
#include <clocale>
#include <langinfo.h> // For codecvt
#include <iconv.h> // For codecvt using iconv, iconv_t
#include <libintl.h> // For messages
#include <cstdarg>
#define _GLIBCXX_C_LOCALE_GNU 1
#define _GLIBCXX_NUM_CATEGORIES 6
#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
namespace __gnu_cxx
{
_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
extern "C" __typeof(uselocale) __uselocale;
}
_GLIBCXX_END_NAMESPACE
#endif
namespace std
{
_GLIBCXX_BEGIN_NAMESPACE(std)
typedef __locale_t __c_locale;
// Convert numeric value of type _Tv to string and return length of
// string. If snprintf is available use it, otherwise fall back to
// the unsafe sprintf which, in general, can be dangerous and should
// be avoided.
template<typename _Tv>
int
__convert_from_v(char* __out, const int __size, const char* __fmt,
// Convert numeric value of type double and long double to string and
// return length of string. If vsnprintf is available use it, otherwise
// fall back to the unsafe vsprintf which, in general, can be dangerous
// and should be avoided.
inline int
__convert_from_v(const __c_locale& __cloc __attribute__ ((__unused__)),
char* __out,
const int __size __attribute__ ((__unused__)),
const char* __fmt, ...)
{
#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
_Tv __v, const __c_locale& __cloc, int __prec)
{
__c_locale __old = __gnu_cxx::__uselocale(__cloc);
__c_locale __old = __gnu_cxx::__uselocale(__cloc);
#else
_Tv __v, const __c_locale&, int __prec)
{
char* __old = std::setlocale(LC_ALL, NULL);
char* __sav = new char[std::strlen(__old) + 1];
std::strcpy(__sav, __old);
std::setlocale(LC_ALL, "C");
char* __old = std::setlocale(LC_ALL, NULL);
char* __sav = new char[std::strlen(__old) + 1];
std::strcpy(__sav, __old);
std::setlocale(LC_ALL, "C");
#endif
va_list __args;
va_start(__args, __fmt);
#ifdef _GLIBCXX_USE_C99
const int __ret = std::snprintf(__out, __size, __fmt, __prec, __v);
const int __ret = std::vsnprintf(__out, __size, __fmt, __args);
#else
const int __ret = std::sprintf(__out, __fmt, __prec, __v);
const int __ret = std::vsprintf(__out, __fmt, __args);
#endif
va_end(__args);
#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
__gnu_cxx::__uselocale(__old);
__gnu_cxx::__uselocale(__old);
#else
std::setlocale(LC_ALL, __sav);
delete [] __sav;
std::setlocale(LC_ALL, __sav);
delete [] __sav;
#endif
return __ret;
}
}
return __ret;
}
_GLIBCXX_END_NAMESPACE
#endif

View File

@ -1,6 +1,6 @@
// std::codecvt implementation details, GNU version -*- C++ -*-
// Copyright (C) 2002, 2003 Free Software Foundation, Inc.
// Copyright (C) 2002, 2003, 2005, 2006 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
@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -36,8 +36,8 @@
#include <locale>
#include <bits/c++locale_internal.h>
namespace std
{
_GLIBCXX_BEGIN_NAMESPACE(std)
// Specializations.
#ifdef _GLIBCXX_USE_WCHAR_T
codecvt_base::result
@ -95,14 +95,14 @@ namespace std
{
extern_type __buf[MB_LEN_MAX];
__tmp_state = __state;
const size_t __conv = wcrtomb(__buf, *__from_next, &__tmp_state);
if (__conv > static_cast<size_t>(__to_end - __to_next))
const size_t __conv2 = wcrtomb(__buf, *__from_next, &__tmp_state);
if (__conv2 > static_cast<size_t>(__to_end - __to_next))
__ret = partial;
else
{
memcpy(__to_next, __buf, __conv);
memcpy(__to_next, __buf, __conv2);
__state = __tmp_state;
__to_next += __conv;
__to_next += __conv2;
++__from_next;
}
}
@ -303,4 +303,5 @@ namespace std
return __ret;
}
#endif
}
_GLIBCXX_END_NAMESPACE

View File

@ -1,6 +1,6 @@
// std::collate implementation details, GNU version -*- C++ -*-
// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
// Copyright (C) 2001, 2002, 2005 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
@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -36,8 +36,8 @@
#include <locale>
#include <bits/c++locale_internal.h>
namespace std
{
_GLIBCXX_BEGIN_NAMESPACE(std)
// These are basically extensions to char_traits, and perhaps should
// be put there instead of here.
template<>
@ -70,4 +70,5 @@ namespace std
size_t __n) const
{ return __wcsxfrm_l(__to, __from, __n, _M_c_locale_collate); }
#endif
}
_GLIBCXX_END_NAMESPACE

View File

@ -1,6 +1,6 @@
// std::ctype implementation details, GNU version -*- C++ -*-
// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
// Copyright (C) 2001, 2002, 2003, 2004, 2005 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
@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -36,8 +36,8 @@
#include <locale>
#include <bits/c++locale_internal.h>
namespace std
{
_GLIBCXX_BEGIN_NAMESPACE(std)
// NB: The other ctype<char> specializations are in src/locale.cc and
// various /config/os/* files.
template<>
@ -95,7 +95,7 @@ namespace std
__ret = __wctype_l("graph", _M_c_locale_ctype);
break;
default:
__ret = 0;
__ret = __wmask_type();
}
return __ret;
}
@ -134,20 +134,34 @@ namespace std
ctype<wchar_t>::
do_is(mask __m, wchar_t __c) const
{
// Highest bitmask in ctype_base == 10, but extra in "C"
// library for blank.
// The case of __m == ctype_base::space is particularly important,
// due to its use in many istream functions. Therefore we deal with
// it first, exploiting the knowledge that on GNU systems _M_bit[5]
// is the mask corresponding to ctype_base::space. NB: an encoding
// change would not affect correctness!
bool __ret = false;
const size_t __bitmasksize = 11;
for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur)
if (__m & _M_bit[__bitcur]
&& __iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype))
{
__ret = true;
break;
}
if (__m == _M_bit[5])
__ret = __iswctype_l(__c, _M_wmask[5], _M_c_locale_ctype);
else
{
// Highest bitmask in ctype_base == 10, but extra in "C"
// library for blank.
const size_t __bitmasksize = 11;
for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur)
if (__m & _M_bit[__bitcur])
{
if (__iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype))
{
__ret = true;
break;
}
else if (__m == _M_bit[__bitcur])
break;
}
}
return __ret;
}
const wchar_t*
ctype<wchar_t>::
do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const
@ -286,4 +300,5 @@ namespace std
#endif
}
#endif // _GLIBCXX_USE_WCHAR_T
}
_GLIBCXX_END_NAMESPACE

View File

@ -1,6 +1,6 @@
// std::messages implementation details, GNU version -*- C++ -*-
// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
// Copyright (C) 2001, 2002, 2005 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
@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -36,8 +36,8 @@
#include <locale>
#include <bits/c++locale_internal.h>
namespace std
{
_GLIBCXX_BEGIN_NAMESPACE(std)
// Specializations.
template<>
string
@ -78,4 +78,5 @@ namespace std
# endif
}
#endif
}
_GLIBCXX_END_NAMESPACE

View File

@ -1,6 +1,6 @@
// std::messages implementation details, GNU version -*- C++ -*-
// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
// Copyright (C) 2001, 2002, 2003, 2004, 2005 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
@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -27,28 +27,38 @@
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/** @file messages_members.h
* This is an internal header file, included by other library headers.
* You should not attempt to use it directly.
*/
//
// ISO C++ 14882: 22.2.7.1.2 messages functions
//
// Written by Benjamin Kosnik <bkoz@redhat.com>
_GLIBCXX_BEGIN_NAMESPACE(std)
// Non-virtual member functions.
template<typename _CharT>
messages<_CharT>::messages(size_t __refs)
: facet(__refs), _M_c_locale_messages(_S_get_c_locale()),
_M_name_messages(_S_get_c_name())
_M_name_messages(_S_get_c_name())
{ }
template<typename _CharT>
messages<_CharT>::messages(__c_locale __cloc, const char* __s,
size_t __refs)
: facet(__refs), _M_c_locale_messages(_S_clone_c_locale(__cloc)),
_M_name_messages(__s)
: facet(__refs), _M_c_locale_messages(NULL), _M_name_messages(NULL)
{
char* __tmp = new char[std::strlen(__s) + 1];
std::strcpy(__tmp, __s);
const size_t __len = std::strlen(__s) + 1;
char* __tmp = new char[__len];
std::memcpy(__tmp, __s, __len);
_M_name_messages = __tmp;
// Last to avoid leaking memory if new throws.
_M_c_locale_messages = _S_clone_c_locale(__cloc);
}
template<typename _CharT>
@ -102,3 +112,5 @@
this->_S_create_c_locale(this->_M_c_locale_messages, __s);
}
}
_GLIBCXX_END_NAMESPACE

View File

@ -1,6 +1,6 @@
// std::moneypunct implementation details, GNU version -*- C++ -*-
// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
// Copyright (C) 2001, 2002, 2003, 2004, 2005 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
@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -36,8 +36,8 @@
#include <locale>
#include <bits/c++locale_internal.h>
namespace std
{
_GLIBCXX_BEGIN_NAMESPACE(std)
// Construct and return valid pattern consisting of some combination of:
// space none symbol sign value
money_base::pattern
@ -372,12 +372,9 @@ namespace std
_M_data->_M_neg_format = money_base::_S_default_pattern;
// Use ctype::widen code without the facet...
unsigned char uc;
for (size_t __i = 0; __i < money_base::_S_end; ++__i)
{
uc = static_cast<unsigned char>(money_base::_S_atoms[__i]);
_M_data->_M_atoms[__i] = btowc(uc);
}
_M_data->_M_atoms[__i] =
static_cast<wchar_t>(money_base::_S_atoms[__i]);
}
else
{
@ -390,12 +387,12 @@ namespace std
setlocale(LC_ALL, __name);
#endif
union __s_and_w { const char *__s; unsigned int __w; } __u;
union { char *__s; wchar_t __w; } __u;
__u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc);
_M_data->_M_decimal_point = static_cast<wchar_t>(__u.__w);
_M_data->_M_decimal_point = __u.__w;
__u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc);
_M_data->_M_thousands_sep = static_cast<wchar_t>(__u.__w);
_M_data->_M_thousands_sep = __u.__w;
_M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
_M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
@ -517,12 +514,9 @@ namespace std
_M_data->_M_neg_format = money_base::_S_default_pattern;
// Use ctype::widen code without the facet...
unsigned char uc;
for (size_t __i = 0; __i < money_base::_S_end; ++__i)
{
uc = static_cast<unsigned char>(money_base::_S_atoms[__i]);
_M_data->_M_atoms[__i] = btowc(uc);
}
_M_data->_M_atoms[__i] =
static_cast<wchar_t>(money_base::_S_atoms[__i]);
}
else
{
@ -535,12 +529,12 @@ namespace std
setlocale(LC_ALL, __name);
#endif
union __s_and_w { const char *__s; unsigned int __w; } __u;
union { char *__s; wchar_t __w; } __u;
__u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc);
_M_data->_M_decimal_point = static_cast<wchar_t>(__u.__w);
_M_data->_M_decimal_point = __u.__w;
__u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc);
_M_data->_M_thousands_sep = static_cast<wchar_t>(__u.__w);
_M_data->_M_thousands_sep = __u.__w;
_M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
_M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
@ -658,4 +652,5 @@ namespace std
delete _M_data;
}
#endif
}
_GLIBCXX_END_NAMESPACE

View File

@ -1,6 +1,6 @@
// std::numpunct implementation details, GNU version -*- C++ -*-
// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
// Copyright (C) 2001, 2002, 2003, 2004, 2005 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
@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -36,8 +36,8 @@
#include <locale>
#include <bits/c++locale_internal.h>
namespace std
{
_GLIBCXX_BEGIN_NAMESPACE(std)
template<>
void
numpunct<char>::_M_initialize_numpunct(__c_locale __cloc)
@ -80,10 +80,10 @@ namespace std
// NB: There is no way to extact this info from posix locales.
// _M_truename = __nl_langinfo_l(YESSTR, __cloc);
_M_data->_M_truename = "true";
_M_data->_M_truename_size = strlen(_M_data->_M_truename);
_M_data->_M_truename_size = 4;
// _M_falsename = __nl_langinfo_l(NOSTR, __cloc);
_M_data->_M_falsename = "false";
_M_data->_M_falsename_size = strlen(_M_data->_M_falsename);
_M_data->_M_falsename_size = 5;
}
template<>
@ -108,35 +108,25 @@ namespace std
_M_data->_M_decimal_point = L'.';
_M_data->_M_thousands_sep = L',';
#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
__c_locale __old = __uselocale(_S_get_c_locale());
#endif
// Use ctype::widen code without the facet...
unsigned char uc;
for (size_t __i = 0; __i < __num_base::_S_oend; ++__i)
{
uc = static_cast<unsigned char>(__num_base::_S_atoms_out[__i]);
_M_data->_M_atoms_out[__i] = btowc(uc);
}
_M_data->_M_atoms_out[__i] =
static_cast<wchar_t>(__num_base::_S_atoms_out[__i]);
for (size_t __j = 0; __j < __num_base::_S_iend; ++__j)
{
uc = static_cast<unsigned char>(__num_base::_S_atoms_in[__j]);
_M_data->_M_atoms_in[__j] = btowc(uc);
}
#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
__uselocale(__old);
#endif
_M_data->_M_atoms_in[__j] =
static_cast<wchar_t>(__num_base::_S_atoms_in[__j]);
}
else
{
// Named locale.
union __s_and_w { const char *__s; unsigned int __w; } __u;
// NB: In the GNU model wchar_t is always 32 bit wide.
union { char *__s; wchar_t __w; } __u;
__u.__s = __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc);
_M_data->_M_decimal_point = static_cast<wchar_t>(__u.__w);
_M_data->_M_decimal_point = __u.__w;
__u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc);
_M_data->_M_thousands_sep = static_cast<wchar_t>(__u.__w);
_M_data->_M_thousands_sep = __u.__w;
if (_M_data->_M_thousands_sep == L'\0')
_M_data->_M_grouping = "";
@ -148,14 +138,15 @@ namespace std
// NB: There is no way to extact this info from posix locales.
// _M_truename = __nl_langinfo_l(YESSTR, __cloc);
_M_data->_M_truename = L"true";
_M_data->_M_truename_size = wcslen(_M_data->_M_truename);
_M_data->_M_truename_size = 4;
// _M_falsename = __nl_langinfo_l(NOSTR, __cloc);
_M_data->_M_falsename = L"false";
_M_data->_M_falsename_size = wcslen(_M_data->_M_falsename);
_M_data->_M_falsename_size = 5;
}
template<>
numpunct<wchar_t>::~numpunct()
{ delete _M_data; }
#endif
}
_GLIBCXX_END_NAMESPACE

View File

@ -1,6 +1,6 @@
// std::time_get, std::time_put implementation, GNU version -*- C++ -*-
// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
// Copyright (C) 2001, 2002, 2003, 2004, 2005 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
@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -37,8 +37,8 @@
#include <locale>
#include <bits/c++locale_internal.h>
namespace std
{
_GLIBCXX_BEGIN_NAMESPACE(std)
template<>
void
__timepunct<char>::
@ -137,7 +137,8 @@ namespace std
_M_data->_M_time_format = __nl_langinfo_l(T_FMT, __cloc);
_M_data->_M_time_era_format = __nl_langinfo_l(ERA_T_FMT, __cloc);
_M_data->_M_date_time_format = __nl_langinfo_l(D_T_FMT, __cloc);
_M_data->_M_date_time_era_format = __nl_langinfo_l(ERA_D_T_FMT, __cloc);
_M_data->_M_date_time_era_format = __nl_langinfo_l(ERA_D_T_FMT,
__cloc);
_M_data->_M_am = __nl_langinfo_l(AM_STR, __cloc);
_M_data->_M_pm = __nl_langinfo_l(PM_STR, __cloc);
_M_data->_M_am_pm_format = __nl_langinfo_l(T_FMT_AMPM, __cloc);
@ -284,62 +285,112 @@ namespace std
{
_M_c_locale_timepunct = _S_clone_c_locale(__cloc);
_M_data->_M_date_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WD_FMT, __cloc));
_M_data->_M_date_era_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WERA_D_FMT, __cloc));
_M_data->_M_time_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WT_FMT, __cloc));
_M_data->_M_time_era_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WERA_T_FMT, __cloc));
_M_data->_M_date_time_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WD_T_FMT, __cloc));
_M_data->_M_date_time_era_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WERA_D_T_FMT, __cloc));
_M_data->_M_am = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WAM_STR, __cloc));
_M_data->_M_pm = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WPM_STR, __cloc));
_M_data->_M_am_pm_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WT_FMT_AMPM, __cloc));
union { char *__s; wchar_t *__w; } __u;
__u.__s = __nl_langinfo_l(_NL_WD_FMT, __cloc);
_M_data->_M_date_format = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WERA_D_FMT, __cloc);
_M_data->_M_date_era_format = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WT_FMT, __cloc);
_M_data->_M_time_format = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WERA_T_FMT, __cloc);
_M_data->_M_time_era_format = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WD_T_FMT, __cloc);
_M_data->_M_date_time_format = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WERA_D_T_FMT, __cloc);
_M_data->_M_date_time_era_format = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WAM_STR, __cloc);
_M_data->_M_am = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WPM_STR, __cloc);
_M_data->_M_pm = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WT_FMT_AMPM, __cloc);
_M_data->_M_am_pm_format = __u.__w;
// Day names, starting with "C"'s Sunday.
_M_data->_M_day1 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_1, __cloc));
_M_data->_M_day2 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_2, __cloc));
_M_data->_M_day3 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_3, __cloc));
_M_data->_M_day4 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_4, __cloc));
_M_data->_M_day5 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_5, __cloc));
_M_data->_M_day6 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_6, __cloc));
_M_data->_M_day7 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_7, __cloc));
__u.__s = __nl_langinfo_l(_NL_WDAY_1, __cloc);
_M_data->_M_day1 = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WDAY_2, __cloc);
_M_data->_M_day2 = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WDAY_3, __cloc);
_M_data->_M_day3 = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WDAY_4, __cloc);
_M_data->_M_day4 = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WDAY_5, __cloc);
_M_data->_M_day5 = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WDAY_6, __cloc);
_M_data->_M_day6 = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WDAY_7, __cloc);
_M_data->_M_day7 = __u.__w;
// Abbreviated day names, starting with "C"'s Sun.
_M_data->_M_aday1 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_1, __cloc));
_M_data->_M_aday2 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_2, __cloc));
_M_data->_M_aday3 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_3, __cloc));
_M_data->_M_aday4 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_4, __cloc));
_M_data->_M_aday5 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_5, __cloc));
_M_data->_M_aday6 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_6, __cloc));
_M_data->_M_aday7 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_7, __cloc));
__u.__s = __nl_langinfo_l(_NL_WABDAY_1, __cloc);
_M_data->_M_aday1 = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WABDAY_2, __cloc);
_M_data->_M_aday2 = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WABDAY_3, __cloc);
_M_data->_M_aday3 = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WABDAY_4, __cloc);
_M_data->_M_aday4 = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WABDAY_5, __cloc);
_M_data->_M_aday5 = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WABDAY_6, __cloc);
_M_data->_M_aday6 = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WABDAY_7, __cloc);
_M_data->_M_aday7 = __u.__w;
// Month names, starting with "C"'s January.
_M_data->_M_month01 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_1, __cloc));
_M_data->_M_month02 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_2, __cloc));
_M_data->_M_month03 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_3, __cloc));
_M_data->_M_month04 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_4, __cloc));
_M_data->_M_month05 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_5, __cloc));
_M_data->_M_month06 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_6, __cloc));
_M_data->_M_month07 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_7, __cloc));
_M_data->_M_month08 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_8, __cloc));
_M_data->_M_month09 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_9, __cloc));
_M_data->_M_month10 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_10, __cloc));
_M_data->_M_month11 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_11, __cloc));
_M_data->_M_month12 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_12, __cloc));
__u.__s = __nl_langinfo_l(_NL_WMON_1, __cloc);
_M_data->_M_month01 = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WMON_2, __cloc);
_M_data->_M_month02 = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WMON_3, __cloc);
_M_data->_M_month03 = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WMON_4, __cloc);
_M_data->_M_month04 = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WMON_5, __cloc);
_M_data->_M_month05 = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WMON_6, __cloc);
_M_data->_M_month06 = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WMON_7, __cloc);
_M_data->_M_month07 = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WMON_8, __cloc);
_M_data->_M_month08 = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WMON_9, __cloc);
_M_data->_M_month09 = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WMON_10, __cloc);
_M_data->_M_month10 = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WMON_11, __cloc);
_M_data->_M_month11 = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WMON_12, __cloc);
_M_data->_M_month12 = __u.__w;
// Abbreviated month names, starting with "C"'s Jan.
_M_data->_M_amonth01 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_1, __cloc));
_M_data->_M_amonth02 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_2, __cloc));
_M_data->_M_amonth03 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_3, __cloc));
_M_data->_M_amonth04 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_4, __cloc));
_M_data->_M_amonth05 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_5, __cloc));
_M_data->_M_amonth06 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_6, __cloc));
_M_data->_M_amonth07 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_7, __cloc));
_M_data->_M_amonth08 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_8, __cloc));
_M_data->_M_amonth09 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_9, __cloc));
_M_data->_M_amonth10 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_10, __cloc));
_M_data->_M_amonth11 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_11, __cloc));
_M_data->_M_amonth12 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_12, __cloc));
__u.__s = __nl_langinfo_l(_NL_WABMON_1, __cloc);
_M_data->_M_amonth01 = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WABMON_2, __cloc);
_M_data->_M_amonth02 = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WABMON_3, __cloc);
_M_data->_M_amonth03 = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WABMON_4, __cloc);
_M_data->_M_amonth04 = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WABMON_5, __cloc);
_M_data->_M_amonth05 = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WABMON_6, __cloc);
_M_data->_M_amonth06 = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WABMON_7, __cloc);
_M_data->_M_amonth07 = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WABMON_8, __cloc);
_M_data->_M_amonth08 = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WABMON_9, __cloc);
_M_data->_M_amonth09 = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WABMON_10, __cloc);
_M_data->_M_amonth10 = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WABMON_11, __cloc);
_M_data->_M_amonth11 = __u.__w;
__u.__s = __nl_langinfo_l(_NL_WABMON_12, __cloc);
_M_data->_M_amonth12 = __u.__w;
}
}
#endif
}
_GLIBCXX_END_NAMESPACE

View File

@ -1,6 +1,6 @@
// std::time_get, std::time_put implementation, GNU version -*- C++ -*-
// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
// Copyright (C) 2001, 2002, 2003, 2004, 2005 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
@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -27,6 +27,11 @@
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/** @file time_members.h
* This is an internal header file, included by other library headers.
* You should not attempt to use it directly.
*/
//
// ISO C++ 14882: 22.2.5.1.2 - time_get functions
// ISO C++ 14882: 22.2.5.3.2 - time_put functions
@ -34,28 +39,38 @@
// Written by Benjamin Kosnik <bkoz@redhat.com>
_GLIBCXX_BEGIN_NAMESPACE(std)
template<typename _CharT>
__timepunct<_CharT>::__timepunct(size_t __refs)
: facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL),
_M_name_timepunct(_S_get_c_name())
_M_name_timepunct(_S_get_c_name())
{ _M_initialize_timepunct(); }
template<typename _CharT>
__timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs)
: facet(__refs), _M_data(__cache), _M_c_locale_timepunct(NULL),
_M_name_timepunct(_S_get_c_name())
_M_name_timepunct(_S_get_c_name())
{ _M_initialize_timepunct(); }
template<typename _CharT>
__timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s,
size_t __refs)
: facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL),
_M_name_timepunct(__s)
_M_name_timepunct(NULL)
{
char* __tmp = new char[std::strlen(__s) + 1];
std::strcpy(__tmp, __s);
const size_t __len = std::strlen(__s) + 1;
char* __tmp = new char[__len];
std::memcpy(__tmp, __s, __len);
_M_name_timepunct = __tmp;
_M_initialize_timepunct(__cloc);
try
{ _M_initialize_timepunct(__cloc); }
catch(...)
{
delete [] _M_name_timepunct;
__throw_exception_again;
}
}
template<typename _CharT>
@ -66,3 +81,5 @@
delete _M_data;
_S_destroy_c_locale(_M_c_locale_timepunct);
}
_GLIBCXX_END_NAMESPACE

View File

@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software

View File

@ -1,6 +1,6 @@
// Wrapper for underlying C-language localization -*- C++ -*-
// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
// Copyright (C) 2001, 2002, 2005 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
@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -27,6 +27,11 @@
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/** @file c++locale.h
* This is an internal header file, included by other library headers.
* You should not attempt to use it directly.
*/
//
// ISO C++ 14882: 22.8 Standard locale categories.
//
@ -38,7 +43,9 @@
#include <iconv.h> // For codecvt using iconv, iconv_t
#include <nl_types.h> // For messages
namespace std
{
_GLIBCXX_BEGIN_NAMESPACE(std)
typedef int* __c_locale;
}
_GLIBCXX_END_NAMESPACE

View File

@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software

View File

@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -27,12 +27,19 @@
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/** @file messages_members.h
* This is an internal header file, included by other library headers.
* You should not attempt to use it directly.
*/
//
// ISO C++ 14882: 22.2.7.1.2 messages virtual functions
//
// Written by Benjamin Kosnik <bkoz@redhat.com>
_GLIBCXX_BEGIN_NAMESPACE(std)
// Non-virtual member functions.
template<typename _CharT>
typename messages<_CharT>::catalog
@ -67,4 +74,4 @@
messages<_CharT>::do_close(catalog __c) const
{ catclose(reinterpret_cast<nl_catd>(__c)); }
_GLIBCXX_END_NAMESPACE

View File

@ -0,0 +1,43 @@
// Low-level type for atomic operations -*- C++ -*-
// Copyright (C) 2004 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
#ifndef _GLIBCXX_ATOMIC_WORD_H
#define _GLIBCXX_ATOMIC_WORD_H 1
typedef int _Atomic_word;
#ifdef _ARCH_PPC
#define _GLIBCXX_READ_MEM_BARRIER __asm __volatile ("isync":::"memory")
#define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("sync":::"memory")
#else
#define _GLIBCXX_READ_MEM_BARRIER __asm __volatile ("":::"memory")
#define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("":::"memory")
#endif
#endif

View File

@ -1,6 +1,6 @@
// Low-level functions for atomic operations: AIX version -*- C++ -*-
// Copyright (C) 2000, 2001, 2004 Free Software Foundation, Inc.
// Copyright (C) 2000, 2001, 2004, 2005 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
@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -27,7 +27,7 @@
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
#include <bits/atomicity.h>
#include <ext/atomicity.h>
/* We cannot use the cpu/powerpc/bits/atomicity.h inline assembly
definitions for these operations since they depend on operations
@ -43,19 +43,16 @@ extern "C"
#include <sys/atomic_op.h>
}
namespace __gnu_cxx
{
_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
_Atomic_word
__attribute__ ((__unused__))
__exchange_and_add (volatile _Atomic_word* __mem, int __val)
{
return ::fetch_and_add (const_cast<atomic_p>(__mem), __val);
}
{ return ::fetch_and_add(const_cast<atomic_p>(__mem), __val); }
void
__attribute__ ((__unused__))
__atomic_add (volatile _Atomic_word* __mem, int __val)
{
(void) ::fetch_and_add (const_cast<atomic_p>(__mem), __val);
}
} // namespace __gnu_cxx
{ (void) ::fetch_and_add(const_cast<atomic_p>(__mem), __val); }
_GLIBCXX_END_NAMESPACE

View File

@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -33,6 +33,9 @@
// Information as gleaned from /usr/include/ctype.h
_GLIBCXX_BEGIN_NAMESPACE(std)
/// @brief Base class for ctype.
struct ctype_base
{
// Non-standard typedefs.
@ -53,3 +56,5 @@
static const mask punct = _ISPUNCT;
static const mask alnum = _ISALPHA | _ISDIGIT;
};
_GLIBCXX_END_NAMESPACE

View File

@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -26,14 +26,21 @@
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/** @file ctype_inline.h
* This is an internal header file, included by other library headers.
* You should not attempt to use it directly.
*/
//
// ISO C++ 14882: 22.1 Locales
//
// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
// functions go in ctype.cc
_GLIBCXX_BEGIN_NAMESPACE(std)
bool
ctype<char>::
is(mask __m, char __c) const
@ -66,11 +73,4 @@
return __low;
}
_GLIBCXX_END_NAMESPACE

View File

@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -27,10 +27,15 @@
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/** @file ctype_noninline.h
* This is an internal header file, included by other library headers.
* You should not attempt to use it directly.
*/
//
// ISO C++ 14882: 22.1 Locales
//
// Information as gleaned from /usr/include/ctype.h
const ctype_base::mask*

View File

@ -1,6 +1,6 @@
// Specific definitions for AIX -*- C++ -*-
// Copyright (C) 2000, 2002 Free Software Foundation, Inc.
// Copyright (C) 2000, 2002, 2005 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
@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -27,17 +27,17 @@
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/** @file os_defines.h
* This is an internal header file, included by other library headers.
* You should not attempt to use it directly.
*/
#ifndef _GLIBCXX_OS_DEFINES
#define _GLIBCXX_OS_DEFINES
// System-specific #define, typedefs, corrections, etc, go here. This
// file will come before all others.
#undef _XOPEN_SOURCE
#define _XOPEN_SOURCE 500
#undef _XOPEN_SOURCE_EXTENDED
#define _XOPEN_SOURCE_EXTENDED 1
// off64_t
#ifndef _LARGE_FILE_API
#define _LARGE_FILE_API
@ -48,11 +48,4 @@
#define _ALL_SOURCE
#endif
#define __off_t off_t
#define __off64_t off64_t
#define __ssize_t ssize_t
#undef _G_USING_THUNKS
#define _G_USING_THUNKS 0
#endif

View File

@ -0,0 +1,76 @@
// Locale support -*- C++ -*-
// Copyright (C) 2000, 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
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
//
// ISO C++ 14882: 22.1 Locales
//
// Information as gleaned from /usr/include/ctype.h on FreeBSD 3.4,
// 4.0 and all versions of the CVS managed file at:
// :pserver:anoncvs@anoncvs.freebsd.org:/home/ncvs/src/include/ctype.h
_GLIBCXX_BEGIN_NAMESPACE(std)
/// @brief Base class for ctype.
struct ctype_base
{
// Non-standard typedefs.
typedef const int* __to_type;
typedef unsigned long mask;
#ifdef _CTYPE_S
// FreeBSD 4.0 uses this style of define.
static const mask upper = _CTYPE_U;
static const mask lower = _CTYPE_L;
static const mask alpha = _CTYPE_A;
static const mask digit = _CTYPE_D;
static const mask xdigit = _CTYPE_X;
static const mask space = _CTYPE_S;
static const mask print = _CTYPE_R;
static const mask graph = _CTYPE_A | _CTYPE_D | _CTYPE_P;
static const mask cntrl = _CTYPE_C;
static const mask punct = _CTYPE_P;
static const mask alnum = _CTYPE_A | _CTYPE_D;
#else
// Older versions, including Free BSD 3.4, use this style of define.
static const mask upper = _U;
static const mask lower = _L;
static const mask alpha = _A;
static const mask digit = _D;
static const mask xdigit = _X;
static const mask space = _S;
static const mask print = _R;
static const mask graph = _A | _D | _P;
static const mask cntrl = _C;
static const mask punct = _P;
static const mask alnum = _A | _D;
#endif
};
_GLIBCXX_END_NAMESPACE

View File

@ -0,0 +1,152 @@
// Locale support -*- C++ -*-
// Copyright (C) 2000, 2003, 2004 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/** @file ctype_inline.h
* This is an internal header file, included by other library headers.
* You should not attempt to use it directly.
*/
//
// ISO C++ 14882: 22.1 Locales
//
// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
// functions go in ctype.cc
_GLIBCXX_BEGIN_NAMESPACE(std)
bool
ctype<char>::
is(mask __m, char __c) const
{
if (_M_table)
return _M_table[static_cast<unsigned char>(__c)] & __m;
else
return __istype(__c, __m);
}
const char*
ctype<char>::
is(const char* __low, const char* __high, mask* __vec) const
{
if (_M_table)
while (__low < __high)
*__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
else
for (;__low < __high; ++__vec, ++__low)
{
#if defined (_CTYPE_S) || defined (__istype)
*__vec = __maskrune (*__low, upper | lower | alpha | digit | xdigit
| space | print | graph | cntrl | punct | alnum);
#else
mask __m = 0;
if (this->is(upper, *__low)) __m |= upper;
if (this->is(lower, *__low)) __m |= lower;
if (this->is(alpha, *__low)) __m |= alpha;
if (this->is(digit, *__low)) __m |= digit;
if (this->is(xdigit, *__low)) __m |= xdigit;
if (this->is(space, *__low)) __m |= space;
if (this->is(print, *__low)) __m |= print;
if (this->is(graph, *__low)) __m |= graph;
if (this->is(cntrl, *__low)) __m |= cntrl;
if (this->is(punct, *__low)) __m |= punct;
// Do not include explicit line for alnum mask since it is a
// pure composite of masks on FreeBSD.
*__vec = __m;
#endif
}
return __high;
}
const char*
ctype<char>::
scan_is(mask __m, const char* __low, const char* __high) const
{
if (_M_table)
while (__low < __high
&& !(_M_table[static_cast<unsigned char>(*__low)] & __m))
++__low;
else
while (__low < __high && !this->is(__m, *__low))
++__low;
return __low;
}
const char*
ctype<char>::
scan_not(mask __m, const char* __low, const char* __high) const
{
if (_M_table)
while (__low < __high
&& (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0)
++__low;
else
while (__low < __high && this->is(__m, *__low) != 0)
++__low;
return __low;
}
#ifdef _GLIBCXX_USE_WCHAR_T
inline bool
ctype<wchar_t>::
do_is(mask __m, wchar_t __c) const
{
return __istype (__c, __m);
}
inline const wchar_t*
ctype<wchar_t>::
do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const
{
for (; __lo < __hi; ++__vec, ++__lo)
*__vec = __maskrune (*__lo, upper | lower | alpha | digit | xdigit
| space | print | graph | cntrl | punct | alnum);
return __hi;
}
inline const wchar_t*
ctype<wchar_t>::
do_scan_is(mask __m, const wchar_t* __lo, const wchar_t* __hi) const
{
while (__lo < __hi && ! __istype (*__lo, __m))
++__lo;
return __lo;
}
inline const wchar_t*
ctype<wchar_t>::
do_scan_not(mask __m, const char_type* __lo, const char_type* __hi) const
{
while (__lo < __hi && __istype (*__lo, __m))
++__lo;
return __lo;
}
#endif
_GLIBCXX_END_NAMESPACE

View File

@ -0,0 +1,96 @@
// Locale support -*- C++ -*-
// Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/** @file ctype_noninline.h
* This is an internal header file, included by other library headers.
* You should not attempt to use it directly.
*/
//
// ISO C++ 14882: 22.1 Locales
//
// Information as gleaned from /usr/include/ctype.h
const ctype_base::mask*
ctype<char>::classic_table() throw()
{ return 0; }
ctype<char>::ctype(__c_locale, const mask* __table, bool __del,
size_t __refs)
: facet(__refs), _M_del(__table != 0 && __del),
_M_toupper(NULL), _M_tolower(NULL),
_M_table(__table ? __table : classic_table())
{
memset(_M_widen, 0, sizeof(_M_widen));
_M_widen_ok = 0;
memset(_M_narrow, 0, sizeof(_M_narrow));
_M_narrow_ok = 0;
}
ctype<char>::ctype(const mask* __table, bool __del, size_t __refs)
: facet(__refs), _M_del(__table != 0 && __del),
_M_toupper(NULL), _M_tolower(NULL),
_M_table(__table ? __table : classic_table())
{
memset(_M_widen, 0, sizeof(_M_widen));
_M_widen_ok = 0;
memset(_M_narrow, 0, sizeof(_M_narrow));
_M_narrow_ok = 0;
}
char
ctype<char>::do_toupper(char __c) const
{ return ::toupper((int) __c); }
const char*
ctype<char>::do_toupper(char* __low, const char* __high) const
{
while (__low < __high)
{
*__low = ::toupper((int) *__low);
++__low;
}
return __high;
}
char
ctype<char>::do_tolower(char __c) const
{ return ::tolower((int) __c); }
const char*
ctype<char>::do_tolower(char* __low, const char* __high) const
{
while (__low < __high)
{
*__low = ::tolower((int) *__low);
++__low;
}
return __high;
}

View File

@ -0,0 +1,47 @@
// Specific definitions for Darwin -*- C++ -*-
// Copyright (C) 2004 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
#ifndef _GLIBCXX_OS_DEFINES
#define _GLIBCXX_OS_DEFINES 1
// System-specific #define, typedefs, corrections, etc, go here. This
// file will come before all others.
/* Darwin has the pthread routines in libSystem, which every program
links to, so there's no need for weak-ness for that. */
#define _GLIBCXX_GTHREAD_USE_WEAK 0
// On Darwin, in order to enable overriding of operator new and delete,
// GCC makes the definition of these functions weak, relies on the
// loader to implement weak semantics properly, and uses
// -flat_namespace to work around the way that it doesn't.
#define _GLIBCXX_WEAK_DEFINITION __attribute__ ((weak))
#endif

View File

@ -0,0 +1 @@
__eprintf;

View File

@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -35,6 +35,9 @@
// 4.0 and all versions of the CVS managed file at:
// :pserver:anoncvs@anoncvs.freebsd.org:/home/ncvs/src/include/ctype.h
_GLIBCXX_BEGIN_NAMESPACE(std)
/// @brief Base class for ctype.
struct ctype_base
{
// Non-standard typedefs.
@ -72,5 +75,4 @@
#endif
};
_GLIBCXX_END_NAMESPACE

View File

@ -1,6 +1,6 @@
// Locale support -*- C++ -*-
// Copyright (C) 2000, 2003 Free Software Foundation, Inc.
// Copyright (C) 2000, 2003, 2004, 2005 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
@ -15,7 +15,7 @@
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
// As a special exception, you may use this file as part of a free software
@ -27,6 +27,11 @@
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/** @file ctype_inline.h
* This is an internal header file, included by other library headers.
* You should not attempt to use it directly.
*/
//
// ISO C++ 14882: 22.1 Locales
//
@ -34,6 +39,8 @@
// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
// functions go in ctype.cc
_GLIBCXX_BEGIN_NAMESPACE(std)
bool
ctype<char>::
is(mask __m, char __c) const
@ -104,3 +111,42 @@
++__low;
return __low;
}
#ifdef _GLIBCXX_USE_WCHAR_T
inline bool
ctype<wchar_t>::
do_is(mask __m, wchar_t __c) const
{
return __istype (__c, __m);
}
inline const wchar_t*
ctype<wchar_t>::
do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const
{
for (; __lo < __hi; ++__vec, ++__lo)
*__vec = __maskrune (*__lo, upper | lower | alpha | digit | xdigit
| space | print | graph | cntrl | punct | alnum);
return __hi;
}
inline const wchar_t*
ctype<wchar_t>::
do_scan_is(mask __m, const wchar_t* __lo, const wchar_t* __hi) const
{
while (__lo < __hi && ! __istype (*__lo, __m))
++__lo;
return __lo;
}
inline const wchar_t*
ctype<wchar_t>::
do_scan_not(mask __m, const char_type* __lo, const char_type* __hi) const
{
while (__lo < __hi && __istype (*__lo, __m))
++__lo;
return __lo;
}
#endif
_GLIBCXX_END_NAMESPACE

Some files were not shown because too many files have changed in this diff Show More