Re: [RFC PATCH] update to libtool-2.4.2 and regenerate

2011-10-31 Thread Rainer Orth
Markus Trippelsdorf mar...@trippelsdorf.de writes:

 By popular demand, I've prepared a patch that updates the in-tree
 libtool to version 2.4.2. It is needed for lto-bootstrap with
 -fno-fat-lto-objects and FreeBSD10.x versions. 
 It's a pretty big update as you can see by the following diffstat. I
 cannot attach the patch even as a gzip file, because of its size:

  417745 Oct 28 00:47 0001-update-to-libtool-2.4.2-and-regenerate.patch.gz

 Bootstrapped on x86_64-pc-linux-gnu. 

 Comments? Stage 1 will end soon and it would be nice to get this in.

I've tried your patch on i386-pc-solaris2.11 this weekend in a variety
of configurations:

* using ld or gld 2.21.1,

* with the 32-bit default configuration (i386-pc-solaris2.11) and the
  64-bit default configuration (amd64-pc-solaris2.11).

This revealed a couple of problems:

* If Go support is included (off by default), bootstrap breaks like this
  while building libgo:

libtool: Version mismatch error.  This is libtool 2.4.2, but the
libtool: definition of this LT_INIT comes from libtool 2.2.7a.
libtool: You should recreate aclocal.m4 with macros from libtool 2.4.2
libtool: and run autoconf again.
make[4]: *** [go-assert.lo] Error 63

  To avoid this, I've run all bootstraps without Go.

* When building the 64-bit default gld configuration, building the
  64-bit libjava fails like this:

Error libtool: compile: not configured to build any kind of library
libtool: compile: See the libtool documentation for more information.
make[5]: libtool: compile: Fatal configuration error.

  I had already patched the copy of libtool.m4 to deal with the new
  configuration and now also submitted it upstream:

Support 64-bit default GCC on Solaris/x86
http://lists.gnu.org/archive/html/libtool-patches/2011-10/msg00021.html

  After applying the patch and regenerating all affected configure
  scripts, the bootstrap completed.

With those two changes, all four bootstraps completed without regressions.

I made a quick comparison of the libtool.m4 in libgo/config with the
2.4.2 version: the only relevant change seems to be an instance of
AC_PROG_GO, which also lives in go.m4.  Ian will know why that
additional copy is necessary.

Rainer

-- 
-
Rainer Orth, Center for Biotechnology, Bielefeld University


Re: [RFC PATCH] update to libtool-2.4.2 and regenerate

2011-10-31 Thread Ian Lance Taylor
Rainer Orth r...@cebitec.uni-bielefeld.de writes:

 I made a quick comparison of the libtool.m4 in libgo/config with the
 2.4.2 version: the only relevant change seems to be an instance of
 AC_PROG_GO, which also lives in go.m4.  Ian will know why that
 additional copy is necessary.

The version of AC_PROG_GO in libgo/config/go.m4 is there so that I can
rebuild libgo/configure with a version of autoconf that does not have Go
support.

The version of AC_PROG_GO in libgo/config/libtool.m4 is there because
all the languages work that way in libtool.m4.

Ian


Re: [RFC PATCH] update to libtool-2.4.2 and regenerate

2011-10-29 Thread Markus Trippelsdorf
On 2011.10.28 at 07:20 +0200, Markus Trippelsdorf wrote:
 On 2011.10.27 at 17:29 -0700, Andi Kleen wrote:
  Markus Trippelsdorf mar...@trippelsdorf.de writes:
  
   By popular demand, I've prepared a patch that updates the in-tree
   libtool to version 2.4.2. It is needed for lto-bootstrap with
   -fno-fat-lto-objects and FreeBSD10.x versions. 
   It's a pretty big update as you can see by the following diffstat. I
   cannot attach the patch even as a gzip file, because of its size:
  
