From 2dfb3a5ed0c92490cc56922c2e28028930bb1632 Mon Sep 17 00:00:00 2001 From: Alexander Kabaev Date: Thu, 10 Oct 2002 04:40:44 +0000 Subject: [PATCH] Gcc 3.2.1-prerelease C++ support bits from the FSF anoncvs repo gcc-3_2-branch on October 9th 2002 20:15 EST. --- contrib/libstdc++/ChangeLog | 61 ++++++++++++++++++ contrib/libstdc++/Makefile.am | 21 +++++- contrib/libstdc++/Makefile.in | 64 ++++++------------- contrib/libstdc++/config/abi/extract_symvers | 64 +++++++++++++++++++ .../config/locale/gnu/codecvt_members.cc | 4 +- contrib/libstdc++/include/bits/c++config | 2 +- contrib/libstdc++/include/bits/codecvt.h | 2 +- .../libstdc++/include/bits/locale_facets.tcc | 4 +- contrib/libstdc++/include/bits/stl_deque.h | 2 +- contrib/libstdc++/include/ext/stl_rope.h | 8 +-- 10 files changed, 176 insertions(+), 56 deletions(-) create mode 100755 contrib/libstdc++/config/abi/extract_symvers diff --git a/contrib/libstdc++/ChangeLog b/contrib/libstdc++/ChangeLog index 85ef8f782c3d..9f9546dfd3e1 100644 --- a/contrib/libstdc++/ChangeLog +++ b/contrib/libstdc++/ChangeLog @@ -1,3 +1,64 @@ +2002-10-07 Kaveh R. Ghazi + + * Makefile.am (all-multi): Fix multilib parallel build. + +2002-10-01 Phil Edwards + + * Makefile.am (check-abi): Add @ to rule. + * Makefile.in: Regenerated. + +2002-10-01 Phil Edwards + + PR libstdc++/8096 + * include/bits/stl_deque.h (deque::_M_range_check): Throw + out_of_range, not range_error. + +2002-09-28 Paolo Carlini + + * include/bits/locale_facets.tcc (num_put::_M_widen_int): + Deal correctly with grouped, showbased (oct or hex) zero. + * testsuite/22_locale/num_put_members_char.cc: Add test05. + * testsuite/22_locale/num_put_members_wchar_t.cc: Ditto. + +2002-09-25 Phil Edwards + + Bulk documentation merge (copy) from trunk. + * docs/doxygen/run_doxygen, docs/html/Makefile, docs/html/abi.txt, + docs/html/configopts.html, docs/html/documentation.html, + docs/html/explanations.html, docs/html/install.html, + docs/html/makedoc.awk, docs/html/17_intro/C++STYLE, + docs/html/17_intro/RELEASE-NOTES, docs/html/17_intro/contribute.html, + docs/html/17_intro/howto.html, docs/html/17_intro/license.html, + docs/html/18_support/howto.html, docs/html/19_diagnostics/howto.html, + docs/html/20_util/howto.html, docs/html/21_strings/howto.html, + docs/html/22_locale/codecvt.html, docs/html/22_locale/ctype.html, + docs/html/22_locale/howto.html, docs/html/22_locale/locale.html, + docs/html/22_locale/messages.html, docs/html/23_containers/howto.html, + docs/html/24_iterators/howto.html, docs/html/25_algorithms/howto.html, + docs/html/26_numerics/howto.html, docs/html/27_io/howto.html, + docs/html/ext/howto.html, docs/html/ext/sgiexts.html, + docs/html/faq/index.html, docs/html/faq/index.txt: Merge from trunk. + +2002-09-21 Phil Edwards + + * testsuite/abi_check.cc: Pull shell fragments out into... + * config/abi/extract_symvers: ...here. New file. + * Makefile.am (check_abi): Change to match. + (new-abi-baseline): New target. + * Makefile.in: Regenerated. + +2002-09-16 Loren J. Rittle + + libstdc++/7922 + * include/ext/stl_rope.h (rope<>): Qualify dependent names + with `typename'. + +2002-09-16 Benjamin Kosnik + + * include/bits/codecvt.h: Remove __s. + * config/locale/gnu/codecvt_members.cc: Remove _M_c_locale_codecvt + usage, substitute _S_c_locale. + 2002-09-12 Benjamin Kosnik * libmath/Makefile.am (LIBTOOL): Use --tag CC always for this diff --git a/contrib/libstdc++/Makefile.am b/contrib/libstdc++/Makefile.am index 98fe0989d30f..d41247763457 100644 --- a/contrib/libstdc++/Makefile.am +++ b/contrib/libstdc++/Makefile.am @@ -44,10 +44,25 @@ check-script-install: $(top_builddir)/mkcheck cd testsuite; \ @glibcpp_builddir@/mkcheck 1) +# Use 'new-abi-baseline' to create an initial symbol file. Then run +# 'check-abi' to test for changes against that file. baseline_file = @baseline_file@ check-abi: $(top_builddir)/testsuite/abi_check - -(cd testsuite; \ - ./abi_check ${baseline_file}) + -@(cd testsuite; \ + ${top_srcdir}/config/abi/extract_symvers \ + ../src/.libs/libstdc++.so \ + ./current_symbols.txt; \ + ./abi_check --check ./current_symbols.txt ${baseline_file}) + +new-abi-baseline: + -@(output=${baseline_file}; \ + if test -f $${output}; then \ + output=$${output}.new; \ + t=`echo $${output} | sed 's=.*config/abi/=='`; \ + echo "Baseline file already exists, writing to $${t} instead."; \ + fi; \ + ${top_srcdir}/config/abi/extract_symvers \ + src/.libs/libstdc++.so $${output}) # These rules are messy, but are hella worth it. doxygen: @@ -93,7 +108,7 @@ distclean-am: distclean-multi maintainer-clean-am: maintainer-clean-multi all-multi: - $(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do + : $(MAKE) ; exec $(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do install-multi: $(MULTIDO) $(AM_MAKEFLAGS) DO=install multi-do mostlyclean-multi: diff --git a/contrib/libstdc++/Makefile.in b/contrib/libstdc++/Makefile.in index 88aadbc0f3d0..718150791b1d 100644 --- a/contrib/libstdc++/Makefile.in +++ b/contrib/libstdc++/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am +# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation @@ -139,6 +139,8 @@ SUBDIRS = include libio libmath libsupc++ src po testsuite mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs +# Use 'new-abi-baseline' to create an initial symbol file. Then run +# 'check-abi' to test for changes against that file. baseline_file = @baseline_file@ # Multilib support. @@ -155,44 +157,7 @@ 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. -AM_MAKEFLAGS = \ - "AR_FLAGS=$(AR_FLAGS)" \ - "CC_FOR_BUILD=$(CC_FOR_BUILD)" \ - "CC_FOR_TARGET=$(CC_FOR_TARGET)" \ - "CFLAGS=$(CFLAGS)" \ - "CXXFLAGS=$(CXXFLAGS)" \ - "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \ - "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \ - "INSTALL=$(INSTALL)" \ - "INSTALL_DATA=$(INSTALL_DATA)" \ - "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ - "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \ - "LDFLAGS=$(LDFLAGS)" \ - "LIBCFLAGS=$(LIBCFLAGS)" \ - "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \ - "MAKE=$(MAKE)" \ - "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \ - "PICFLAG=$(PICFLAG)" \ - "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \ - "SHELL=$(SHELL)" \ - "RUNTESTFLAGS=$(RUNTESTFLAGS)" \ - "exec_prefix=$(exec_prefix)" \ - "infodir=$(infodir)" \ - "libdir=$(libdir)" \ - "includedir=$(includedir)" \ - "prefix=$(prefix)" \ - "tooldir=$(tooldir)" \ - "AR=$(AR)" \ - "AS=$(AS)" \ - "LD=$(LD)" \ - "LIBCFLAGS=$(LIBCFLAGS)" \ - "PICFLAG=$(PICFLAG)" \ - "RANLIB=$(RANLIB)" \ - "NM=$(NM)" \ - "NM_FOR_BUILD=$(NM_FOR_BUILD)" \ - "NM_FOR_TARGET=$(NM_FOR_TARGET)" \ - "DESTDIR=$(DESTDIR)" \ - "WERROR=$(WERROR)" +AM_MAKEFLAGS = "AR_FLAGS=$(AR_FLAGS)" "CC_FOR_BUILD=$(CC_FOR_BUILD)" "CC_FOR_TARGET=$(CC_FOR_TARGET)" "CFLAGS=$(CFLAGS)" "CXXFLAGS=$(CXXFLAGS)" "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" "INSTALL=$(INSTALL)" "INSTALL_DATA=$(INSTALL_DATA)" "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" "LDFLAGS=$(LDFLAGS)" "LIBCFLAGS=$(LIBCFLAGS)" "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" "MAKE=$(MAKE)" "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" "PICFLAG=$(PICFLAG)" "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" "SHELL=$(SHELL)" "RUNTESTFLAGS=$(RUNTESTFLAGS)" "exec_prefix=$(exec_prefix)" "infodir=$(infodir)" "libdir=$(libdir)" "includedir=$(includedir)" "prefix=$(prefix)" "tooldir=$(tooldir)" "AR=$(AR)" "AS=$(AS)" "LD=$(LD)" "LIBCFLAGS=$(LIBCFLAGS)" "PICFLAG=$(PICFLAG)" "RANLIB=$(RANLIB)" "NM=$(NM)" "NM_FOR_BUILD=$(NM_FOR_BUILD)" "NM_FOR_TARGET=$(NM_FOR_TARGET)" "DESTDIR=$(DESTDIR)" "WERROR=$(WERROR)" ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 CONFIG_HEADER = config.h @@ -204,7 +169,7 @@ mkcheck.in testsuite_flags.in DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) -TAR = gtar +TAR = tar GZIP_ENV = --best all: all-redirect .SUFFIXES: @@ -480,8 +445,21 @@ check-script-install: $(top_builddir)/mkcheck cd testsuite; \ @glibcpp_builddir@/mkcheck 1) check-abi: $(top_builddir)/testsuite/abi_check - -(cd testsuite; \ - ./abi_check ${baseline_file}) + -@(cd testsuite; \ + ${top_srcdir}/config/abi/extract_symvers \ + ../src/.libs/libstdc++.so \ + ./current_symbols.txt; \ + ./abi_check --check ./current_symbols.txt ${baseline_file}) + +new-abi-baseline: + -@(output=${baseline_file}; \ + if test -f $${output}; then \ + output=$${output}.new; \ + t=`echo $${output} | sed 's=.*config/abi/=='`; \ + echo "Baseline file already exists, writing to $${t} instead."; \ + fi; \ + ${top_srcdir}/config/abi/extract_symvers \ + src/.libs/libstdc++.so $${output}) # These rules are messy, but are hella worth it. doxygen: @@ -516,7 +494,7 @@ distclean-am: distclean-multi maintainer-clean-am: maintainer-clean-multi all-multi: - $(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do + : $(MAKE) ; exec $(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do install-multi: $(MULTIDO) $(AM_MAKEFLAGS) DO=install multi-do mostlyclean-multi: diff --git a/contrib/libstdc++/config/abi/extract_symvers b/contrib/libstdc++/config/abi/extract_symvers new file mode 100755 index 000000000000..e7b6645900b1 --- /dev/null +++ b/contrib/libstdc++/config/abi/extract_symvers @@ -0,0 +1,64 @@ +#!/bin/sh + +# Copyright (C) 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307, +# 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. + + +if test ${#} -lt 2 || test $1 = '--help'; then + echo "Usage: extract_symvers shared_lib output_file" 1>&2 + exit 1 +fi + +lib=$1 +output=$2 + +# GNU binutils, somewhere after version 2.11.2, requires -W/--wide to avoid +# default line truncation. -W is not supported and truncation did not occur +# by default before that point. +readelf="readelf --symbols" +if readelf --help | grep -- --wide > /dev/null; then + readelf="$readelf --wide" +fi + +# This avoids weird sorting problems later. +export LC_ALL=C + +tmp=extract.$$ + +${readelf} ${lib} | sed '/\.dynsym/,/^$/p;d' | egrep -v ' (LOCAL|UND) ' |\ +awk '{ if ($4 == "FUNC" || $4 == "NOTYPE") + printf "%s:%s\n", $4, $8; + else if ($4 == "OBJECT") + printf "%s:%s:%s\n", $4, $3, $8; + }' | sort | uniq > $tmp 2>&1 +# else printf "Huh? What is %s?\n", $8; + + +# I think we'll be doing some more with this file, but for now, dump. +mv $tmp $output + +exit 0 diff --git a/contrib/libstdc++/config/locale/gnu/codecvt_members.cc b/contrib/libstdc++/config/locale/gnu/codecvt_members.cc index aa855a6a1f28..3569f6bf57b8 100644 --- a/contrib/libstdc++/config/locale/gnu/codecvt_members.cc +++ b/contrib/libstdc++/config/locale/gnu/codecvt_members.cc @@ -50,7 +50,7 @@ namespace std result __ret = error; size_t __len = min(__from_end - __from, __to_end - __to); #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) - __c_locale __old = __uselocale(_M_c_locale_codecvt); + __c_locale __old = __uselocale(_S_c_locale); #endif size_t __conv = wcsrtombs(__to, &__from, __len, &__state); #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) @@ -85,7 +85,7 @@ namespace std result __ret = error; size_t __len = min(__from_end - __from, __to_end - __to); #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) - __c_locale __old = __uselocale(_M_c_locale_codecvt); + __c_locale __old = __uselocale(_S_c_locale); #endif size_t __conv = mbsrtowcs(__to, &__from, __len, &__state); #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) diff --git a/contrib/libstdc++/include/bits/c++config b/contrib/libstdc++/include/bits/c++config index b440c68c39dd..41c3ba80b1ad 100644 --- a/contrib/libstdc++/include/bits/c++config +++ b/contrib/libstdc++/include/bits/c++config @@ -34,7 +34,7 @@ #include // The current version of the C++ library in compressed ISO date format. -#define __GLIBCPP__ 20020916 +#define __GLIBCPP__ 20021009 // This is necessary until GCC supports separate template // compilation. diff --git a/contrib/libstdc++/include/bits/codecvt.h b/contrib/libstdc++/include/bits/codecvt.h index 423679a5ab02..3666e987d6de 100644 --- a/contrib/libstdc++/include/bits/codecvt.h +++ b/contrib/libstdc++/include/bits/codecvt.h @@ -320,7 +320,7 @@ { public: explicit - codecvt_byname(const char* __s, size_t __refs = 0) + codecvt_byname(const char*, size_t __refs = 0) : codecvt<_InternT, _ExternT, _StateT>(__refs) { } protected: diff --git a/contrib/libstdc++/include/bits/locale_facets.tcc b/contrib/libstdc++/include/bits/locale_facets.tcc index 195d33ab0407..f21054e29663 100644 --- a/contrib/libstdc++/include/bits/locale_facets.tcc +++ b/contrib/libstdc++/include/bits/locale_facets.tcc @@ -798,8 +798,10 @@ namespace std // By itself __add_grouping cannot deal correctly with __ws when // ios::showbase is set and ios_base::oct || ios_base::hex. // Therefore we take care "by hand" of the initial 0, 0x or 0X. + // However, remember that the latter do not occur if the number + // printed is '0' (__len == 1). streamsize __off = 0; - if (__io.flags() & ios_base::showbase) + if ((__io.flags() & ios_base::showbase) && __len > 1) if (__basefield == ios_base::oct) { __off = 1; diff --git a/contrib/libstdc++/include/bits/stl_deque.h b/contrib/libstdc++/include/bits/stl_deque.h index ce6be7e4ce2f..cbe87796770f 100644 --- a/contrib/libstdc++/include/bits/stl_deque.h +++ b/contrib/libstdc++/include/bits/stl_deque.h @@ -665,7 +665,7 @@ public: // Basic accessors void _M_range_check(size_type __n) const { if (__n >= this->size()) - __throw_range_error("deque"); + __throw_out_of_range("deque"); } reference at(size_type __n) diff --git a/contrib/libstdc++/include/ext/stl_rope.h b/contrib/libstdc++/include/ext/stl_rope.h index bb9bb47258d1..eae261337421 100644 --- a/contrib/libstdc++/include/ext/stl_rope.h +++ b/contrib/libstdc++/include/ext/stl_rope.h @@ -1375,7 +1375,7 @@ class rope : public _Rope_base<_CharT,_Alloc> { static _RopeLeaf* _S_new_RopeLeaf(__GC_CONST _CharT *__s, size_t __size, allocator_type __a) { - _RopeLeaf* __space = _LAllocator(__a).allocate(1); + _RopeLeaf* __space = typename _Base::_LAllocator(__a).allocate(1); return new(__space) _RopeLeaf(__s, __size, __a); } @@ -1383,14 +1383,14 @@ class rope : public _Rope_base<_CharT,_Alloc> { _RopeRep* __left, _RopeRep* __right, allocator_type __a) { - _RopeConcatenation* __space = _CAllocator(__a).allocate(1); + _RopeConcatenation* __space = typename _Base::_CAllocator(__a).allocate(1); return new(__space) _RopeConcatenation(__left, __right, __a); } static _RopeFunction* _S_new_RopeFunction(char_producer<_CharT>* __f, size_t __size, bool __d, allocator_type __a) { - _RopeFunction* __space = _FAllocator(__a).allocate(1); + _RopeFunction* __space = typename _Base::_FAllocator(__a).allocate(1); return new(__space) _RopeFunction(__f, __size, __d, __a); } @@ -1398,7 +1398,7 @@ class rope : public _Rope_base<_CharT,_Alloc> { _Rope_RopeRep<_CharT,_Alloc>* __b, size_t __s, size_t __l, allocator_type __a) { - _RopeSubstring* __space = _SAllocator(__a).allocate(1); + _RopeSubstring* __space = typename _Base::_SAllocator(__a).allocate(1); return new(__space) _RopeSubstring(__b, __s, __l, __a); }