This is the mail archive of the
mailing list for the GCC project.
Re: add .cc files to libgcc.a
On 29 October 2012 16:08, Perry Smith wrote:
> On Oct 29, 2012, at 9:32 AM, Jonathan Wakely wrote:
>> On Oct 29, 2012 1:54 PM, "Perry Smith" wrote:
>>> My original logic in adding them to libstdc++.a is they are only used (called) by code automatically produced by g++ and not gcc.
>> That doesn't make sense. Both gcc and g++ are just driver programs
>> that invoke the appropriate compiler program, which for C++ is
>> cc1plus. So C++ code can be compiled by gcc, and doesn't necessarily
>> link to libstdc++.
>> Putting the files in libsupc++ might make sense but libstdc++ is
>> definitely wrong.
> You've mentioned this before. I think you are needlessly splitting hairs.
No, I'm not.
> The construct that produces the code that causes the failure is a c++ construct.
You're apparently still failing to understand the point.
Compiling with gcc does not imply you're not compiling C++.
Compiling C++ does not imply linking to libstdc++.
So basing which library it goes in based on "compiling with gcc versus
g++" is meaningless, and assuming that "compiling C++" implies linking
to libstdc+ is plain wrong.
So putting it in libstdc++ because it's needed by C++ code is plain
wrong. That's not splitting hairs. You're original logic in adding it
to libstdc++ is flawed.
>The construct that causes the compiler to produce a call to atexit is a static of a variable with a non-trivial destructor declared inside a function. This program, does not compile with gcc:
It compiles fine with gcc if you put it in a file that ends in .cc or
.C or .cpp or any of the other extensions that tell gcc to run the
cc1plus compiler. Please read
It doesn't *link* with gcc, unless you use -lsupc++
N.B. it does *not* need -lstdc++
> But it compiles just fine with g++.
It links successfully with g++ because that implies -lstdc++ which
But neither g++ nor libstdc+ is required.
I'm trying to help you, really.
Code that is required by C++ programs to provide language support and
basic runtime features should go in libsupc++ not libstdc++, as I
tried to tell you in my last mail.