417745 Oct 28 00:47 0001-update-to-libtool-2.4.2-and-regenerate.patch.gz
  
   Bootstrapped on x86_64-pc-linux-gnu. 
  
  Can you put it up for download somewhere? Does the slim bootstrap
  now work on Linux?
 
 http://trippelsdorf.de/0001-update-to-libtool-2.4.2-and-regenerate.patch.bz2
 
  I presume it needs at least the gcc-ar patch too, unless you use
  custom AR/RANLIB wrappers.
 
 Yes, slim bootstrap now works on Linux. One has to point AR,
 AR_FOR_TARGET, etc. to the wrappers and add -fuse-linker-plugin to the
 various CFLAGS (BOOT_CFLAGS, STAGE1_CFLAGS and CFLAGS_FOR_TARGET).

Here is what I use right now:

 % cat config/slim-lto-bootstrap.mk
# This option enables slim LTO for stage2 and stage3.

STAGE2_CFLAGS += -flto=jobserver -fno-fat-lto-objects -frandom-seed=1
STAGE3_CFLAGS += -flto=jobserver -fno-fat-lto-objects -frandom-seed=1
STAGE_CFLAGS += -fuse-linker-plugin
STAGEprofile_CFLAGS += -fno-lto
AR=/usr/local/bin/ar
NM=/usr/local/bin/nm
RANLIB=/usr/local/bin/ranlib
AR_FOR_TARGET=/usr/local/bin/ar
NM_FOR_TARGET=/usr/local/bin/nm
RANLIB_FOR_TARGET=/usr/local/bin/ranlib

And the following patch to force fixincludes to honor CFLAGS:

diff --git a/Makefile.in b/Makefile.in
index d1206bd..3f3f9e0 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -2819,6 +2819,7 @@ configure-build-fixincludes:
test ! -f $(BUILD_SUBDIR)/fixincludes/Makefile || exit 0; \
$(SHELL) $(srcdir)/mkinstalldirs $(BUILD_SUBDIR)/fixincludes ; \
$(BUILD_EXPORTS)  \
+   CFLAGS=$(STAGE_CFLAGS); export CFLAGS; \
echo Configuring in $(BUILD_SUBDIR)/fixincludes; \
cd $(BUILD_SUBDIR)/fixincludes || exit 1; \
case $(srcdir) in \
@@ -2854,6 +2855,7 @@ all-build-fixincludes: configure-build-fixincludes
$(BUILD_EXPORTS)  \
(cd $(BUILD_SUBDIR)/fixincludes  \
  $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_BUILD_FLAGS)  \
+   CFLAGS=$(STAGE_CFLAGS) \
$(TARGET-build-fixincludes))
 @endif build-fixincludes
 
@@ -7729,6 +7731,7 @@ configure-fixincludes:
test ! -f $(HOST_SUBDIR)/fixincludes/Makefile || exit 0; \
$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/fixincludes ; \
$(HOST_EXPORTS)  \
+   CFLAGS=$(STAGE_CFLAGS); export CFLAGS; \
echo Configuring in $(HOST_SUBDIR)/fixincludes; \
cd $(HOST_SUBDIR)/fixincludes || exit 1; \
case $(srcdir) in \
@@ -7763,6 +7766,7 @@ all-fixincludes: configure-fixincludes
$(HOST_EXPORTS)  \
(cd $(HOST_SUBDIR)/fixincludes  \
  $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS)  \
+   CFLAGS=$(STAGE_CFLAGS) \
$(TARGET-fixincludes))
 @endif fixincludes
 

With this in place you can configure and build gcc
--with-build-config=slim-lto-bootstrap .

I haven't figured out yet how to use gcc-ar et al. instead of the shell
wrappers. The plugin path seems to be hardcoded, which is unfortunate.
Would it be possible to make the wrappers more flexible, so that they
could be used during bootstrap?

-- 
Markus


Re: [RFC PATCH] update to libtool-2.4.2 and regenerate

