mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-03 04:12:10 +08:00
648d586d84
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.
124 lines
3.8 KiB
Plaintext
124 lines
3.8 KiB
Plaintext
# Copyright (C) 1992-2014 Free Software Foundation, Inc.
|
|
#
|
|
# This file is free software; the Free Software Foundation gives
|
|
# 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, EXTRA-ARGS)
|
|
# ---------------------------
|
|
#
|
|
# Configure a subdirectory. This is an alternative to
|
|
# AC_CONFIG_SUBDIRS that allows pointing the source directory
|
|
# somewhere else. The build directory is always a subdirectory of the
|
|
# top build directory. This is heavilly based on Autoconf 2.64's
|
|
# _AC_OUTPUT_SUBDIRS.
|
|
#
|
|
# 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.
|
|
ac_sub_configure_args=
|
|
ac_prev=
|
|
eval "set x $ac_configure_args"
|
|
shift
|
|
for ac_arg
|
|
do
|
|
if test -n "$ac_prev"; then
|
|
ac_prev=
|
|
continue
|
|
fi
|
|
case $ac_arg in
|
|
-cache-file | --cache-file | --cache-fil | --cache-fi \
|
|
| --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
|
|
ac_prev=cache_file ;;
|
|
-cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
|
|
| --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* \
|
|
| --c=*)
|
|
;;
|
|
--config-cache | -C)
|
|
;;
|
|
-srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
|
|
ac_prev=srcdir ;;
|
|
-srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
|
|
;;
|
|
-prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
|
|
ac_prev=prefix ;;
|
|
-prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
|
|
;;
|
|
--disable-option-checking)
|
|
;;
|
|
*)
|
|
case $ac_arg in
|
|
*\'*) ac_arg=`AS_ECHO(["$ac_arg"]) | sed "s/'/'\\\\\\\\''/g"` ;;
|
|
esac
|
|
AS_VAR_APPEND([ac_sub_configure_args], [" '$ac_arg'"]) ;;
|
|
esac
|
|
done
|
|
|
|
# Always prepend --prefix to ensure using the same prefix
|
|
# in subdir configurations.
|
|
ac_arg="--prefix=$prefix"
|
|
case $ac_arg in
|
|
*\'*) ac_arg=`AS_ECHO(["$ac_arg"]) | sed "s/'/'\\\\\\\\''/g"` ;;
|
|
esac
|
|
ac_sub_configure_args="'$ac_arg' $ac_sub_configure_args"
|
|
|
|
# Pass --silent
|
|
if test "$silent" = yes; then
|
|
ac_sub_configure_args="--silent $ac_sub_configure_args"
|
|
fi
|
|
|
|
# Always prepend --disable-option-checking to silence warnings, since
|
|
# different subdirs can have different --enable and --with options.
|
|
ac_sub_configure_args="--disable-option-checking $ac_sub_configure_args"
|
|
|
|
ac_popdir=`pwd`
|
|
ac_dir=$in_build
|
|
|
|
ac_msg="=== configuring in $ac_dir (`pwd`/$ac_dir)"
|
|
_AS_ECHO_LOG([$ac_msg])
|
|
_AS_ECHO([$ac_msg])
|
|
AS_MKDIR_P(["$ac_dir"])
|
|
|
|
case $srcdir in
|
|
[[\\/]]* | ?:[[\\/]]* )
|
|
ac_srcdir=$srcdir/$in_src ;;
|
|
*) # Relative name.
|
|
ac_srcdir=../$srcdir/$in_src ;;
|
|
esac
|
|
|
|
cd "$ac_dir"
|
|
|
|
ac_sub_configure=$ac_srcdir/configure
|
|
|
|
# Make the cache file name correct relative to the subdirectory.
|
|
case $cache_file in
|
|
[[\\/]]* | ?:[[\\/]]* ) ac_sub_cache_file=$cache_file ;;
|
|
*) # Relative name.
|
|
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 \
|
|
--cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" ||
|
|
AC_MSG_ERROR([$ac_sub_configure failed for $ac_dir])
|
|
|
|
cd "$ac_popdir"
|
|
])# ACX_CONFIGURE_DIR
|