Re: g++ and -nostdlib

Richard PALO <[email protected]>
Newsgroups gmane.comp.gnu.libtool.patches
Message-ID <[email protected]>
Le 08/11/13 20:07, Charles Wilson a écrit :
> On 11/8/2013 1:49 PM, Bob Friesenhahn wrote:
>> Isn't it because libtool wants to control the order of the linking and
>> assure that all dependencies (including static) are tracked/known and
>> applied at the correct times?  It wants to assure that static
>> dependencies are linked into the dependent program rather than into some
>> dependent shared library (and thus causing a problem).
>>
>> It was common (and perhaps still is) for the GNU C++ library to be
>> delivered as a static library for Windows/MinGW because C++ exceptions
>> were not handled properly when thrown by DLLs.
>>
>> Quite a lot of effort went into making this work the way it currently
>> does.
>>
>> First libtool tries to take away all of the libraries which would be
>> added automatically and then it applies the libraries that GCC says it
>> would use at the correct time.
>
> One of my wishlist roundtuit items is to special-case this behavior for
> libtool + GNU toolchains.  For that combo, instead of the procedure Bob
> outlines, and then using $LD to link....just use the compiler driver
> (e.g. g++, or gfortran, or gcc) to link, WITHOUT -nostdlib [1].  We're
> already passing the ABI-modifying -m and -f flags anyway, and it would
> really REALLY simplify libtool's logic...
>
> [1] unless of course the end user put -nostdlib in $LDFLAGS or something.
>
> --
> Chuck
>
>
>
>
I believe Chuck is oriented in the right direction.

A good example is with -fstack-protector.

gcc/g++ knows how to link depending upon whether the platforms libc has 
SSP support or not.

I doubt very much that libtool wants to figure out whether to add the 
specific libraries necessary for SSP to the link command.
It *should* however pass through the provided flags to the compiler 
driver, and not strip in this case '-fstack-protector'; object of:
> Bug: linking shared libraries on Cygwin results in undefined  references to __stack_chck_guard for code compiled with -fstack-protector

In this particular "worst" case, '-fstack-protector' is stripped, and 
even if it passed through, the g++ '-nostdlib' defeats the purpose!
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.