Article View: gnu.g++.lib.bug
Article #429(libg++2.3/g++2.3.3)Possible bug involving fstream.[Ch]
From: Jim Bray
Date: Thu, 07 Jan 1993 15:00
Date: Thu, 07 Jan 1993 15:00
118 lines
4302 bytes
4302 bytes
The program included at the end of this message, which is supposed
to be a simple test program, compiles as follows:
#g++ fstream.cxx
fstream.cxx:8: warning: return type for `main' changed to integer type
ld: /usr/local/lib/libg++.a(fstream.o): fatal error: symbol
`rdbuf__C11fstreambase` multiply-defined, also in file
/usr/tmp/cca000Fj1.o
An nm of fstream.o produced in this dir shows:
[7] | 0| 36|FUNC |GLOB |0 |2 |rdbuf__C11fstreambase
An nm of /usr/local/libg++/libg++/iostream/fstream.o shows:
[6] | 0| 14|FUNC |GLOB |0 |2 |rdbuf__C11fstreambase
I don't know c++, but my examination of
/usr/..../iostream/fstream.[Ch] showed nothing obvious to me.
I looked at libg++/README and the g++ manpage. We do not have gld on
this system; presumabely the -fno-gnu-binutils flag is set by default.
I looked thru gcc-2.3.3 for collect, as referenced in the g++ manpage:
there is a collect2.c in gcc, but no evidence that gcc ever made or
installed a collect or ld.
I think perhaps either the g++ manpage is wrong for this system, or
gcc/configure is failing to set the makefile up to install a necessary
binary, or I should just shut up and try to install the thing. I am
hesitant to do the latter while not knowing what is going on. Also, I
suspect that libg++ could not have built at all with a wrong loader.
I apologise if this is some obvious thing I should know or be doing.
I don't claim to know c++: I'm just trying to get this working.
I tried libg++/make check. When tried from libg++, it fails with
"arg list too long". When tried from libg++/libg++, it tries to make
iostream/test:
cd test; make check ...
gcc -g -O -nostdinc++ -I. -I../.. -I./.. -I./../stdio
-I./../../g++-include -c tFile.C
gcc -o tFile tFile.o ../libio.a ../../libg++.a
Undefined first referenced
symbol in file
.L_E2513 tFile.o
.L_E2514 tFile.o
.L_E2515 tFile.o
.L_E210 tFile.o
.L_E211 tFile.o
The -g makes multiple labels-bug seems alive and well.
--Jim Bray (bray@wcuvax1.wcu.edu)
(Run Linux, the Official OS of the New World Order :))
(Please Support the League for Programming Freedom, and Boycott ATT
because of their legal intimidation of BSDI, UCB, and CMU)
elentari:/usr/dbt/cpp_tutor/source/work[1]#cat fstream.cxx
// Chapter 1 - Program 4
//#include "iostream.h"
#include "fstream.h"
//#include "process.h" // did he screw up? or is he working with old
version?
#include "stdlib.h"
void main()
{
ifstream infile;
ofstream outfile;
ofstream printer;
char filename[20];
cout << "Enter the desired file to copy ----> ";
cin >> filename;
infile.open(filename, ios::nocreate);
if (!infile) {
cout << "Input file cannot be opened.\n";
exit(1);
}
outfile.open("copy");
if (!outfile) {
cout << "Output file cannot be opened.\n";
exit(1);
}
printer.open("PRN");
if (!printer) {
cout << "There is a problem with the printer.\n";
exit(1);
}
cout << "All three files have been opened.\n";
char one_char;
printer << "This is the beginning of the printed copy.\n\n";
while (infile.get(one_char)) {
outfile.put(one_char);
printer.put(one_char);
}
printer << "\n\nThis is the end of the printed copy.\n";
infile.close();
outfile.close();
printer.close();
}
// Result of execution
//
// (The input file is copied to the file named "COPY")
// (The input file is printed on the printer
Technical Details
Message-ID:
<01GT8ZO5HRF68WW2WB@WCUVAX1.WCU.EDU>Path:
arc1-ca.pugleaf.net!sparky!uunet!cs.utexas.edu!sun-barr!ames!agate!usenet.ins.cwru.edu!magnus.acs.ohio-state.edu!cis.ohio-state.edu!wcuvax1.wcu.edu!BRAYShow Full Headers
Complete Article Headers
Newsgroups: gnu.g++.lib.bug Path: arc1-ca.pugleaf.net!sparky!uunet!cs.utexas.edu!sun-barr!ames!agate!usenet.ins.cwru.edu!magnus.acs.ohio-state.edu!cis.ohio-state.edu!wcuvax1.wcu.edu!BRAY From: BRAY@wcuvax1.wcu.edu (Jim Bray) Subject: (libg++2.3/g++2.3.3)Possible bug involving fstream.[Ch] Message-ID: <01GT8ZO5HRF68WW2WB@WCUVAX1.WCU.EDU> Sender: gnulists@ai.mit.edu Organization: GNUs Not Usenet Distribution: gnu Date: Thu, 7 Jan 1993 15:00:00 GMT Approved: bug-lib-g++@prep.ai.mit.edu Lines: 119