PATCH: LDFLAGS handling in V3

Mark Mitchell mark@codesourcery.com
Wed Jul 27 22:09:00 GMT 2005


Daniel Jacobowitz wrote:
> On Wed, Jul 27, 2005 at 02:56:25PM -0700, Mark Mitchell wrote:
> 
>>Daniel Jacobowitz wrote:
>>
>>
>>>That would be a bug.  LDFLAGS are intended to be compiler driver
>>>options; that's not a new requirement.
>>
>>OK, great.  So, then, the libstdc++ Makefiles should turn them into -Wc, 
>>options to libtool, rather than -Wl, as I proposed?  That would make 
>>clear to libtool that it needs to pass them along to the compiler, 
>>rather than silently ignore them.  Thoughts?
> 
> Or you could do that in the top level, since only --sysroot is affected?

Do we also assume that all target libraries use libtool?  If not, it's 
not safe for the toplevel to be sticking in -Wc, options.

It's not just --sysroot that's affected.  For example, -specs= is also 
ignored, even though that obviously affects linking.  So are -m options, 
even though the driver may use those to govern the set of options passed 
to the underlying linker.

(In fact, somewhat curiously, the libstdc++ Makefiles pass other options 
to libtool that it ignores.  Most of these look like they have no impact 
on linking, so perhaps this is just the libstdc++ Makefiles being funky, 
or perhaps there is some circumstance where they get used.  For example:

CXXLINK = $(LIBTOOL) --tag CXX --mode=link $(CXX) \
           $(OPT_LDFLAGS) $(SECTION_LDFLAGS) ...

where SECTION_LDFLAGS has things like -fdata-sections.  libtool does not 
pass these to the "linker", which is really xgcc.)

> Will libtool pass -Wc options to the link phase?

Empirically, yes.  (In fact, since LDFLAGS are supposed to be compiler 
options, it does exactly the right thing; it strips the -Wc, and passes 
them along.  With -Wl, it passes them along -- but with the -Wl, still 
there, so the xgcc driver doesn't see them.)

-- 
Mark Mitchell
CodeSourcery, LLC
mark@codesourcery.com
(916) 791-8304



More information about the Gcc-patches mailing list