From patchwork Wed Dec 3 12:08:29 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joel Brobecker X-Patchwork-Id: 4050 Received: (qmail 21084 invoked by alias); 3 Dec 2014 12:08:48 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 21070 invoked by uid 89); 3 Dec 2014 12:08:47 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=0.3 required=5.0 tests=AWL, BAYES_00, SPF_PASS, T_RP_MATCHES_RCVD, URIBL_BLACK autolearn=no version=3.3.2 X-HELO: rock.gnat.com Received: from rock.gnat.com (HELO rock.gnat.com) (205.232.38.15) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-SHA encrypted) ESMTPS; Wed, 03 Dec 2014 12:08:45 +0000 Received: from localhost (localhost.localdomain [127.0.0.1]) by filtered-rock.gnat.com (Postfix) with ESMTP id 700401167AE; Wed, 3 Dec 2014 07:08:42 -0500 (EST) Received: from rock.gnat.com ([127.0.0.1]) by localhost (rock.gnat.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id NxuTuyFQaPfm; Wed, 3 Dec 2014 07:08:42 -0500 (EST) Received: from kwai.gnat.com (kwai.gnat.com [205.232.38.4]) by rock.gnat.com (Postfix) with ESMTP id 5ECA3116765; Wed, 3 Dec 2014 07:08:42 -0500 (EST) Received: by kwai.gnat.com (Postfix, from userid 4233) id 351AD91A7D; Wed, 3 Dec 2014 07:08:42 -0500 (EST) From: Joel Brobecker To: gdb-patches@sourceware.org Cc: Yao Qi Subject: [RFA] configure gdb/gnulib with --disable-largefile if largefile support disabled. Date: Wed, 3 Dec 2014 07:08:29 -0500 Message-Id: <1417608509-15533-1-git-send-email-brobecker@adacore.com> In-Reply-To: <20141203104812.GA14666@adacore.com> References: <20141203104812.GA14666@adacore.com> This patch mostly aims at fixing a GDB build failure on 32bit Solaris systems (Sparc and x86), due to a recent gnulib update adding the readlink module. But it might also fix related issues when configuring with --disable-largefile. A side-effect of the gnulib readlink module addition is that it caused largefile support to be added as well, and in particular gnulib/import/m4/largefile.m4 introduced the following new #define in gnulib's config.in: | +/* Number of bits in a file offset, on hosts where this is settable. */ | +#undef _FILE_OFFSET_BITS When defined to 64, it triggers an issue with procfs.h while trying to build sparc-sol2-nat.c: | #if !defined(_LP64) && _FILE_OFFSET_BITS == 64 | #error "Cannot use procfs in the large file compilation environment" | #endif As it turns out, this is a fairly familiar problem, and one of the reasons behind ACX_LARGEFILE having been created. In that macro, we have some code which disables largefile support on solaris hosts: | sparc-*-solaris*|i[3-7]86-*-solaris*) | changequote([,])dnl | # On native 32bit sparc and ia32 solaris, large-file and procfs support | # are mutually exclusive; and without procfs support, the bfd/ elf module | # cannot provide certain routines such as elfcore_write_prpsinfo | # or elfcore_write_prstatus. So unless the user explicitly requested | # large-file support through the --enable-largefile switch, disable | # large-file support in favor of procfs support. | test "${target}" = "${host}" -a "x$plugins" = xno \ | && : ${enable_largefile="no"} | ;; But gnulib ignores this fact, and so tries to determine how to enable large-file support irrespective of whether we want it or not. This patch fixes the issue by passing --disable-largefile to gnulib's configure when large-file support in GDB is disabled. This is done by first enhancing ACX_CONFIGURE_DIR to allow us to pass extra arguments to be passed to the configure command, and then by modifying GDB's configure to pass --disable-largefile if large-file support is disabled. gdb/ChangeLog: * acx_configure_dir.m4 (ACX_CONFIGURE_DIR): Add support for new "EXTRA-ARGS" parameter. * configure.ac: If large-file support is disabled in GDB, pass --disable-largefile to ACX_CONFIGURE_DIR call for "gnulib". * configure: Regenerate. gdb/gdbserver/ChangeLog: * configure.ac: If large-file support is disabled in GDBserver, pass --disable-largefile to ACX_CONFIGURE_DIR call for "gnulib". * configure: Regenerate. Tested by rebuilding on sparc-solaris and x86_64-linux (with gdbserver). This fixes the build failure on sparc-solaris. I also verified in gnulib's config.log file that we pass --disable-largefile in the solaris case, while we do not in the GNU/Linux case. OK to apply? Thank you, diff --git a/gdb/acx_configure_dir.m4 b/gdb/acx_configure_dir.m4 index 5a76eba..f5ae3a2 100644 --- a/gdb/acx_configure_dir.m4 +++ b/gdb/acx_configure_dir.m4 @@ -4,7 +4,7 @@ # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. -# ACX_CONFIGURE_DIR(SRC-DIR-NAME, BUILD-DIR-NAME) +# ACX_CONFIGURE_DIR(SRC-DIR-NAME, BUILD-DIR-NAME, EXTRA-ARGS) # --------------------------- # # Configure a subdirectory. This is an alternative to @@ -16,11 +16,14 @@ # Inputs: # - SRC-DIR-NAME is the source directory, relative to $srcdir. # - BUILD-DIR-NAME is `top-build -> build' +# - EXTRA-ARGS is an optional list of extra arguments to add +# at the end of the configure command. AC_DEFUN([ACX_CONFIGURE_DIR], [ in_src=$1 in_build=$2 + in_extra_args=$3 # Remove --cache-file, --srcdir, and --disable-option-checking arguments # so they do not pile up. @@ -105,6 +108,11 @@ AC_DEFUN([ACX_CONFIGURE_DIR], ac_sub_cache_file=$ac_top_build_prefix$cache_file ;; esac + if test -n "$in_extra_args"; then + # Add the extra args at the end. + ac_sub_configure_args="$ac_sub_configure_args $in_extra_args" + fi + AC_MSG_NOTICE([running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir]) # The eval makes quoting arguments work. eval "\$SHELL \"\$ac_sub_configure\" $ac_sub_configure_args \ diff --git a/gdb/configure b/gdb/configure index e449aa6..d074aef 100755 --- a/gdb/configure +++ b/gdb/configure @@ -4836,6 +4836,12 @@ $as_echo "no" >&6; } fi +gnulib_extra_configure_args= +# If large-file support is disabled, make sure gnulib does the same. +if test "$enable_largefile" = no; then +gnulib_extra_configure_args="$gnulib_extra_configure_args --disable-largefile" +fi + # Configure gnulib. We need to build gnulib under some other # directory not "gnulib", to avoid the problem of both GDB and # GDBserver wanting to build it in the same directory, when building @@ -4843,6 +4849,7 @@ fi in_src="gnulib" in_build="build-gnulib" + in_extra_args="$gnulib_extra_configure_args" # Remove --cache-file, --srcdir, and --disable-option-checking arguments # so they do not pile up. @@ -4927,6 +4934,11 @@ fi ac_sub_cache_file=$ac_top_build_prefix$cache_file ;; esac + if test -n "$in_extra_args"; then + # Add the extra args at the end. + ac_sub_configure_args="$ac_sub_configure_args $in_extra_args" + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5 $as_echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;} # The eval makes quoting arguments work. diff --git a/gdb/configure.ac b/gdb/configure.ac index cd4c183..79ebc99 100644 --- a/gdb/configure.ac +++ b/gdb/configure.ac @@ -51,11 +51,18 @@ esac AM_CONDITIONAL(GMAKE, test "$MAKE_IS_GNU" = yes) AC_PROG_MAKE_SET +gnulib_extra_configure_args= +# If large-file support is disabled, make sure gnulib does the same. +if test "$enable_largefile" = no; then +gnulib_extra_configure_args="$gnulib_extra_configure_args --disable-largefile" +fi + # Configure gnulib. We need to build gnulib under some other # directory not "gnulib", to avoid the problem of both GDB and # GDBserver wanting to build it in the same directory, when building # in the source dir. -ACX_CONFIGURE_DIR(["gnulib"], ["build-gnulib"]) +ACX_CONFIGURE_DIR(["gnulib"], ["build-gnulib"], + ["$gnulib_extra_configure_args"]) dnl List of object files and targets accumulated by configure. diff --git a/gdb/gdbserver/configure b/gdb/gdbserver/configure index 45838f5..45efc51 100755 --- a/gdb/gdbserver/configure +++ b/gdb/gdbserver/configure @@ -4514,6 +4514,12 @@ $as_echo "no" >&6; } fi +gnulib_extra_configure_args= +# If large-file support is disabled, make sure gnulib does the same. +if test "$enable_largefile" = no; then +gnulib_extra_configure_args="$gnulib_extra_configure_args --disable-largefile" +fi + # Configure gnulib. We can't use AC_CONFIG_SUBDIRS as that'd expect # to find the the source subdir to be configured directly under # gdbserver/. We need to build gnulib under some other directory not @@ -4522,6 +4528,7 @@ fi in_src="../gnulib" in_build="build-gnulib-gdbserver" + in_extra_args="$gnulib_extra_configure_args" # Remove --cache-file, --srcdir, and --disable-option-checking arguments # so they do not pile up. @@ -4606,6 +4613,11 @@ fi ac_sub_cache_file=$ac_top_build_prefix$cache_file ;; esac + if test -n "$in_extra_args"; then + # Add the extra args at the end. + ac_sub_configure_args="$ac_sub_configure_args $in_extra_args" + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5 $as_echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;} # The eval makes quoting arguments work. @@ -4619,6 +4631,7 @@ $as_echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cach in_src="../../libiberty" in_build="build-libiberty-gdbserver" + in_extra_args= # Remove --cache-file, --srcdir, and --disable-option-checking arguments # so they do not pile up. @@ -4703,6 +4716,11 @@ $as_echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cach ac_sub_cache_file=$ac_top_build_prefix$cache_file ;; esac + if test -n "$in_extra_args"; then + # Add the extra args at the end. + ac_sub_configure_args="$ac_sub_configure_args $in_extra_args" + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5 $as_echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;} # The eval makes quoting arguments work. diff --git a/gdb/gdbserver/configure.ac b/gdb/gdbserver/configure.ac index f59e65b..c9bb15d 100644 --- a/gdb/gdbserver/configure.ac +++ b/gdb/gdbserver/configure.ac @@ -69,12 +69,19 @@ esac AM_CONDITIONAL(GMAKE, test "$MAKE_IS_GNU" = yes) AC_PROG_MAKE_SET +gnulib_extra_configure_args= +# If large-file support is disabled, make sure gnulib does the same. +if test "$enable_largefile" = no; then +gnulib_extra_configure_args="$gnulib_extra_configure_args --disable-largefile" +fi + # Configure gnulib. We can't use AC_CONFIG_SUBDIRS as that'd expect # to find the the source subdir to be configured directly under # gdbserver/. We need to build gnulib under some other directory not # "gnulib", to avoid the problem of both GDB and GDBserver wanting to # build it in the same directory, when building in the source dir. -ACX_CONFIGURE_DIR(["../gnulib"], ["build-gnulib-gdbserver"]) +ACX_CONFIGURE_DIR(["../gnulib"], ["build-gnulib-gdbserver"], + ["$gnulib_extra_configure_args"]) ACX_CONFIGURE_DIR(["../../libiberty"], ["build-libiberty-gdbserver"])