2011-10-29 Thread Andi Kleen
 I haven't figured out yet how to use gcc-ar et al. instead of the shell
 wrappers. The plugin path seems to be hardcoded, which is unfortunate.
 Would it be possible to make the wrappers more flexible, so that they
 could be used during bootstrap?

The path can be set with GCC_EXEC_PREFIX currently. Maybe the makefile
could set that.

I considered implementing -B, but I was afraid it would conflict with
some wrapped program option. Maybe there's a way around that.

-Andi


Re: [RFC PATCH] update to libtool-2.4.2 and regenerate

2011-10-28 Thread Rainer Orth
Markus Trippelsdorf mar...@trippelsdorf.de writes:

 By popular demand, I've prepared a patch that updates the in-tree
 libtool to version 2.4.2. It is needed for lto-bootstrap with
 -fno-fat-lto-objects and FreeBSD10.x versions. 

I see that your patch doesn't deal with libgo/config, where a private
copy of libtool is kept.  Would it be possible to get rid of that, given
that 2.4.2 does support Go?

Rainer

-- 
-
Rainer Orth, Center for Biotechnology, Bielefeld University


Re: [RFC PATCH] update to libtool-2.4.2 and regenerate

2011-10-28 Thread Ian Lance Taylor
Rainer Orth r...@cebitec.uni-bielefeld.de writes:

 Markus Trippelsdorf mar...@trippelsdorf.de writes:

 By popular demand, I've prepared a patch that updates the in-tree
 libtool to version 2.4.2. It is needed for lto-bootstrap with
 -fno-fat-lto-objects and FreeBSD10.x versions. 

 I see that your patch doesn't deal with libgo/config, where a private
 copy of libtool is kept.  Would it be possible to get rid of that, given
 that 2.4.2 does support Go?

I hope so, but that can probably be a separate patch after the main one
is in.

Ian


Re: [RFC PATCH] update to libtool-2.4.2 and regenerate

2011-10-28 Thread Joseph S. Myers
On Fri, 28 Oct 2011, Markus Trippelsdorf wrote:

  What about the issues with libtool's notion of sysroots, as mentioned in 
  http://gcc.gnu.org/ml/gcc-patches/2011-01/msg02037.html - have those 
  been resolved, and if so, how?  And what about the directories only 
  present in the src repository that will also need updating for such a 
  toplevel change?
 
 Oops, you're right, libtools with_sysroot still clashes with gcc's
 notion. But that should be easily fixable by just reverting one commit
 (3334f7ed5851ef1) in libtool.
 I'm afraid I don't understand your second question. Can you elaborate on
 that?

Because of the shared toplevel build system, the gcc and src repositories 
need to have their configure scripts etc. regenerated at the same time for 
a change such as this (and it should be tested that binutils, newlib and 
the other directories in the src repository do still build properly after 
the regeneration).

-- 
Joseph S. Myers
jos...@codesourcery.com


Re: [RFC PATCH] update to libtool-2.4.2 and regenerate

2011-10-28 Thread Markus Trippelsdorf
On 2011.10.28 at 15:34 +, Joseph S. Myers wrote:
 On Fri, 28 Oct 2011, Markus Trippelsdorf wrote:
 
   What about the issues with libtool's notion of sysroots, as mentioned in 
   http://gcc.gnu.org/ml/gcc-patches/2011-01/msg02037.html - have those 
   been resolved, and if so, how?  And what about the directories only 
   present in the src repository that will also need updating for such a 
   toplevel change?
  
  Oops, you're right, libtools with_sysroot still clashes with gcc's
  notion. But that should be easily fixable by just reverting one commit
  (3334f7ed5851ef1) in libtool.
  I'm afraid I don't understand your second question. Can you elaborate on
  that?
 
 Because of the shared toplevel build system, the gcc and src repositories 
 need to have their configure scripts etc. regenerated at the same time for 
 a change such as this (and it should be tested that binutils, newlib and 
 the other directories in the src repository do still build properly after 
 the regeneration).

