Mail Archives: cygwin/1999/11/15/14:30:34
JSONCRAIG AT aol DOT com writes:
> I just downloaded and unpacked the GCC-2.95.2 Mingw32-crtdll release. I
> tried to compile a simple program:
>
> #include <iostream>
> using namespace std;
> int main()
> {
> cout << "Test" << endl;
> return 0;
> }
>
> c++ -o test.exe test.cpp
> works like a charm. But then, I decided to try out the profiling:
> C++ -o test.exe -pg test.cpp
> during linking:
>
>
> linking:C:\GCC-29~1.2\BIN\..\lib\gcc-lib\i386-mingw32\2.95.2\libstdc++.a(io
> stream.o)(.text$__
> ls__7ostreamPFR7ostream_R7ostream+0x0): multiple definition of
> `ostream::operator<<(ostream &(*)(ostream &))'
>
> &))'C:\WINDOWS\TEMP\ccriT9fb.o(.text$__ls__7ostreamPFR7ostream_R7ostream+0x0
> ):test.cpp: first defined here
It's a bug in binutils, not gcc. This is due to two bugs:
1 a small bug in the assembler that resets the section flags after
switching back
2 a more complex bug in BFD (Binary File Descriptor library that forms
the backend of the assembler, linker, etc).
I don't have a solution yet. If I fix (1), the final executable is
unloadable due to backend bugs. The bug is the following: let's say
you're in the middle of a "linkonce" section (as is common for C++
template instantiations and inline functions), and then you switch
to .data or .text to put some other data (eg., jump table), and switch
back to the linkonce section.
Can't fix (1) without fixing (2) first. I don't know enough about the
PE-COFF implementation to know what's going on.
I'll file a bug report with binutils folks with the testcases.
Thanks for pointing out this problem.
Regards,
Mumit
--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com
- Raw text -