diff options
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | Makefile.in | 2 | ||||
-rw-r--r-- | Makefile.tpl | 2 | ||||
-rw-r--r-- | config/bootstrap-debug-big.mk | 2 | ||||
-rw-r--r-- | config/bootstrap-debug-lean.mk | 16 | ||||
-rwxr-xr-x | configure | 36 | ||||
-rw-r--r-- | configure.ac | 33 | ||||
-rw-r--r-- | contrib/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/doc/install.texi | 31 |
10 files changed, 114 insertions, 30 deletions
diff --git a/ChangeLog b/ChangeLog index 2afe28fb32e..6c297800263 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2009-09-03 Alexandre Oliva <aoliva@redhat.com> + + * configure.ac (--with-build-config): New. Set BUILD_CONFIG. + Default to bootstrap-debug only if compare-debug works. + * configure: Rebuilt. + * Makefile.tpl: Make BUILD_CONFIG configure-configurable. + * Makefile.in: Rebuilt. + 2009-09-02 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> * MAINTAINERS (OS Port Maintainers): Update my email address. diff --git a/Makefile.in b/Makefile.in index b46c5e94d64..044f849d0aa 100644 --- a/Makefile.in +++ b/Makefile.in @@ -771,7 +771,7 @@ EXTRA_GCC_FLAGS = \ GCC_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(EXTRA_GCC_FLAGS) @if gcc -BUILD_CONFIG = bootstrap-debug +BUILD_CONFIG = @BUILD_CONFIG@ ifneq ($(BUILD_CONFIG),) include $(foreach CONFIG, $(BUILD_CONFIG), $(srcdir)/config/$(CONFIG).mk) endif diff --git a/Makefile.tpl b/Makefile.tpl index b4e02d55821..6c63d950fc6 100644 --- a/Makefile.tpl +++ b/Makefile.tpl @@ -619,7 +619,7 @@ EXTRA_GCC_FLAGS = \ GCC_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(EXTRA_GCC_FLAGS) @if gcc -BUILD_CONFIG = bootstrap-debug +BUILD_CONFIG = @BUILD_CONFIG@ ifneq ($(BUILD_CONFIG),) include $(foreach CONFIG, $(BUILD_CONFIG), $(srcdir)/config/$(CONFIG).mk) endif diff --git a/config/bootstrap-debug-big.mk b/config/bootstrap-debug-big.mk index e657735e3b3..855ddc2a642 100644 --- a/config/bootstrap-debug-big.mk +++ b/config/bootstrap-debug-big.mk @@ -3,6 +3,6 @@ # stage3, it generates dumps during stage2 and stage3, saving them all # until the final compare. -STAGE2_CFLAGS += -gtoggle -fdump-final-insns +STAGE2_CFLAGS += -fdump-final-insns STAGE3_CFLAGS += -fdump-final-insns do-compare = $(SHELL) $(srcdir)/contrib/compare-debug $$f1 $$f2 diff --git a/config/bootstrap-debug-lean.mk b/config/bootstrap-debug-lean.mk index 5666d3f2119..e215280b09f 100644 --- a/config/bootstrap-debug-lean.mk +++ b/config/bootstrap-debug-lean.mk @@ -1,11 +1,11 @@ -# This BUILD_CONFIG option is a bit like bootstrap-debug, but in -# addition to comparing stripped object files, it also compares -# compiler internal state during stage3. +# This BUILD_CONFIG option is a bit like bootstrap-debug, but rather +# than comparing stripped object files, it compares compiler internal +# state during stage3. Both can be used simultaneously. -# This makes it slower than bootstrap-debug, for there's additional -# dumping and recompilation during stage3. bootstrap-debug-big can -# avoid the recompilation, if plenty of disk space is available. +# This makes it slower than bootstrap-debug alone, for there's +# additional dumping and recompilation during stage3. +# bootstrap-debug-big can avoid the recompilation, if plenty of disk +# space is available. -STAGE2_CFLAGS += -gtoggle -fcompare-debug= +STAGE2_CFLAGS += -fcompare-debug= STAGE3_CFLAGS += -fcompare-debug -do-compare = $(SHELL) $(srcdir)/contrib/compare-debug $$f1 $$f2 diff --git a/configure b/configure index e04c6b74751..c8f2fcf1516 100755 --- a/configure +++ b/configure @@ -631,6 +631,7 @@ build_tooldir tooldir GCC_SHLIB_SUBDIR RPATH_ENVVAR +BUILD_CONFIG CXXFLAGS_FOR_TARGET CFLAGS_FOR_TARGET DEBUG_PREFIX_CFLAGS_FOR_TARGET @@ -6569,13 +6570,42 @@ $as_echo "$as_me: WARNING: trying to bootstrap a cross compiler" >&2;} esac # Adjust the toplevel makefile according to whether bootstrap was selected. -case "$enable_bootstrap" in +case $enable_bootstrap in yes) - bootstrap_suffix=bootstrap ;; + bootstrap_suffix=bootstrap + BUILD_CONFIG=bootstrap-debug + ;; no) - bootstrap_suffix=no-bootstrap ;; + bootstrap_suffix=no-bootstrap + BUILD_CONFIG= + ;; esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for default BUILD_CONFIG" >&5 +$as_echo_n "checking for default BUILD_CONFIG... " >&6; } +if test "x${with_build_config}" != x; then + BUILD_CONFIG=$with_build_config +else + case $BUILD_CONFIG in + bootstrap-debug) + if echo "int f (void) { return 0; }" > conftest.c && + ${CC} -c conftest.c && + mv conftest.o conftest.o.g0 && + ${CC} -c -g conftest.c && + mv conftest.o conftest.o.g && + ${srcdir}/contrib/compare-debug conftest.o.g0 conftest.o.g; then + : + else + BUILD_CONFIG= + fi + rm -f conftest.c conftest.o conftest.o.g0 conftest.o.g + ;; + esac +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $BUILD_CONFIG" >&5 +$as_echo "$BUILD_CONFIG" >&6; } + + for module in ${build_configdirs} ; do if test -z "${no_recursion}" \ && test -f ${build_subdir}/${module}/Makefile; then diff --git a/configure.ac b/configure.ac index 48fa58019ed..caff7e5af13 100644 --- a/configure.ac +++ b/configure.ac @@ -2459,13 +2459,40 @@ case "$have_compiler:$host:$target:$enable_bootstrap" in esac # Adjust the toplevel makefile according to whether bootstrap was selected. -case "$enable_bootstrap" in +case $enable_bootstrap in yes) - bootstrap_suffix=bootstrap ;; + bootstrap_suffix=bootstrap + BUILD_CONFIG=bootstrap-debug + ;; no) - bootstrap_suffix=no-bootstrap ;; + bootstrap_suffix=no-bootstrap + BUILD_CONFIG= + ;; esac +AC_MSG_CHECKING(for default BUILD_CONFIG) +if test "x${with_build_config}" != x; then + BUILD_CONFIG=$with_build_config +else + case $BUILD_CONFIG in + bootstrap-debug) + if echo "int f (void) { return 0; }" > conftest.c && + ${CC} -c conftest.c && + mv conftest.o conftest.o.g0 && + ${CC} -c -g conftest.c && + mv conftest.o conftest.o.g && + ${srcdir}/contrib/compare-debug conftest.o.g0 conftest.o.g; then + : + else + BUILD_CONFIG= + fi + rm -f conftest.c conftest.o conftest.o.g0 conftest.o.g + ;; + esac +fi +AC_MSG_RESULT($BUILD_CONFIG) +AC_SUBST(BUILD_CONFIG) + for module in ${build_configdirs} ; do if test -z "${no_recursion}" \ && test -f ${build_subdir}/${module}/Makefile; then diff --git a/contrib/ChangeLog b/contrib/ChangeLog index 77d71700464..d15084e0bbf 100644 --- a/contrib/ChangeLog +++ b/contrib/ChangeLog @@ -1,3 +1,10 @@ +2009-09-03 Alexandre Oliva <aoliva@redhat.com> + + * bootstrap-debug-big.mk (STAGE2_CFLAGS): Drop -gtoggle. + * bootstrap-debug-lean.mk: Update comments. + (STAGE2_CFLAGS): Likewise. + (do-compare): Don't override. + 2009-09-01 Alexandre Oliva <aoliva@redhat.com> * compare-debug: Look for .gkd files and compare them. diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 70203526678..fef23a8e251 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2009-09-03 Alexandre Oliva <aoliva@redhat.com> + + * doc/invoke.texi (BUILD_CONFIG): Document --with-build-config. + (bootstrap-debug): Explain conditions in which it becomes default. + (bootstrap-debug-big): Rather than duplicate bootstrap-debug, + make it add to it. + 2009-09-03 Namhyung Kim <namhyung@gmail.com> * doc/invoke.texi (Optimize Options): Move diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi index 9dea18c43ca..e0098bc156a 100644 --- a/gcc/doc/install.texi +++ b/gcc/doc/install.texi @@ -2080,11 +2080,13 @@ the one you are building on: for example, you could build a @code{powerpc64-unknown-linux-gnu} host. In this case, pass @option{--enable-bootstrap} to the configure script. -@code{BUILD_CONFIG} can be used to bring in additional customization to -the build. It can be set to a whitespace-separated list of names. For -each such @code{NAME}, top-level @file{config/@code{NAME}.mk} will be -included by the top-level @file{Makefile}, bringing in any settings it -contains. Some examples are: +@code{BUILD_CONFIG} can be used to bring in additional customization +to the build. It can be set to a whitespace-separated list of names. +For each such @code{NAME}, top-level @file{config/@code{NAME}.mk} will +be included by the top-level @file{Makefile}, bringing in any settings +it contains. The default @code{BUILD_CONFIG} can be set using the +configure option @option{--with-build-config=@code{NAME}...}. Some +examples of supported build configurations are: @table @asis @item @samp{bootstrap-O1} @@ -2097,19 +2099,22 @@ Analogous to @code{bootstrap-O1}. @item @samp{bootstrap-debug} Verifies that the compiler generates the same executable code, whether -or not it is asked to emit debug information. To this end, this option -builds stage2 host programs without debug information, and uses +or not it is asked to emit debug information. To this end, this +option builds stage2 host programs without debug information, and uses @file{contrib/compare-debug} to compare them with the stripped stage3 object files. If @code{BOOT_CFLAGS} is overridden so as to not enable debug information, stage2 will have it, and stage3 won't. This option -is enabled by default when GCC bootstrapping is enabled: in addition to -better test coverage, it makes default bootstraps faster and leaner. +is enabled by default when GCC bootstrapping is enabled, if +@code{strip} can turn object files compiled with and without debug +info into identical object files. In addition to better test +coverage, this option makes default bootstraps faster and leaner. @item @samp{bootstrap-debug-big} -In addition to the checking performed by @code{bootstrap-debug}, this -option saves internal compiler dumps during stage2 and stage3 and -compares them as well, which helps catch additional potential problems, -but at a great cost in terms of disk space. +Rather than comparing stripped object files, as in +@code{bootstrap-debug}, this option saves internal compiler dumps +during stage2 and stage3 and compares them as well, which helps catch +additional potential problems, but at a great cost in terms of disk +space. It can be specified in addition to @samp{bootstrap-debug}. @item @samp{bootstrap-debug-lean} This option saves disk space compared with @code{bootstrap-debug-big}, |