OK. Although it appears that it was handled in a cascaded fashion the
last time:
Last gcc update was on : 2009-12-05
Last binutils update   : 2010-01-09

-- 
Markus


Re: [RFC PATCH] update to libtool-2.4.2 and regenerate

2011-10-28 Thread Andreas Tobler

On 28.10.11 01:35, Markus Trippelsdorf wrote:

By popular demand, I've prepared a patch that updates the in-tree
libtool to version 2.4.2. It is needed for lto-bootstrap with
-fno-fat-lto-objects and FreeBSD10.x versions.
It's a pretty big update as you can see by the following diffstat. I
cannot attach the patch even as a gzip file, because of its size:

  417745 Oct 28 00:47 0001-update-to-libtool-2.4.2-and-regenerate.patch.gz

Bootstrapped on x86_64-pc-linux-gnu.


For the record:

http://gcc.gnu.org/ml/gcc-testresults/2011-10/msg03138.html

Thanks!!!
Andreas



Re: [RFC PATCH] update to libtool-2.4.2 and regenerate

2011-10-28 Thread Matthias Klose
On 10/28/2011 10:33 AM, Rainer Orth wrote:
 Markus Trippelsdorf mar...@trippelsdorf.de writes:
 
 By popular demand, I've prepared a patch that updates the in-tree
 libtool to version 2.4.2. It is needed for lto-bootstrap with
 -fno-fat-lto-objects and FreeBSD10.x versions. 
 
 I see that your patch doesn't deal with libgo/config, where a private
 copy of libtool is kept.  Would it be possible to get rid of that, given
 that 2.4.2 does support Go?

same for libjava/libltdl


[RFC PATCH] update to libtool-2.4.2 and regenerate

2011-10-27 Thread Markus Trippelsdorf
By popular demand, I've prepared a patch that updates the in-tree
libtool to version 2.4.2. It is needed for lto-bootstrap with
-fno-fat-lto-objects and FreeBSD10.x versions. 
It's a pretty big update as you can see by the following diffstat. I
cannot attach the patch even as a gzip file, because of its size:

 417745 Oct 28 00:47 0001-update-to-libtool-2.4.2-and-regenerate.patch.gz

Bootstrapped on x86_64-pc-linux-gnu. 

