From owner-freebsd-bugs Fri May 2 09:00:03 1997 Return-Path: Received: (from root@localhost) by hub.freebsd.org (8.8.5/8.8.5) id JAA07655 for bugs-outgoing; Fri, 2 May 1997 09:00:03 -0700 (PDT) Received: (from gnats@localhost) by hub.freebsd.org (8.8.5/8.8.5) id JAA07626; Fri, 2 May 1997 09:00:01 -0700 (PDT) Resent-Date: Fri, 2 May 1997 09:00:01 -0700 (PDT) Resent-Message-Id: <199705021600.JAA07626@hub.freebsd.org> Resent-From: gnats (GNATS Management) Resent-To: freebsd-bugs Resent-Reply-To: FreeBSD-gnats@FreeBSD.ORG, Received:(from nobody@localhost) by.hub.freebsd.org.id.IAA07141;Fri; (8.8.5/8.8.5);, 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 X-Send-Pr-Version: www-1.0 Subject: gnu/3470: fail to use standart ANSI C++ string class by gcc 2.7.2.1 Sender: owner-bugs@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk >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: open >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Fri May 2 09:00:00 PDT 1997 >Last-Modified: >Originator: Ruslan Shevchenko >Organization: IPRI >Release: FreeBSD 2.2.1-RELEASE >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: >How-To-Repeat: try next C++ code #include #include int main(int, char**) { string s; s="Hello, world\n"; cout << s; return 0; } >Fix: Replasement for (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 > extern /*template*/ class __bsrep >; 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 > //#define __W basic_string > extern template class __bsrep >; extern template class __S; // extern template class __W; // extern template class __bsrep >; #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 >Audit-Trail: >Unformatted: