This is the mail archive of the cygwin@sourceware.cygnus.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: GCC 2.95.2 + C++ + -pg = ?


JSONCRAIG@aol.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@sourceware.cygnus.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]