Comments? Stage 1 will end soon and it would be nice to get this in.

 boehm-gc/Makefile.in   |3 +
 boehm-gc/configure | 1901 ++--
 boehm-gc/include/Makefile.in   |3 +
 boehm-gc/include/gc_config.h.in|6 -
 boehm-gc/testsuite/Makefile.in |3 +
 fixincludes/configure  |   99 +-
 gcc/configure  | 1422 +--
 intl/config.h.in   |  232 +-
 intl/configure | 4764 +++-
 libffi/Makefile.in |3 +
 libffi/configure   | 1474 +--
 libffi/include/Makefile.in |3 +
 libffi/man/Makefile.in |3 +
 libffi/testsuite/Makefile.in   |3 +
 libgfortran/Makefile.in|3 +
 libgfortran/configure  | 1940 ++---
 libgomp/Makefile.in|3 +
 libgomp/configure  | 1928 ++---
 libgomp/testsuite/Makefile.in  |3 +
 libjava/Makefile.in|2 +
 libjava/classpath/Makefile.in  |3 +
 libjava/classpath/configure| 1911 ++---
 libjava/classpath/doc/Makefile.in  |3 +
 libjava/classpath/doc/api/Makefile.in  |3 +
 libjava/classpath/examples/Makefile.in |3 +
 libjava/classpath/external/Makefile.in |3 +
 libjava/classpath/external/jsr166/Makefile.in  |3 +
 .../classpath/external/relaxngDatatype/Makefile.in |3 +
 libjava/classpath/external/sax/Makefile.in |3 +
 libjava/classpath/external/w3c_dom/Makefile.in |3 +
 libjava/classpath/include/Makefile.in  |3 +
 libjava/classpath/lib/Makefile.in  |3 +
 libjava/classpath/native/Makefile.in   |3 +
 libjava/classpath/native/fdlibm/Makefile.in|3 +
 libjava/classpath/native/jawt/Makefile.in  |3 +
 libjava/classpath/native/jni/Makefile.in   |3 +
 libjava/classpath/native/jni/classpath/Makefile.in |3 +
 .../classpath/native/jni/gconf-peer/Makefile.in|3 +
 .../native/jni/gstreamer-peer/Makefile.in  |3 +
 libjava/classpath/native/jni/gtk-peer/Makefile.in  |3 +
 libjava/classpath/native/jni/java-io/Makefile.in   |3 +
 libjava/classpath/native/jni/java-lang/Makefile.in |3 +
 libjava/classpath/native/jni/java-math/Makefile.in |3 +
 libjava/classpath/native/jni/java-net/Makefile.in  |3 +
 libjava/classpath/native/jni/java-nio/Makefile.in  |3 +
 libjava/classpath/native/jni/java-util/Makefile.in |3 +
 libjava/classpath/native/jni/midi-alsa/Makefile.in |3 +
 libjava/classpath/native/jni/midi-dssi/Makefile.in |3 +
 .../classpath/native/jni/native-lib/Makefile.in|3 +
 libjava/classpath/native/jni/qt-peer/Makefile.in   |3 +
 libjava/classpath/native/jni/xmlj/Makefile.in  |3 +
 libjava/classpath/native/plugin/Makefile.in|3 +
 libjava/classpath/resource/Makefile.in |3 +
 libjava/classpath/scripts/Makefile.in  |3 +
 libjava/classpath/tools/Makefile.in|3 +
 libjava/configure  | 2206 +++---
 libjava/gcj/Makefile.in|4 +-
 libjava/include/Makefile.in|4 +-
 libjava/testsuite/Makefile.in  |4 +-
 libmudflap/Makefile.in |3 +
 libmudflap/configure   | 1474 +--
 libmudflap/testsuite/Makefile.in   |3 +
 libobjc/configure  | 1501 +--
 libquadmath/Makefile.in|3 +
 libquadmath/configure  | 1474 +--
 libssp/Makefile.in |3 +
 libssp/configure   | 1474 +--
 libstdc++-v3/Makefile.in   |3 +
 libstdc++-v3/configure | 1917 ++---
 libstdc++-v3/doc/Makefile.in   |3 +
 libstdc++-v3/include/Makefile.in   |3 +
 libstdc++-v3/libsupc++/Makefile.in |3 +
 

Re: [RFC PATCH] update to libtool-2.4.2 and regenerate

2011-10-27 Thread Andi Kleen
Markus Trippelsdorf mar...@trippelsdorf.de writes:

 By popular demand, I've prepared a patch that updates the in-tree
 libtool to version 2.4.2. It is needed for lto-bootstrap with
 -fno-fat-lto-objects and FreeBSD10.x versions. 
 It's a pretty big update as you can see by the following diffstat. I
 cannot attach the patch even as a gzip file, because of its size:

  417745 Oct 28 00:47 0001-update-to-libtool-2.4.2-and-regenerate.patch.gz

 Bootstrapped on x86_64-pc-linux-gnu. 

Can you put it up for download somewhere? Does the slim bootstrap
now work on Linux?

I presume it needs at least the gcc-ar patch too, unless you use
custom AR/RANLIB wrappers.

The last time I tried slim bootstrap a long time ago I also ran into
some problems with the libcpp Makefiles.

But I agree it would be good to have for 4.7: it would be good
if the compiler could be actually bootstrapped with slim LTO,
and then a slim-lto-bootstrap config could be added.

-Andi

-- 
a...@linux.intel.com -- Speaking for myself only


Re: [RFC PATCH] update to libtool-2.4.2 and regenerate

