Rainer Orth <r...@cebitec.uni-bielefeld.de> writes:

>>> > For this particular case at least.
>>> >
>>> > Note that I'm not against linking against static libgcc_s for
>>> > lto-plugin.  The -static-libstdc++ we use is just because during
>>> > bootstrap picking up the correct libstdc++ was deemed too hard
>>> > to implement and thus the easy way out was -static-libstdc++.
>>> 
>>> So how should we go forward with this issue?  This bootstrap failure is
>>> a regression from all previous releases.  As I said, I'd rather not
>>> duplicate the -static-libgcc test from the toplevel, but would do so if
>>> all else fails.  Perhaps Paolo could weigh in as the build maintainer?
>>
>> Yeah, I'd like a build maintainer to look over your first proposed patch
>> (workaround libtools nicyness).
>
> Just one additional data point: I've checked mainline libtool, and it
> still doesn't handle (meaning: still drops)
> -static-libgcc/-static-libstdc++.  At least they have some hints in
> their documentation on what testing etc. it takes to get additional
> options passed through to the compiler/linker.

I'm now testing this alternative.  So far, I've just manually configured
lto-plugin with CC=cc (Solaris Studio cc, no -static-libgcc) and CC=gcc
and found that -static-libgcc is only used with gcc, as expected.  I've
checked that -static-libgcc is supported as far back as 3.4.6 (probably
even far older), so the $GCC check should be enough.

I'm including it in this weekend's bootstraps on Solaris and Linux.

        Rainer


2014-03-14  Rainer Orth  <r...@cebitec.uni-bielefeld.de>

        * configure.ac (ac_lto_plugin_ldflags): Set to -Wc,-static-libgcc
        for gcc.
        * configure: Regenerate.
        * Makefile.am (AM_LDFLAGS): New variable.
        (liblto_plugin_la_LDFLAGS): Add it.
        * Makefile.in: Regenerate.

# HG changeset patch
# Parent baa4e95100d168dd4133db86c265fd35739647aa
Fix Solaris bootstrap with GNU ld/LTO

diff --git a/lto-plugin/Makefile.am b/lto-plugin/Makefile.am
--- a/lto-plugin/Makefile.am
+++ b/lto-plugin/Makefile.am
@@ -9,6 +9,7 @@ libexecsubdir := $(libexecdir)/gcc/$(tar
 
 AM_CPPFLAGS = -I$(top_srcdir)/../include $(DEFS)
 AM_CFLAGS = @ac_lto_plugin_warn_cflags@
+AM_LDFLAGS = @ac_lto_plugin_ldflags@
 AM_LIBTOOLFLAGS = --tag=disable-static
 
 libexecsub_LTLIBRARIES = liblto_plugin.la
@@ -22,7 +23,8 @@ liblto_plugin_la_SOURCES = lto-plugin.c
 liblto_plugin_la_LIBADD = \
 	$(if $(wildcard ../libiberty/pic/libiberty.a),$(Wc)../libiberty/pic/libiberty.a,)
 # Note that we intentionally override the bindir supplied by ACX_LT_HOST_FLAGS
-liblto_plugin_la_LDFLAGS = $(lt_host_flags) -module -bindir $(libexecsubdir) \
+liblto_plugin_la_LDFLAGS = $(AM_LDFLAGS) \
+	$(lt_host_flags) -module -bindir $(libexecsubdir) \
 	$(if $(wildcard ../libiberty/pic/libiberty.a),,-Wc,../libiberty/libiberty.a)
 liblto_plugin_la_DEPENDENCIES = $(if $(wildcard \
 	../libiberty/pic/libiberty.a),../libiberty/pic/libiberty.a,)
diff --git a/lto-plugin/configure.ac b/lto-plugin/configure.ac
--- a/lto-plugin/configure.ac
+++ b/lto-plugin/configure.ac
@@ -7,6 +7,9 @@ AM_MAINTAINER_MODE
 AC_PROG_CC
 AC_SYS_LARGEFILE
 ACX_PROG_CC_WARNING_OPTS([-Wall], [ac_lto_plugin_warn_cflags])
+# Need -Wc to get it through libtool.
+if test "x$GCC" = xyes; then ac_lto_plugin_ldflags="-Wc,-static-libgcc"; fi
+AC_SUBST(ac_lto_plugin_ldflags)
 AM_PROG_LIBTOOL
 ACX_LT_HOST_FLAGS
 AC_SUBST(target_noncanonical)
-- 
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University

Reply via email to