This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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:
[snip]

You're wrong.

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
http://gcc.gnu.org/onlinedocs/gcc/Invoking-G_002b_002b.html

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
implies -lsupc++

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.


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