2011-10-27 Thread Joseph S. Myers
On Fri, 28 Oct 2011, Markus Trippelsdorf wrote:

 By popular demand, I've prepared a patch that updates the in-tree
 libtool to version 2.4.2. It is needed for lto-bootstrap with
 -fno-fat-lto-objects and FreeBSD10.x versions. 
 It's a pretty big update as you can see by the following diffstat. I
 cannot attach the patch even as a gzip file, because of its size:
 
  417745 Oct 28 00:47 0001-update-to-libtool-2.4.2-and-regenerate.patch.gz
 
 Bootstrapped on x86_64-pc-linux-gnu. 
 
 Comments? Stage 1 will end soon and it would be nice to get this in.

What about the issues with libtool's notion of sysroots, as mentioned in 
http://gcc.gnu.org/ml/gcc-patches/2011-01/msg02037.html - have those 
been resolved, and if so, how?  And what about the directories only 
present in the src repository that will also need updating for such a 
toplevel change?

-- 
Joseph S. Myers
jos...@codesourcery.com


Re: [RFC PATCH] update to libtool-2.4.2 and regenerate

2011-10-27 Thread Markus Trippelsdorf
On 2011.10.27 at 17:29 -0700, Andi Kleen wrote:
 Markus Trippelsdorf mar...@trippelsdorf.de writes:
 
  By popular demand, I've prepared a patch that updates the in-tree
  libtool to version 2.4.2. It is needed for lto-bootstrap with
  -fno-fat-lto-objects and FreeBSD10.x versions. 
  It's a pretty big update as you can see by the following diffstat. I
  cannot attach the patch even as a gzip file, because of its size:
 
   417745 Oct 28 00:47 0001-update-to-libtool-2.4.2-and-regenerate.patch.gz
 
  Bootstrapped on x86_64-pc-linux-gnu. 
 
 Can you put it up for download somewhere? Does the slim bootstrap
 now work on Linux?

http://trippelsdorf.de/0001-update-to-libtool-2.4.2-and-regenerate.patch.bz2

 I presume it needs at least the gcc-ar patch too, unless you use
 custom AR/RANLIB wrappers.

Yes, slim bootstrap now works on Linux. One has to point AR,
AR_FOR_TARGET, etc. to the wrappers and add -fuse-linker-plugin to the
various CFLAGS (BOOT_CFLAGS, STAGE1_CFLAGS and CFLAGS_FOR_TARGET).

 The last time I tried slim bootstrap a long time ago I also ran into
 some problems with the libcpp Makefiles.

I've seen no problems thus far in my testing.

-- 
Markus


Re: [RFC PATCH] update to libtool-2.4.2 and regenerate

2011-10-27 Thread Markus Trippelsdorf
On 2011.10.28 at 00:41 +, Joseph S. Myers wrote:
 On Fri, 28 Oct 2011, Markus Trippelsdorf wrote:
 
  By popular demand, I've prepared a patch that updates the in-tree
  libtool to version 2.4.2. It is needed for lto-bootstrap with
  -fno-fat-lto-objects and FreeBSD10.x versions. 
  It's a pretty big update as you can see by the following diffstat. I
  cannot attach the patch even as a gzip file, because of its size:
  
   417745 Oct 28 00:47 0001-update-to-libtool-2.4.2-and-regenerate.patch.gz
  
  Bootstrapped on x86_64-pc-linux-gnu. 
  
  Comments? Stage 1 will end soon and it would be nice to get this in.
 
 What about the issues with libtool's notion of sysroots, as mentioned in 
 http://gcc.gnu.org/ml/gcc-patches/2011-01/msg02037.html - have those 
 been resolved, and if so, how?  And what about the directories only 
 present in the src repository that will also need updating for such a 
 toplevel change?

Oops, you're right, libtools with_sysroot still clashes with gcc's
notion. But that should be easily fixable by just reverting one commit
(3334f7ed5851ef1) in libtool.
I'm afraid I don't understand your second question. Can you elaborate on
that?
And BTW my patch was just meant to get the ball rolling, not necessary
as the final solution.

-- 
Markus