From nobody  Fri May  2 08:50:02 1997
Received: (from nobody@localhost)
          by hub.freebsd.org (8.8.5/8.8.5) id IAA07141;
          Fri, 2 May 1997 08:50:02 -0700 (PDT)
Message-Id: <199705021550.IAA07141@hub.freebsd.org>
Date: Fri, 2 May 1997 08:50:02 -0700 (PDT)
From: rssh@cki.ipri.kiev.ua
To: freebsd-gnats-submit@freebsd.org
Subject: fail to use standart ANSI C++ string class by gcc 2.7.2.1
X-Send-Pr-Version: www-1.0

>Number:         3470
>Category:       gnu
>Synopsis:       fail to use standart ANSI C++ string class by gcc 2.7.2.1
>Confidential:   no
>Severity:       serious
>Priority:       low
>Responsible:    freebsd-bugs
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Fri May  2 09:00:00 PDT 1997
>Closed-Date:    Thu May 21 11:44:29 PDT 1998
>Last-Modified:  Thu May 21 11:45:41 PDT 1998
>Originator:     Ruslan Shevchenko
>Release:        FreeBSD 2.2.1-RELEASE
>Organization:
IPRI
>Environment:
uname -a
FreeBSD satori.ipri.kiev.ua 2.2.1-RELEASE FreeBSD 2.2.1-RELEASE #0: Tue Apr 22 1
4:30:30 EET DST 1997     irina@satori.ipri.kiev.ua:/usr/src/sys/compile/MASHT  i
386
>Description:
string class is not usable, becouse gcc can't compile 
it's own header: <std/sinst.h>
>How-To-Repeat:
try next C++ code

#include<string>

#include<iostream.h>

int main(int, char**)
{
string s;
s="Hello, world\n";
cout << s;
return 0;
}
>Fix:
Replasement for <std/sinst.h> 
(I'l introduce PREPROCESSOR variable  (RSSH_STRING)
, of course we don't need to save origin, so second #else ... #endif
purt and this variable can be removed from fix.

// Forward declarations of -*- C++ -*- string instantiations.
// Copyright (C) 1994 Free Software Foundation

// This file is part of the GNU ANSI 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, if you link this library with files
// compiled with a GNU compiler to produce an executable, this does not 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.

// Written by Jason Merrill based upon the specification by Takanori Adachi
// in ANSI X3J16/94-0013R2.
//
// Pathed by Ruslan Shevchenko, for compiling under GCC 2.7.2.1

#ifndef __SINST__
#define __SINST__

#if defined(RSSH_STRING)

extern "C++" {


#define __S basic_string<char,string_char_traits<char> >

extern /*template*/ class __bsrep<char, string_char_traits<char> >;
extern /*template*/ class __S;

#define __DOPR(op, ret, c, s) \
  extern  /*template*/  ret operator op (const s&, const s&); \
  extern  /*template*/  ret operator op (const c*, const s&); \
  extern  /*template*/  ret operator op (const s&, const c*); \

#define __DO(op, ret, c, s) \
  extern /*template*/ ret operator op (const s&, const s&); \
  extern /*template*/ ret operator op (const c*, const s&); \
  extern /*template*/ ret operator op (const s&, const c*); \
  extern /*template*/ ret operator op (c, const s&); \
  extern /*template*/ ret operator op (const s&, c);

__DO (+, __S, char, __S)

#define __DOB(op) \
  __DOPR (op, bool, char, __S)
//  __DOPR (op, bool, wchar_t, __W)

__DOB (==)
__DOB (!=)
__DOB (<)
__DOB (>)
__DOB (<=)
__DOB (>=)

#undef __S
#undef __DO
#undef __DOB
#undef __DOPR


} // extern "C++"

#else


extern "C++" {
#define __S basic_string<char,string_char_traits<char> >
//#define __W basic_string<wchar_t,string_char_traits<wchar_t> >

extern template class __bsrep<char, string_char_traits<char> >;
extern template class __S;
// extern template class __W;
// extern template class __bsrep<wchar_t, string_char_traits<wchar_t> >;

#define __DOPR(op, ret, c, s) \
  extern template ret operator op (const s&, const s&); \
  extern template ret operator op (const c*, const s&); \
  extern template ret operator op (const s&, const c*); \

#define __DO(op, ret, c, s) \
  extern template ret operator op (const s&, const s&); \
  extern template ret operator op (const c*, const s&); \
  extern template ret operator op (const s&, const c*); \
  extern template ret operator op (c, const s&); \
  extern template ret operator op (const s&, c);

__DO (+, __S, char, __S)
// __DO (+, __W, wchar_t, __W) */

#define __DOB(op) \
  __DOPR (op, bool, char, __S)
//  __DOPR (op, bool, wchar_t, __W)

__DOB (==)
__DOB (!=)
__DOB (<)
__DOB (>)
__DOB (<=)
__DOB (>=)

#undef __S
//#undef __W
#undef __DO
#undef __DOB
#undef __DOPR
} // extern "C++"

#endif //RSSH_STRING

#endif
>Release-Note:
>Audit-Trail:

From: Dmitrij Tejblum <dima@tejblum.dnttm.rssi.ru>
To: rssh@cki.ipri.kiev.ua
Cc: freebsd-gnats-submit@FreeBSD.ORG
Subject: Re: gnu/3470: fail to use standart ANSI C++ string class by gcc 2.7.2.1 
Date: Fri, 02 May 1997 21:01:58 +0400

 > >How-To-Repeat:
 > try next C++ code
 > 
 > #include<string>
 > 
 > #include<iostream.h>
 > 
 > int main(int, char**)
 > {
 > string s;
 > s="Hello, world\n";
 > cout << s;
 > return 0;
 > }
 
 Hmm... It works here, on 3.0-CURRENT.
 
 Dima
 
 

From: Dmitrij Tejblum <dima@tejblum.dnttm.rssi.ru>
To: rssh@cki.ipri.kiev.ua
Cc: freebsd-gnats-submit@FreeBSD.ORG
Subject: Re: gnu/3470: fail to use standart ANSI C++ string class by gcc 2.7.2.1 
Date: Wed, 07 May 1997 13:00:00 +0400

 > >Environment:
 > uname -a
 > 
 FreeBSD satori.ipri.kiev.ua 2.2.1-RELEASE FreeBSD 2.2.1-RELEASE #0: Tue Apr 22 14:30:30 EET DST 1997     irina@satori.ipri.kiev.ua:/usr/src/sys/compile/MASHT  i386
 > >Description:
 > string class is not usable, becouse gcc can't compile 
 > it's own header: <std/sinst.h>
 > >How-To-Repeat:
 > try next C++ code
 > 
 > #include<string>
 > 
 > #include<iostream.h>
 > 
 > int main(int, char**)
 > {
 > string s;
 > s="Hello, world\n";
 > cout << s;
 > return 0;
 > }
 
 It works on my 3.0-CURRENT and on some sort of 2.2-STABLE, cvsupped Apr. 4. 
 (almost 2.2.1-RELEASE)
 AFAIK, there was no related commits. It cannot fail.
 
 Dima
 
 
State-Changed-From-To: open->feedback 
State-Changed-By: dt 
State-Changed-When: Tue May 5 10:07:10 PDT 1998 
State-Changed-Why:  
I cannot reproduce this bug. 
If you still observe it, please tell how exactly you invoke the compich messages it print. 
(If you don't see this bug now, please tell too) 
State-Changed-From-To: feedback->closed 
State-Changed-By: dt 
State-Changed-When: Thu May 21 11:44:29 PDT 1998 
State-Changed-Why:  
No feedback from originator. 
>Unformatted:
