Bug 7442

Summary: cxxabi.h does not match the C++ ABI
Product: gcc Reporter: grigory
Component: libstdc++Assignee: Benjamin Kosnik <bkoz>
Status: RESOLVED FIXED    
Severity: normal CC: gcc-bugs, jakub
Priority: P3    
Version: 3.1.1   
Target Milestone: ---   
Host: i686-pc-linux-gnu Target: i686-pc-linux-gnu
Build: i686-pc-linux-gnu Known to work:
Known to fail: Last reconfirmed:

Description grigory 2002-07-30 01:26:01 UTC
There is a couple of discrepancies between G++ implementation of 'cxxabi.h' file and the C++ ABI.

I. Member name difference
-------------------------

The C++ ABI defines that...
2.9.5 RTTI Layout 
9 The abi::__pointer_to_member_type_info type adds one field to abi::__pbase_type_info: 

      class __pointer_to_member_type_info : public __pbase_type_info {
	public:
	  const abi::__class_type_info *__context;
      };


G++ implementation is the following:
--- cxxabi.h ------------------------------------------------------------
class __pointer_to_member_type_info
  : public __pbase_type_info
{
/* abi defined member variables */
public:
  __class_type_info *__context_class;   /* class of the member */
-------------------------------------------------------------------------



II. Class name difference
-------------------------
Class '__base_class_type_info' specifyed by the C++ ABI, declared with the name '__base_class_info' in the G++'s cxxabi.h file. Moreover, name of the member __base_type is different too.

2.9.5 RTTI Layout 
6. Three different types are used to represent user type information: 
__base_info[] is an array of base class descriptions -- one for every direct proper base. Each description is of the type: 

      struct abi::__base_class_type_info {
	public:
         const __class_type_info *__base_type;
	 long __offset_flags;

	 enum __offset_flags_masks {
	   __virtual_mask = 0x1,
	   __public_mask = 0x2,
	   __offset_shift = 8
	 };

      };

--- G++'s cxxabi.h ------------------------------------------------------
class __base_class_info
{
/* abi defined member variables */
public:
  const __class_type_info *__base;    /* base class type */
  long __offset_flags;            /* offset and info */
-------------------------------------------------------------------------

Release:
3.1.1

Environment:
host: i686-pc-linux-gnu
build: i686-pc-linux-gnu
target: i686-pc-linux-gnu
configured with: ./configure --enable-threads
Comment 1 Benjamin Kosnik 2002-07-31 12:39:47 UTC
Responsible-Changed-From-To: unassigned->bkoz
Responsible-Changed-Why: Mine.
Comment 2 Benjamin Kosnik 2002-07-31 12:39:47 UTC
State-Changed-From-To: open->analyzed
State-Changed-Why: I'm looking at it
Comment 3 Benjamin Kosnik 2002-07-31 14:19:26 UTC
State-Changed-From-To: analyzed->feedback
State-Changed-Why: These issues have been fixed.
Comment 4 Benjamin Kosnik 2002-07-31 21:24:18 UTC
From: bkoz@gcc.gnu.org
To: gcc-gnats@gcc.gnu.org
Cc:  
Subject: libstdc++/7442
Date: 31 Jul 2002 21:24:18 -0000

 CVSROOT:	/cvs/gcc
 Module name:	gcc
 Changes by:	bkoz@gcc.gnu.org	2002-07-31 14:24:18
 
 Modified files:
 	libstdc++-v3   : ChangeLog 
 	libstdc++-v3/libsupc++: cxxabi.h tinfo.cc tinfo2.cc 
 
 Log message:
 	2002-07-31  Benjamin Kosnik  <bkoz@redhat.com>
 	
 	PR libstdc++/7442
 	* libsupc++/cxxabi.h
 	(__base_class_info): Change to __base_class_type_info. 2.9.5p6c
 	(__base_class_info::__base): Change to __base_type. 2.9.5p6c
 	(__base_class_info::offset_shift): Change to __offset_shift. 2.9.5p6c
 	(__vmi_class_type_info::__base_info): Don't make const, of type
 	__base_class_type_info, as per 2.9.5p6c
 	(__pbase_type_info::__qualifier_flags): Change to __flags, as per
 	2.9.5p7.
 	(__pbase_type_info::__qualifier_masks): Change to __masks, as per
 	2.9.5p7.
 	(__pointer_to_member_type_info::__context_class): Change member to
 	__context, as per 2.9.5p9.
 	* libsupc++/tinfo2.cc (__pointer_catch): Change __context_class to
 	__context.
 	* libsupc++/tinfo2.cc (__do_catch): Change __qualifier_flags to
 	__flags.
 	* libsupc++/tinfo.cc (__do_find_public_src): Change __base to
 	__base_type.
 	* libsupc++/tinfo.cc (__do_dyncast): Same.
 	* libsupc++/tinfo.cc (__do_upcast): Same.
 
 Patches:
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/ChangeLog.diff?cvsroot=gcc&r1=1.1300&r2=1.1301
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/libsupc++/cxxabi.h.diff?cvsroot=gcc&r1=1.6&r2=1.7
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/libsupc++/tinfo.cc.diff?cvsroot=gcc&r1=1.10&r2=1.11
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/libsupc++/tinfo2.cc.diff?cvsroot=gcc&r1=1.6&r2=1.7
 

Comment 5 Benjamin Kosnik 2002-07-31 21:50:33 UTC
From: bkoz@gcc.gnu.org
To: gcc-gnats@gcc.gnu.org
Cc:  
Subject: libstdc++/7442
Date: 31 Jul 2002 21:50:33 -0000

 CVSROOT:	/cvs/gcc
 Module name:	gcc
 Changes by:	bkoz@gcc.gnu.org	2002-07-31 14:50:33
 
 Modified files:
 	libstdc++-v3   : ChangeLog 
 	libstdc++-v3/libsupc++: cxxabi.h 
 
 Log message:
 	2002-07-31  Benjamin Kosnik  <bkoz@redhat.com>
 	Mark Mitchell  <mark@codesourcery.com>
 	
 	PR libstdc++/7442
 	* libsupc++/cxxabi.h (class __base_class_type_info::hwm_bit):
 	Change to __hwm_bit.
 	(__class_type_info): And here.
 
 Patches:
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/ChangeLog.diff?cvsroot=gcc&r1=1.1301&r2=1.1302
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/libsupc++/cxxabi.h.diff?cvsroot=gcc&r1=1.7&r2=1.8
 
Comment 6 Benjamin Kosnik 2002-08-01 14:13:39 UTC
State-Changed-From-To: feedback->closed
State-Changed-Why: Fixed.
Comment 7 Jakub Jelinek 2002-08-01 21:29:19 UTC
From: jakub@gcc.gnu.org
To: gcc-gnats@gcc.gnu.org
Cc:  
Subject: libstdc++/7442
Date: 1 Aug 2002 21:29:19 -0000

 CVSROOT:	/cvs/gcc
 Module name:	egcs
 Branch: 	gcc-3_2-branch
 Changes by:	jakub@gcc.gnu.org	2002-08-01 14:29:18
 
 Modified files:
 	libstdc++-v3   : ChangeLog 
 	gcc/testsuite  : ChangeLog 
 	gcc/testsuite/g++.old-deja/g++.abi: ptrflags.C 
 	libstdc++-v3/config: linker-map.gnu 
 	libstdc++-v3/docs/html/22_locale: howto.html 
 	libstdc++-v3/src: Makefile.am Makefile.in locale-inst.cc 
 	                  locale.cc 
 	libstdc++-v3/testsuite/21_strings: capacity.cc 
 	libstdc++-v3/testsuite/22_locale: 
 	                                  codecvt_members_unicode_char.cc 
 	                                  codecvt_members_unicode_wchar_t.cc 
 	                                  ctor_copy_dtor.cc 
 	libstdc++-v3/testsuite/27_io: filebuf.cc filebuf_virtuals.cc 
 	                              fstream.cc ios_init.cc istream.cc 
 	                              ostream.cc streambuf.cc 
 	                              stringbuf.cc stringstream.cc 
 	libstdc++-v3/testsuite: testsuite_hooks.h 
 	libstdc++-v3/include/bits: fpos.h char_traits.h fstream.tcc 
 	                           istream.tcc locale_facets.h 
 	                           locale_facets.tcc ostream.tcc 
 	                           sstream.tcc streambuf_iterator.h 
 	libstdc++-v3/include/std: std_fstream.h std_streambuf.h 
 	libstdc++-v3/libsupc++: cxxabi.h tinfo.cc tinfo2.cc 
 Added files:
 	libstdc++-v3/src: fstream.cc 
 
 Log message:
 	2002-08-01  Benjamin Kosnik   <bkoz@redhat.com>
 	
 	* g++.old-deja/g++.abi/ptrflags.C (expect): Change
 	__qualifier_flags to __flags.
 	
 	2002-08-01  Benjamin Kosnik  <bkoz@redhat.com>
 	Jakub Jelinek  <jakub@redhat.com>
 	
 	* config/linker-map.gnu: Change CXXABI_1 to CXXABI_1.2,
 	GLIBCPP_3.1 to GLIBCPP_3.2.
 	
 	2002-07-31  Benjamin Kosnik  <bkoz@redhat.com>
 	Mark Mitchell  <mark@codesourcery.com>
 	
 	PR libstdc++/7442
 	* libsupc++/cxxabi.h (class __base_class_type_info::hwm_bit):
 	Change to __hwm_bit.
 	(__class_type_info): And here.
 	
 	2002-07-31  Benjamin Kosnik  <bkoz@redhat.com>
 	
 	PR libstdc++/7442
 	* libsupc++/cxxabi.h
 	(__base_class_info): Change to __base_class_type_info. 2.9.5p6c
 	(__base_class_info::__base): Change to __base_type. 2.9.5p6c
 	(__base_class_info::offset_shift): Change to __offset_shift. 2.9.5p6c
 	(__vmi_class_type_info::__base_info): Don't make const, of type
 	__base_class_type_info, as per 2.9.5p6c
 	(__pbase_type_info::__qualifier_flags): Change to __flags, as per
 	2.9.5p7.
 	(__pbase_type_info::__qualifier_masks): Change to __masks, as per
 	2.9.5p7.
 	(__pointer_to_member_type_info::__context_class): Change member to
 	__context, as per 2.9.5p9.
 	* libsupc++/tinfo2.cc (__pointer_catch): Change __context_class to
 	__context.
 	* libsupc++/tinfo2.cc (__do_catch): Change __qualifier_flags to
 	__flags.
 	* libsupc++/tinfo.cc (__do_find_public_src): Change __base to
 	__base_type.
 	* libsupc++/tinfo.cc (__do_dyncast): Same.
 	* libsupc++/tinfo.cc (__do_upcast): Same.
 	
 	2002-07-31  Simon Whomsley  <whomsley@avacadcam.com>
 	
 	* docs/html/22_locale/howto.html: Fix.
 	
 	2002-07-31  Alex Kompel  <shurik@sequoiap.com>
 	
 	PR libstdc++/7445
 	* src/locale.cc (locale::classic): Move locks inside !_S_classic
 	block.
 	
 	2002-07-30  Benjamin Kosnik  <bkoz@redhat.com>
 	Gabriel Dos Reis  <gdr@nerim.net>
 	
 	* include/bits/char_traits.h: Remove generic definitions.
 	* include/bits/streambuf_iterator.h (istreambuf_iterator): Use
 	eof, not -2.
 	* include/bits/istream.tcc (istream::readsome): Don't check
 	against eof, instead use constants.
 	(istream::sync): Same.
 	(istream::sentry::sentry): Use eq_int_type.
 	(istream::get): Same.
 	* include/bits/ostream.tcc: Change __pad to
 	__pad<_CharT, _Traits>::_S_pad.
 	* include/bits/locale_facets.h: Add __pad_traits generic and
 	ostreambuf_iterator specialization.
 	* include/bits/locale_facets.tcc: Change __pad into struct __pad
 	with a _CharT and _Traits template parameter and _S_pad static
 	member function.
 	* src/locale-inst.cc: Update __pad instantiations.
 	
 	* include/std/std_fstream.h: Declare _M_underflow_common
 	specializations.
 	* src/fstream.cc: New. Add _M_underflow_common specializations.
 	* include/bits/fstream.tcc (filebuf::close): Use traits_type.
 	(filebuf::_M_underflow_common(bool)): Remove generic version, as
 	sys_ungetc and custom int_types don't get along.
 	* include/std/std_streambuf.h: Add _M_pos.
 	* src/Makefile.am (sources): Add fstream.cc.
 	* src/Makefile.in: Regenerate.
 	
 	* testsuite/21_strings/capacity.cc: Add char_traits specializations.
 	* testsuite/22_locale/codecvt_members_unicode_char.cc: Same.
 	* testsuite/22_locale/codecvt_members_unicode_wchar_t.cc: Same.
 	* testsuite/22_locale/ctor_copy_dtor.cc: Same.
 	* testsuite/27_io/filebuf_virtuals.cc (test07): Move to...
 	* testsuite/27_io/filebuf.cc: ...here.
 	* testsuite/testsuite_hooks.h: Add gnu_char, gnu_int, char_traits
 	specialization for both.
 	* testsuite/27_io/streambuf.cc: Add instantiation test,
 	testsuite_hooks include.
 	* testsuite/27_io/istream.cc: Same.
 	* testsuite/27_io/ostream.cc: Same.
 	* testsuite/27_io/fstream.cc: Same.
 	* testsuite/27_io/stringstream.cc: Same.
 	* testsuite/27_io/filebuf.cc: Same.
 	* testsuite/27_io/stringbuf.cc: Same.
 
 Patches:
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.1057.2.159.2.1&r2=1.1057.2.159.2.2
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.1672.2.166.2.1&r2=1.1672.2.166.2.2
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/gcc/testsuite/g++.old-deja/g++.abi/ptrflags.C.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.5&r2=1.5.30.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/config/linker-map.gnu.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.5.2.6&r2=1.5.2.6.4.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/docs/html/22_locale/howto.html.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.11&r2=1.11.14.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/src/fstream.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=NONE&r2=1.2.2.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/src/Makefile.am.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.103.2.4&r2=1.103.2.4.2.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/src/Makefile.in.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.144.2.6&r2=1.144.2.6.2.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/src/locale-inst.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.29.2.5&r2=1.29.2.5.2.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/src/locale.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.54.2.6.4.1&r2=1.54.2.6.4.2
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/testsuite/21_strings/capacity.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.6.2.1&r2=1.6.2.1.4.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/testsuite/22_locale/codecvt_members_unicode_char.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.2.2.2&r2=1.2.2.2.4.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/testsuite/22_locale/codecvt_members_unicode_wchar_t.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.1.16.1&r2=1.1.16.1.4.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/testsuite/22_locale/ctor_copy_dtor.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.13.12.1&r2=1.13.12.2
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/testsuite/27_io/filebuf.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.18.12.1&r2=1.18.12.2
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/testsuite/27_io/filebuf_virtuals.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.4.2.2&r2=1.4.2.2.4.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/testsuite/27_io/fstream.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.1.2.1&r2=1.1.2.2
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/testsuite/27_io/ios_init.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.4.2.3&r2=1.4.2.3.4.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/testsuite/27_io/istream.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.4.12.1&r2=1.4.12.2
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/testsuite/27_io/ostream.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.4.12.1&r2=1.4.12.2
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/testsuite/27_io/streambuf.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.10.8.1.4.1&r2=1.10.8.1.4.2
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/testsuite/27_io/stringbuf.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.7.2.1.4.1&r2=1.7.2.1.4.2
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/testsuite/27_io/stringstream.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.8.12.1&r2=1.8.12.2
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/testsuite/testsuite_hooks.h.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.5.2.1&r2=1.5.2.1.2.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/include/bits/fpos.h.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.8&r2=1.8.14.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/include/bits/char_traits.h.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.12&r2=1.12.14.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/include/bits/fstream.tcc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.25.2.12&r2=1.25.2.12.4.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/include/bits/istream.tcc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.24.2.6.2.1&r2=1.24.2.6.2.2
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/include/bits/locale_facets.h.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.41.2.2.4.1&r2=1.41.2.2.4.2
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/include/bits/locale_facets.tcc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.63.2.13&r2=1.63.2.13.2.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/include/bits/ostream.tcc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.22.2.8&r2=1.22.2.8.2.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/include/bits/sstream.tcc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.8.2.2.4.1&r2=1.8.2.2.4.2
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/include/bits/streambuf_iterator.h.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.5.2.2&r2=1.5.2.2.4.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/include/std/std_fstream.h.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.6.2.6&r2=1.6.2.6.4.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/include/std/std_streambuf.h.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.5.2.2.4.1&r2=1.5.2.2.4.2
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/libsupc++/cxxabi.h.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.6&r2=1.6.14.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/libsupc++/tinfo.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.9&r2=1.9.14.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/libsupc++/tinfo2.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.6&r2=1.6.26.1
 

Comment 8 Jakub Jelinek 2002-08-01 21:29:19 UTC
From: jakub@gcc.gnu.org
To: gcc-gnats@gcc.gnu.org
Cc:  
Subject: libstdc++/7442
Date: 1 Aug 2002 21:29:19 -0000

 CVSROOT:	/cvs/gcc
 Module name:	egcs
 Branch: 	gcc-3_2-branch
 Changes by:	jakub@gcc.gnu.org	2002-08-01 14:29:18
 
 Modified files:
 	libstdc++-v3   : ChangeLog 
 	gcc/testsuite  : ChangeLog 
 	gcc/testsuite/g++.old-deja/g++.abi: ptrflags.C 
 	libstdc++-v3/config: linker-map.gnu 
 	libstdc++-v3/docs/html/22_locale: howto.html 
 	libstdc++-v3/src: Makefile.am Makefile.in locale-inst.cc 
 	                  locale.cc 
 	libstdc++-v3/testsuite/21_strings: capacity.cc 
 	libstdc++-v3/testsuite/22_locale: 
 	                                  codecvt_members_unicode_char.cc 
 	                                  codecvt_members_unicode_wchar_t.cc 
 	                                  ctor_copy_dtor.cc 
 	libstdc++-v3/testsuite/27_io: filebuf.cc filebuf_virtuals.cc 
 	                              fstream.cc ios_init.cc istream.cc 
 	                              ostream.cc streambuf.cc 
 	                              stringbuf.cc stringstream.cc 
 	libstdc++-v3/testsuite: testsuite_hooks.h 
 	libstdc++-v3/include/bits: fpos.h char_traits.h fstream.tcc 
 	                           istream.tcc locale_facets.h 
 	                           locale_facets.tcc ostream.tcc 
 	                           sstream.tcc streambuf_iterator.h 
 	libstdc++-v3/include/std: std_fstream.h std_streambuf.h 
 	libstdc++-v3/libsupc++: cxxabi.h tinfo.cc tinfo2.cc 
 Added files:
 	libstdc++-v3/src: fstream.cc 
 
 Log message:
 	2002-08-01  Benjamin Kosnik   <bkoz@redhat.com>
 	
 	* g++.old-deja/g++.abi/ptrflags.C (expect): Change
 	__qualifier_flags to __flags.
 	
 	2002-08-01  Benjamin Kosnik  <bkoz@redhat.com>
 	Jakub Jelinek  <jakub@redhat.com>
 	
 	* config/linker-map.gnu: Change CXXABI_1 to CXXABI_1.2,
 	GLIBCPP_3.1 to GLIBCPP_3.2.
 	
 	2002-07-31  Benjamin Kosnik  <bkoz@redhat.com>
 	Mark Mitchell  <mark@codesourcery.com>
 	
 	PR libstdc++/7442
 	* libsupc++/cxxabi.h (class __base_class_type_info::hwm_bit):
 	Change to __hwm_bit.
 	(__class_type_info): And here.
 	
 	2002-07-31  Benjamin Kosnik  <bkoz@redhat.com>
 	
 	PR libstdc++/7442
 	* libsupc++/cxxabi.h
 	(__base_class_info): Change to __base_class_type_info. 2.9.5p6c
 	(__base_class_info::__base): Change to __base_type. 2.9.5p6c
 	(__base_class_info::offset_shift): Change to __offset_shift. 2.9.5p6c
 	(__vmi_class_type_info::__base_info): Don't make const, of type
 	__base_class_type_info, as per 2.9.5p6c
 	(__pbase_type_info::__qualifier_flags): Change to __flags, as per
 	2.9.5p7.
 	(__pbase_type_info::__qualifier_masks): Change to __masks, as per
 	2.9.5p7.
 	(__pointer_to_member_type_info::__context_class): Change member to
 	__context, as per 2.9.5p9.
 	* libsupc++/tinfo2.cc (__pointer_catch): Change __context_class to
 	__context.
 	* libsupc++/tinfo2.cc (__do_catch): Change __qualifier_flags to
 	__flags.
 	* libsupc++/tinfo.cc (__do_find_public_src): Change __base to
 	__base_type.
 	* libsupc++/tinfo.cc (__do_dyncast): Same.
 	* libsupc++/tinfo.cc (__do_upcast): Same.
 	
 	2002-07-31  Simon Whomsley  <whomsley@avacadcam.com>
 	
 	* docs/html/22_locale/howto.html: Fix.
 	
 	2002-07-31  Alex Kompel  <shurik@sequoiap.com>
 	
 	PR libstdc++/7445
 	* src/locale.cc (locale::classic): Move locks inside !_S_classic
 	block.
 	
 	2002-07-30  Benjamin Kosnik  <bkoz@redhat.com>
 	Gabriel Dos Reis  <gdr@nerim.net>
 	
 	* include/bits/char_traits.h: Remove generic definitions.
 	* include/bits/streambuf_iterator.h (istreambuf_iterator): Use
 	eof, not -2.
 	* include/bits/istream.tcc (istream::readsome): Don't check
 	against eof, instead use constants.
 	(istream::sync): Same.
 	(istream::sentry::sentry): Use eq_int_type.
 	(istream::get): Same.
 	* include/bits/ostream.tcc: Change __pad to
 	__pad<_CharT, _Traits>::_S_pad.
 	* include/bits/locale_facets.h: Add __pad_traits generic and
 	ostreambuf_iterator specialization.
 	* include/bits/locale_facets.tcc: Change __pad into struct __pad
 	with a _CharT and _Traits template parameter and _S_pad static
 	member function.
 	* src/locale-inst.cc: Update __pad instantiations.
 	
 	* include/std/std_fstream.h: Declare _M_underflow_common
 	specializations.
 	* src/fstream.cc: New. Add _M_underflow_common specializations.
 	* include/bits/fstream.tcc (filebuf::close): Use traits_type.
 	(filebuf::_M_underflow_common(bool)): Remove generic version, as
 	sys_ungetc and custom int_types don't get along.
 	* include/std/std_streambuf.h: Add _M_pos.
 	* src/Makefile.am (sources): Add fstream.cc.
 	* src/Makefile.in: Regenerate.
 	
 	* testsuite/21_strings/capacity.cc: Add char_traits specializations.
 	* testsuite/22_locale/codecvt_members_unicode_char.cc: Same.
 	* testsuite/22_locale/codecvt_members_unicode_wchar_t.cc: Same.
 	* testsuite/22_locale/ctor_copy_dtor.cc: Same.
 	* testsuite/27_io/filebuf_virtuals.cc (test07): Move to...
 	* testsuite/27_io/filebuf.cc: ...here.
 	* testsuite/testsuite_hooks.h: Add gnu_char, gnu_int, char_traits
 	specialization for both.
 	* testsuite/27_io/streambuf.cc: Add instantiation test,
 	testsuite_hooks include.
 	* testsuite/27_io/istream.cc: Same.
 	* testsuite/27_io/ostream.cc: Same.
 	* testsuite/27_io/fstream.cc: Same.
 	* testsuite/27_io/stringstream.cc: Same.
 	* testsuite/27_io/filebuf.cc: Same.
 	* testsuite/27_io/stringbuf.cc: Same.
 
 Patches:
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.1057.2.159.2.1&r2=1.1057.2.159.2.2
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.1672.2.166.2.1&r2=1.1672.2.166.2.2
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/gcc/testsuite/g++.old-deja/g++.abi/ptrflags.C.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.5&r2=1.5.30.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/config/linker-map.gnu.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.5.2.6&r2=1.5.2.6.4.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/docs/html/22_locale/howto.html.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.11&r2=1.11.14.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/src/fstream.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=NONE&r2=1.2.2.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/src/Makefile.am.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.103.2.4&r2=1.103.2.4.2.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/src/Makefile.in.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.144.2.6&r2=1.144.2.6.2.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/src/locale-inst.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.29.2.5&r2=1.29.2.5.2.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/src/locale.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.54.2.6.4.1&r2=1.54.2.6.4.2
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/testsuite/21_strings/capacity.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.6.2.1&r2=1.6.2.1.4.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/testsuite/22_locale/codecvt_members_unicode_char.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.2.2.2&r2=1.2.2.2.4.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/testsuite/22_locale/codecvt_members_unicode_wchar_t.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.1.16.1&r2=1.1.16.1.4.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/testsuite/22_locale/ctor_copy_dtor.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.13.12.1&r2=1.13.12.2
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/testsuite/27_io/filebuf.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.18.12.1&r2=1.18.12.2
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/testsuite/27_io/filebuf_virtuals.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.4.2.2&r2=1.4.2.2.4.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/testsuite/27_io/fstream.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.1.2.1&r2=1.1.2.2
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/testsuite/27_io/ios_init.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.4.2.3&r2=1.4.2.3.4.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/testsuite/27_io/istream.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.4.12.1&r2=1.4.12.2
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/testsuite/27_io/ostream.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.4.12.1&r2=1.4.12.2
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/testsuite/27_io/streambuf.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.10.8.1.4.1&r2=1.10.8.1.4.2
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/testsuite/27_io/stringbuf.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.7.2.1.4.1&r2=1.7.2.1.4.2
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/testsuite/27_io/stringstream.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.8.12.1&r2=1.8.12.2
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/testsuite/testsuite_hooks.h.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.5.2.1&r2=1.5.2.1.2.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/include/bits/fpos.h.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.8&r2=1.8.14.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/include/bits/char_traits.h.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.12&r2=1.12.14.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/include/bits/fstream.tcc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.25.2.12&r2=1.25.2.12.4.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/include/bits/istream.tcc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.24.2.6.2.1&r2=1.24.2.6.2.2
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/include/bits/locale_facets.h.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.41.2.2.4.1&r2=1.41.2.2.4.2
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/include/bits/locale_facets.tcc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.63.2.13&r2=1.63.2.13.2.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/include/bits/ostream.tcc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.22.2.8&r2=1.22.2.8.2.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/include/bits/sstream.tcc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.8.2.2.4.1&r2=1.8.2.2.4.2
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/include/bits/streambuf_iterator.h.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.5.2.2&r2=1.5.2.2.4.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/include/std/std_fstream.h.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.6.2.6&r2=1.6.2.6.4.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/include/std/std_streambuf.h.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.5.2.2.4.1&r2=1.5.2.2.4.2
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/libsupc++/cxxabi.h.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.6&r2=1.6.14.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/libsupc++/tinfo.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.9&r2=1.9.14.1
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/libstdc++-v3/libsupc++/tinfo2.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.6&r2=1.6.26.1