[PATCH] Fix 64-bit BFD detection causing build failures

Guinevere Larsen guinevere@redhat.com
Fri Feb 14 11:41:41 GMT 2025


On 2/12/25 3:36 PM, Maciej W. Rozycki wrote:
> We have a discrepancy with 64-bit BFD handling across our component
> subdirectories leading to link failures such as:
>
> ld: ../opcodes/.libs/libopcodes.a(disassemble.o): in function `disassembler': disassemble.c:(.text+0x65): undefined reference to `print_insn_alpha'
> ld: disassemble.c:(.text+0x105): undefined reference to `print_insn_ia64'
> ld: disassemble.c:(.text+0x11d): undefined reference to `print_insn_loongarch'
> ld: disassemble.c:(.text+0x1a1): undefined reference to `print_insn_big_mips'
> [...]
>
> with some configurations having a 32-bit host and 64-bit BFD, such as:
> `--host=i386-linux-gnu --target=riscv64-linux-gnu --enable-targets=all'.
> This is ultimately due to how 64-bit BFD is enabled for bfd/ itself and
> other subdirectorses and has been a regression from commit 1d5269c994bf
> ("unify 64-bit bfd checks").
>
> For bfd/ the BFD_64_BIT autoconf macro from config/bfd64.m4 is used
> combined with this logic in bfd/configure.ac:
>
> case ${host64}-${target64}-${want64} in
>    *true*)
>      wordsize=64
>      bfd64_libs='$(BFD64_LIBS)'
>      all_backends='$(BFD64_BACKENDS) $(BFD32_BACKENDS)'
>      [...]
>      ;;
>    false-false-false)
>      wordsize=32
>      all_backends='$(BFD32_BACKENDS)'
>      ;;
> esac
>
> where the value of ${wordsize} switches between 32-bit and 64-bit BFD
> via these pieces:
>
> #define BFD_ARCH_SIZE @wordsize@
>
> and:
>
> #if BFD_ARCH_SIZE >= 64
> #define BFD64
> #endif
>
> in bfd/bfd-in.h, which ultimately becomes a part of "bfd.h".
>
> Then ${host64} is determined in bfd/configure.ac from the host's word
> size, via the host's pointer size:
>
> if test "x${ac_cv_sizeof_void_p}" = "x8"; then
>    host64=true
> fi
>
> And ${target64} is determined in bfd/configure.ac from the target's word
> size:
>
>      if test ${target_size} = 64; then
> 	target64=true
>      fi
>
> Where multiple targets have been requested with `--enable-targets=all'
> the presence of any 64-bit target will set "true" here.
>
> Finally ${want64} is set according to `--enable-64-bit-bfd' user option
> with an arrangement involving BFD_64_BIT:
>
> BFD_64_BIT
> if test $enable_64_bit_bfd = yes ; then
>    want64=true
> else
>    want64=false
> fi
>
> which also, redundantly, checks and sets its result upon the host's word
> size.  Lastly ${want64} is also selectively set by target fragments in
> bfd/config.bfd, which mostly if not completely overlaps with ${target64}
> setting as described above.
>
> Conversely other subdirectories only rely on BFD_64_BIT, so they fail to
> notice that BFD is 64-bit and do not enable their 64-bit handling where
> the host requested is 32-bit and 64-bit BFD has been enabled other than
> with `--enable-64-bit-bfd'.  One consequence is opcodes/disassemble.c
> enables calls to its numerous own 64-bit backends by checking the BFD64
> macro from "bfd.h", however does not actually enable said backends in
> its Makefile.  Hence the link errors quoted above.
>
> Address the problem then by moving the `--enable-64-bit-bfd' option back
> to bfd/configure.ac and remove the call to BFD_64_BIT from there and
> then rewrite the macro in terms of checking for the presence of BFD64
> macro in "bfd.h", which is the canonical way of determining whether BFD
> is 64-bit or not.
>
> Rather than running `grep' directly on ../bfd/bfd-in3.h as the opcodes/
> fragment used to before the problematic commit:
>
>      if grep '#define BFD_ARCH_SIZE 64' ../bfd/bfd-in3.h > /dev/null; then
>
> run the preprocessor on "bfd.h", which allows to invoke the macro from
> configure.ac files placed in subdirectories located at deeper levels, by
> relying on the preprocessor's search path.
>
> This requires however that the invokers rely on `all-bfd' rather than
> `configure-bfd' for their `configure' invocation stage, because "bfd.h"
> is made by `make all' rather than `configure' in bfd/.
>
> The "ac_cv_" prefix is the namespace reserved by autoconf for own use,
> so choose "bfd_cv_" for the cache variable.  It is safe to use one here,
> because the setting of BFD64 will only ever change if the configured
> host or target does and that triggers a consistency check such as:
>
> configure: loading cache ./config.cache
> configure: error: `target_alias' has changed since the previous run:
> configure:   former value:  `riscv64-linux-gnu'
> configure:   current value: `i386-linux-gnu'
> configure: error: in `.../libiberty':
> configure: error: changes in the environment can compromise the build
> configure: error: run `make distclean' and/or `rm ./config.cache' and start over
>
> and the cache will have to be removed to proceed.
>
> Last but not least remove the hack from gdb/configure.ac to fail builds
> for `mips*-*-*' hosts where `--enable-targets=all' has been requested,
> but `--enable-64-bit-bfd' has not as it's no longer needed.  Such builds
> complete successfully now, having enabled 64-bit BFD implicitly.
> ---
> Hi,
>
>   Verified for binutils and GDB by building with a `powerpc64le-linux-gnu'
> build and `i386-linux-gnu' and `mips-linux-gnu' native hosts, and then the
> same build and hosts and the `riscv64-linux-gnu' target (and verifying in
> opcodes/config.log that 64-bit BFD has or hasn't been detected, according
> to the expectation) with and without `--enable-targets=all'.
>
>   For binutils also verified via regression testing across my usual set of
> targets (currently counting 238), with `--enable-targets=all'.
>
>   OK to apply?
>
>    Maciej
> ---

Hi!

As I said in my other email, I'm not confident enough in autotools to 
properly review, but I have tested and it solves the build issue in the 
mips machine I first ran into, so feel free to add my test tag

Tested-By: Guinevere Larsen <guinevere@redhat.com>

-- 
Cheers,
Guinevere Larsen
She/Her/Hers

>   Makefile.def         |    4
>   Makefile.in          |   40 +++----
>   bfd/configure        |   60 ----------
>   bfd/configure.ac     |    8 +
>   config/bfd64.m4      |   40 ++++---
>   gdb/configure        |  115 ++++++--------------
>   gdb/configure.ac     |   15 --
>   gdb/configure.tgt    |    8 -
>   ld/configure         |  289 ++++++---------------------------------------------
>   ld/configure.ac      |    6 -
>   opcodes/configure    |  285 ++++++--------------------------------------------
>   opcodes/configure.ac |    2
>   12 files changed, 174 insertions(+), 698 deletions(-)
>
> binutils-gdb-bfd64.diff
> Index: binutils-gdb/Makefile.def
> ===================================================================
> --- binutils-gdb.orig/Makefile.def
> +++ binutils-gdb/Makefile.def
> @@ -523,7 +523,7 @@ dependencies = { module=install-bfd; on=
>   dependencies = { module=install-strip-bfd; on=install-strip-libsframe; };
>   
>   // libopcodes depends on libbfd
> -dependencies = { module=configure-opcodes; on=configure-bfd; hard=true; };
> +dependencies = { module=configure-opcodes; on=all-bfd; hard=true; };
>   dependencies = { module=install-opcodes; on=install-bfd; };
>   dependencies = { module=install-strip-opcodes; on=install-strip-bfd; };
>   
> @@ -549,8 +549,8 @@ dependencies = { module=install-gprofng;
>   dependencies = { module=install-gprofng; on=install-bfd; };
>   
>   dependencies = { module=configure-ld; on=configure-gettext; };
> +dependencies = { module=configure-ld; on=all-bfd; };
>   dependencies = { module=all-ld; on=all-libiberty; };
> -dependencies = { module=all-ld; on=all-bfd; };
>   dependencies = { module=all-ld; on=all-opcodes; };
>   dependencies = { module=all-ld; on=all-build-bison; };
>   dependencies = { module=all-ld; on=all-build-flex; };
> Index: binutils-gdb/Makefile.in
> ===================================================================
> --- binutils-gdb.orig/Makefile.in
> +++ binutils-gdb/Makefile.in
> @@ -67369,16 +67369,16 @@ install-strip-ld: maybe-install-strip-bf
>   install-strip-ld: maybe-install-strip-libctf
>   install-bfd: maybe-install-libsframe
>   install-strip-bfd: maybe-install-strip-libsframe
> -configure-opcodes: configure-bfd
> -configure-stage1-opcodes: configure-stage1-bfd
> -configure-stage2-opcodes: configure-stage2-bfd
> -configure-stage3-opcodes: configure-stage3-bfd
> -configure-stage4-opcodes: configure-stage4-bfd
> -configure-stageprofile-opcodes: configure-stageprofile-bfd
> -configure-stagetrain-opcodes: configure-stagetrain-bfd
> -configure-stagefeedback-opcodes: configure-stagefeedback-bfd
> -configure-stageautoprofile-opcodes: configure-stageautoprofile-bfd
> -configure-stageautofeedback-opcodes: configure-stageautofeedback-bfd
> +configure-opcodes: all-bfd
> +configure-stage1-opcodes: all-stage1-bfd
> +configure-stage2-opcodes: all-stage2-bfd
> +configure-stage3-opcodes: all-stage3-bfd
> +configure-stage4-opcodes: all-stage4-bfd
> +configure-stageprofile-opcodes: all-stageprofile-bfd
> +configure-stagetrain-opcodes: all-stagetrain-bfd
> +configure-stagefeedback-opcodes: all-stagefeedback-bfd
> +configure-stageautoprofile-opcodes: all-stageautoprofile-bfd
> +configure-stageautofeedback-opcodes: all-stageautofeedback-bfd
>   install-opcodes: maybe-install-bfd
>   install-strip-opcodes: maybe-install-strip-bfd
>   configure-gas: maybe-configure-gettext
> @@ -67443,6 +67443,16 @@ configure-stagetrain-ld: maybe-configure
>   configure-stagefeedback-ld: maybe-configure-stagefeedback-gettext
>   configure-stageautoprofile-ld: maybe-configure-stageautoprofile-gettext
>   configure-stageautofeedback-ld: maybe-configure-stageautofeedback-gettext
> +configure-ld: maybe-all-bfd
> +configure-stage1-ld: maybe-all-stage1-bfd
> +configure-stage2-ld: maybe-all-stage2-bfd
> +configure-stage3-ld: maybe-all-stage3-bfd
> +configure-stage4-ld: maybe-all-stage4-bfd
> +configure-stageprofile-ld: maybe-all-stageprofile-bfd
> +configure-stagetrain-ld: maybe-all-stagetrain-bfd
> +configure-stagefeedback-ld: maybe-all-stagefeedback-bfd
> +configure-stageautoprofile-ld: maybe-all-stageautoprofile-bfd
> +configure-stageautofeedback-ld: maybe-all-stageautofeedback-bfd
>   all-ld: maybe-all-libiberty
>   all-stage1-ld: maybe-all-stage1-libiberty
>   all-stage2-ld: maybe-all-stage2-libiberty
> @@ -67453,16 +67463,6 @@ all-stagetrain-ld: maybe-all-stagetrain-
>   all-stagefeedback-ld: maybe-all-stagefeedback-libiberty
>   all-stageautoprofile-ld: maybe-all-stageautoprofile-libiberty
>   all-stageautofeedback-ld: maybe-all-stageautofeedback-libiberty
> -all-ld: maybe-all-bfd
> -all-stage1-ld: maybe-all-stage1-bfd
> -all-stage2-ld: maybe-all-stage2-bfd
> -all-stage3-ld: maybe-all-stage3-bfd
> -all-stage4-ld: maybe-all-stage4-bfd
> -all-stageprofile-ld: maybe-all-stageprofile-bfd
> -all-stagetrain-ld: maybe-all-stagetrain-bfd
> -all-stagefeedback-ld: maybe-all-stagefeedback-bfd
> -all-stageautoprofile-ld: maybe-all-stageautoprofile-bfd
> -all-stageautofeedback-ld: maybe-all-stageautofeedback-bfd
>   all-ld: maybe-all-opcodes
>   all-stage1-ld: maybe-all-stage1-opcodes
>   all-stage2-ld: maybe-all-stage2-opcodes
> Index: binutils-gdb/bfd/configure
> ===================================================================
> --- binutils-gdb.orig/bfd/configure
> +++ binutils-gdb/bfd/configure
> @@ -702,8 +702,6 @@ REPORT_BUGS_TEXI
>   REPORT_BUGS_TO
>   PKGVERSION
>   DEBUGDIR
> -ENABLE_BFD_64_BIT_FALSE
> -ENABLE_BFD_64_BIT_TRUE
>   PLUGINS_FALSE
>   PLUGINS_TRUE
>   LARGEFILE_CPPFLAGS
> @@ -11155,7 +11153,7 @@ else
>     lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
>     lt_status=$lt_dlunknown
>     cat > conftest.$ac_ext <<_LT_EOF
> -#line 11158 "configure"
> +#line 11156 "configure"
>   #include "confdefs.h"
>   
>   #if HAVE_DLFCN_H
> @@ -11261,7 +11259,7 @@ else
>     lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
>     lt_status=$lt_dlunknown
>     cat > conftest.$ac_ext <<_LT_EOF
> -#line 11264 "configure"
> +#line 11262 "configure"
>   #include "confdefs.h"
>   
>   #if HAVE_DLFCN_H
> @@ -11930,56 +11928,6 @@ else
>     enable_64_bit_bfd=no
>   fi
>   
> -
> -if test "x$enable_64_bit_bfd" = "xno"; then :
> -    # The cast to long int works around a bug in the HP C Compiler
> -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
> -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
> -# This bug is HP SR number 8606223364.
> -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of void *" >&5
> -$as_echo_n "checking size of void *... " >&6; }
> -if ${ac_cv_sizeof_void_p+:} false; then :
> -  $as_echo_n "(cached) " >&6
> -else
> -  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void *))" "ac_cv_sizeof_void_p"        "$ac_includes_default"; then :
> -
> -else
> -  if test "$ac_cv_type_void_p" = yes; then
> -     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
> -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
> -as_fn_error 77 "cannot compute sizeof (void *)
> -See \`config.log' for more details" "$LINENO" 5; }
> -   else
> -     ac_cv_sizeof_void_p=0
> -   fi
> -fi
> -
> -fi
> -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_void_p" >&5
> -$as_echo "$ac_cv_sizeof_void_p" >&6; }
> -
> -
> -
> -cat >>confdefs.h <<_ACEOF
> -#define SIZEOF_VOID_P $ac_cv_sizeof_void_p
> -_ACEOF
> -
> -
> -  if test "x$ac_cv_sizeof_void_p" = "x8"; then :
> -  enable_64_bit_bfd=yes
> -fi
> -
> -fi
> -
> - if test "x$enable_64_bit_bfd" = "xyes"; then
> -  ENABLE_BFD_64_BIT_TRUE=
> -  ENABLE_BFD_64_BIT_FALSE='#'
> -else
> -  ENABLE_BFD_64_BIT_TRUE='#'
> -  ENABLE_BFD_64_BIT_FALSE=
> -fi
> -
> -
>   if test $enable_64_bit_bfd = yes ; then
>     want64=true
>   else
> @@ -17677,10 +17625,6 @@ if test -z "${PLUGINS_TRUE}" && test -z
>     as_fn_error $? "conditional \"PLUGINS\" was never defined.
>   Usually this means the macro was only invoked conditionally." "$LINENO" 5
>   fi
> -if test -z "${ENABLE_BFD_64_BIT_TRUE}" && test -z "${ENABLE_BFD_64_BIT_FALSE}"; then
> -  as_fn_error $? "conditional \"ENABLE_BFD_64_BIT\" was never defined.
> -Usually this means the macro was only invoked conditionally." "$LINENO" 5
> -fi
>   if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
>     as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined.
>   Usually this means the macro was only invoked conditionally." "$LINENO" 5
> Index: binutils-gdb/bfd/configure.ac
> ===================================================================
> --- binutils-gdb.orig/bfd/configure.ac
> +++ binutils-gdb/bfd/configure.ac
> @@ -81,7 +81,13 @@ if test x$ac_checking != x ; then
>     AC_DEFINE(ENABLE_CHECKING, 1, [Define if you want run-time sanity checks.])
>   fi
>   
> -BFD_64_BIT
> +AC_ARG_ENABLE(64-bit-bfd,
> +  AS_HELP_STRING([--enable-64-bit-bfd],
> +		 [64-bit support (on hosts with narrower word sizes)]),
> +  [AS_CASE([$enableval],
> +	   [yes|no], [],
> +	   [*], [AC_MSG_ERROR(bad value ${enableval} for 64-bit-bfd option)])],
> +  [enable_64_bit_bfd=no])
>   if test $enable_64_bit_bfd = yes ; then
>     want64=true
>   else
> Index: binutils-gdb/config/bfd64.m4
> ===================================================================
> --- binutils-gdb.orig/config/bfd64.m4
> +++ binutils-gdb/config/bfd64.m4
> @@ -16,21 +16,27 @@ dnl along with this program; see the fil
>   dnl <http://www.gnu.org/licenses/>.
>   dnl
>   
> -dnl See whether 64-bit bfd lib has been enabled.
> +dnl Make sure your module depends on `all-bfd' when invoking this macro.
>   AC_DEFUN([BFD_64_BIT], [dnl
> -AC_ARG_ENABLE(64-bit-bfd,
> -  AS_HELP_STRING([--enable-64-bit-bfd],
> -		 [64-bit support (on hosts with narrower word sizes)]),
> -  [AS_CASE([$enableval],
> -	   [yes|no], [],
> -	   [*], [AC_MSG_ERROR(bad value ${enableval} for 64-bit-bfd option)])],
> -  [enable_64_bit_bfd=no])
> -
> -dnl If the host is 64-bit, then 64-bit bfd is enabled automatically.
> -AS_IF([test "x$enable_64_bit_bfd" = "xno"], [dnl
> -  AC_CHECK_SIZEOF(void *)
> -  AS_IF([test "x$ac_cv_sizeof_void_p" = "x8"], [enable_64_bit_bfd=yes])
> -])
> -
> -AM_CONDITIONAL([ENABLE_BFD_64_BIT], [test "x$enable_64_bit_bfd" = "xyes"])
> -])
> +# See whether 64-bit bfd lib has been enabled.
> +OLD_CPPFLAGS=$CPPFLAGS
> +# Put the old CPPFLAGS last, in case the user's CPPFLAGS point somewhere
> +# with bfd, with -I/foo/include.  We always want our bfd.
> +CPPFLAGS="-I${srcdir}/../include -I../bfd -I${srcdir}/../bfd $CPPFLAGS"
> +AC_CACHE_CHECK([whether BFD is 64-bit], [bfd_cv_64_bit],
> +  [AC_EGREP_CPP(
> +    [HAVE_BFD64],
> +    AC_LANG_PROGRAM(
> +      [#include "bfd.h"],
> +      [dnl
> +#ifdef BFD64
> +HAVE_BFD64
> +#endif]),
> +    [bfd_cv_64_bit=yes],
> +    [bfd_cv_64_bit=no])])
> +if test $bfd_cv_64_bit = yes; then
> +  have_64_bit_bfd=yes
> +else
> +  have_64_bit_bfd=no
> +fi
> +CPPFLAGS=$OLD_CPPFLAGS])
> Index: binutils-gdb/gdb/configure
> ===================================================================
> --- binutils-gdb.orig/gdb/configure
> +++ binutils-gdb/gdb/configure
> @@ -761,8 +761,6 @@ TARGET_OBS
>   AMD_DBGAPI_LIBS
>   AMD_DBGAPI_CFLAGS
>   HAVE_GSTACK
> -ENABLE_BFD_64_BIT_FALSE
> -ENABLE_BFD_64_BIT_TRUE
>   subdirs
>   GDB_DATADIR
>   DEBUGDIR
> @@ -934,7 +932,6 @@ with_relocated_sources
>   with_auto_load_dir
>   with_auto_load_safe_path
>   enable_targets
> -enable_64_bit_bfd
>   with_amd_dbgapi
>   enable_tui
>   enable_gdbtk
> @@ -1645,7 +1642,6 @@ if test -n "$ac_init_help"; then
>     --disable-nls           do not use Native Language Support
>     --enable-targets=TARGETS
>                             alternative target configurations
> -  --enable-64-bit-bfd     64-bit support (on hosts with narrower word sizes)
>     --enable-tui            enable full-screen terminal user interface (TUI)
>     --enable-gdbtk          enable gdbtk graphical user interface (GUI)
>     --enable-profiling      enable profiling of GDB
> @@ -11500,7 +11496,7 @@ else
>     lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
>     lt_status=$lt_dlunknown
>     cat > conftest.$ac_ext <<_LT_EOF
> -#line 11503 "configure"
> +#line 11499 "configure"
>   #include "confdefs.h"
>   
>   #if HAVE_DLFCN_H
> @@ -11606,7 +11602,7 @@ else
>     lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
>     lt_status=$lt_dlunknown
>     cat > conftest.$ac_ext <<_LT_EOF
> -#line 11609 "configure"
> +#line 11605 "configure"
>   #include "confdefs.h"
>   
>   #if HAVE_DLFCN_H
> @@ -24876,70 +24872,46 @@ fi
>   
>   
>   
> -# Check whether --enable-64-bit-bfd was given.
> -if test "${enable_64_bit_bfd+set}" = set; then :
> -  enableval=$enable_64_bit_bfd; case $enableval in #(
> -  yes|no) :
> -     ;; #(
> -  *) :
> -    as_fn_error $? "bad value ${enableval} for 64-bit-bfd option" "$LINENO" 5 ;; #(
> -  *) :
> -     ;;
> -esac
> -else
> -  enable_64_bit_bfd=no
> -fi
> -
> -
> -if test "x$enable_64_bit_bfd" = "xno"; then :
> -    # The cast to long int works around a bug in the HP C Compiler
> -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
> -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
> -# This bug is HP SR number 8606223364.
> -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of void *" >&5
> -$as_echo_n "checking size of void *... " >&6; }
> -if ${ac_cv_sizeof_void_p+:} false; then :
> +# See whether 64-bit bfd lib has been enabled.
> +OLD_CPPFLAGS=$CPPFLAGS
> +# Put the old CPPFLAGS last, in case the user's CPPFLAGS point somewhere
> +# with bfd, with -I/foo/include.  We always want our bfd.
> +CPPFLAGS="-I${srcdir}/../include -I../bfd -I${srcdir}/../bfd $CPPFLAGS"
> +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether BFD is 64-bit" >&5
> +$as_echo_n "checking whether BFD is 64-bit... " >&6; }
> +if ${bfd_cv_64_bit+:} false; then :
>     $as_echo_n "(cached) " >&6
>   else
> -  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void *))" "ac_cv_sizeof_void_p"        "$ac_includes_default"; then :
> -
> -else
> -  if test "$ac_cv_type_void_p" = yes; then
> -     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
> -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
> -as_fn_error 77 "cannot compute sizeof (void *)
> -See \`config.log' for more details" "$LINENO" 5; }
> -   else
> -     ac_cv_sizeof_void_p=0
> -   fi
> -fi
> -
> -fi
> -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_void_p" >&5
> -$as_echo "$ac_cv_sizeof_void_p" >&6; }
> -
> -
> -
> -cat >>confdefs.h <<_ACEOF
> -#define SIZEOF_VOID_P $ac_cv_sizeof_void_p
> +  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> +/* end confdefs.h.  */
> +#include "bfd.h"
> +int
> +main ()
> +{
> +#ifdef BFD64
> +HAVE_BFD64
> +#endif
> +  ;
> +  return 0;
> +}
>   _ACEOF
> -
> -
> -  if test "x$ac_cv_sizeof_void_p" = "x8"; then :
> -  enable_64_bit_bfd=yes
> +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
> +  $EGREP "HAVE_BFD64" >/dev/null 2>&1; then :
> +  bfd_cv_64_bit=yes
> +else
> +  bfd_cv_64_bit=no
>   fi
> +rm -f conftest*
>   
>   fi
> -
> - if test "x$enable_64_bit_bfd" = "xyes"; then
> -  ENABLE_BFD_64_BIT_TRUE=
> -  ENABLE_BFD_64_BIT_FALSE='#'
> +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_64_bit" >&5
> +$as_echo "$bfd_cv_64_bit" >&6; }
> +if test $bfd_cv_64_bit = yes; then
> +  have_64_bit_bfd=yes
>   else
> -  ENABLE_BFD_64_BIT_TRUE='#'
> -  ENABLE_BFD_64_BIT_FALSE=
> +  have_64_bit_bfd=no
>   fi
> -
> -
> +CPPFLAGS=$OLD_CPPFLAGS
>   
>   # Provide defaults for some variables set by the per-host and per-target
>   # configuration.
> @@ -24989,7 +24961,7 @@ fi
>       done
>   
>       # Check whether this target needs 64-bit CORE_ADDR
> -    if test x${enable_64_bit_bfd} = xno; then
> +    if test x${have_64_bit_bfd} = xno; then
>         . ${srcdir}/../bfd/config.bfd
>       fi
>   
> @@ -25002,19 +24974,10 @@ fi
>   done
>   
>   if test x${all_targets} = xtrue; then
> -  if test x${enable_64_bit_bfd} = xyes; then
> +  if test x${have_64_bit_bfd} = xyes; then
>       TARGET_OBS='$(ALL_TARGET_OBS) $(ALL_64_TARGET_OBS)'
>     else
> -    case ${host} in
> -    mips*)
> -      # If all targets were requested, but 64 bit bfd is not enabled,
> -      # the build will fail. See PR 28684.
> -      as_fn_error $? "--enable-targets=all requires --enable-64-bit-bfd" "$LINENO" 5
> -      ;;
> -    *)
> -      TARGET_OBS='$(ALL_TARGET_OBS)'
> -      ;;
> -    esac
> +    TARGET_OBS='$(ALL_TARGET_OBS)'
>     fi
>   fi
>   
> @@ -33895,10 +33858,6 @@ if test -z "${MAINTAINER_MODE_TRUE}" &&
>     as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined.
>   Usually this means the macro was only invoked conditionally." "$LINENO" 5
>   fi
> -if test -z "${ENABLE_BFD_64_BIT_TRUE}" && test -z "${ENABLE_BFD_64_BIT_FALSE}"; then
> -  as_fn_error $? "conditional \"ENABLE_BFD_64_BIT\" was never defined.
> -Usually this means the macro was only invoked conditionally." "$LINENO" 5
> -fi
>   if test -z "${HAVE_PYTHON_TRUE}" && test -z "${HAVE_PYTHON_FALSE}"; then
>     as_fn_error $? "conditional \"HAVE_PYTHON\" was never defined.
>   Usually this means the macro was only invoked conditionally." "$LINENO" 5
> Index: binutils-gdb/gdb/configure.ac
> ===================================================================
> --- binutils-gdb.orig/gdb/configure.ac
> +++ binutils-gdb/gdb/configure.ac
> @@ -241,7 +241,7 @@ do
>       done
>   
>       # Check whether this target needs 64-bit CORE_ADDR
> -    if test x${enable_64_bit_bfd} = xno; then
> +    if test x${have_64_bit_bfd} = xno; then
>         . ${srcdir}/../bfd/config.bfd
>       fi
>   
> @@ -254,19 +254,10 @@ do
>   done
>   
>   if test x${all_targets} = xtrue; then
> -  if test x${enable_64_bit_bfd} = xyes; then
> +  if test x${have_64_bit_bfd} = xyes; then
>       TARGET_OBS='$(ALL_TARGET_OBS) $(ALL_64_TARGET_OBS)'
>     else
> -    case ${host} in
> -    mips*)
> -      # If all targets were requested, but 64 bit bfd is not enabled,
> -      # the build will fail. See PR 28684.
> -      AC_MSG_ERROR([--enable-targets=all requires --enable-64-bit-bfd])
> -      ;;
> -    *)
> -      TARGET_OBS='$(ALL_TARGET_OBS)'
> -      ;;
> -    esac
> +    TARGET_OBS='$(ALL_TARGET_OBS)'
>     fi
>   fi
>   
> Index: binutils-gdb/gdb/configure.tgt
> ===================================================================
> --- binutils-gdb.orig/gdb/configure.tgt
> +++ binutils-gdb/gdb/configure.tgt
> @@ -85,7 +85,7 @@ hppa*-*-*)
>   
>   i[34567]86-*-*)
>   	cpu_obs="${i386_tobjs}"
> -	if test "x$enable_64_bit_bfd" = "xyes"; then
> +	if test "x$have_64_bit_bfd" = "xyes"; then
>   	   cpu_obs="${amd64_tobjs} ${cpu_obs}"
>   	fi
>   	;;
> @@ -284,7 +284,7 @@ hppa*-*-openbsd*)
>   i[34567]86-*-darwin*)
>   	# Target: Darwin/i386
>   	gdb_target_obs="i386-darwin-tdep.o solib-darwin.o"
> -	if test "x$enable_64_bit_bfd" = "xyes"; then
> +	if test "x$have_64_bit_bfd" = "xyes"; then
>   	    # Target: GNU/Linux x86-64
>   	    gdb_target_obs="amd64-darwin-tdep.o ${gdb_target_obs}"
>   	fi
> @@ -319,7 +319,7 @@ i[34567]86-*-linux*)
>   			linux-tdep.o linux-record.o \
>   			arch/i386-linux-tdesc.o \
>   			arch/x86-linux-tdesc-features.o"
> -	if test "x$enable_64_bit_bfd" = "xyes"; then
> +	if test "x$have_64_bit_bfd" = "xyes"; then
>   	    # Target: GNU/Linux x86-64
>   	    gdb_target_obs="amd64-linux-tdep.o \
>   			    arch/amd64-linux-tdesc.o ${gdb_target_obs}"
> @@ -578,7 +578,7 @@ sparc-*-linux*)
>   			sparc-linux-tdep.o solib-svr4.o symfile-mem.o \
>   			linux-tdep.o \
>   			ravenscar-thread.o sparc-ravenscar-thread.o"
> -	if test "x$enable_64_bit_bfd" = "xyes"; then
> +	if test "x$have_64_bit_bfd" = "xyes"; then
>   	    # Target: GNU/Linux UltraSPARC
>   	    gdb_target_obs="sparc64-tdep.o \
>   			    sparc64-linux-tdep.o ${gdb_target_obs}"
> Index: binutils-gdb/ld/configure
> ===================================================================
> --- binutils-gdb.orig/ld/configure
> +++ binutils-gdb/ld/configure
> @@ -696,8 +696,6 @@ install_as_default
>   TARGET_SYSTEM_ROOT_DEFINE
>   TARGET_SYSTEM_ROOT
>   use_sysroot
> -ENABLE_BFD_64_BIT_FALSE
> -ENABLE_BFD_64_BIT_TRUE
>   LARGEFILE_CPPFLAGS
>   CXXCPP
>   OTOOL64
> @@ -842,7 +840,6 @@ enable_largefile
>   enable_checking
>   with_lib_path
>   enable_targets
> -enable_64_bit_bfd
>   with_sysroot
>   enable_gold
>   enable_got
> @@ -1536,7 +1533,6 @@ if test -n "$ac_init_help"; then
>     --disable-largefile     omit support for large files
>     --enable-checking       enable run-time checks
>     --enable-targets        alternative target configurations
> -  --enable-64-bit-bfd     64-bit support (on hosts with narrower word sizes)
>     --enable-gold[=ARG]     build gold [ARG={default,yes,no}]
>     --enable-got=<type>     GOT handling scheme (target, single, negative,
>                             multigot)
> @@ -2177,189 +2173,6 @@ fi
>   
>   } # ac_fn_cxx_try_link
>   
> -# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
> -# --------------------------------------------
> -# Tries to find the compile-time value of EXPR in a program that includes
> -# INCLUDES, setting VAR accordingly. Returns whether the value could be
> -# computed
> -ac_fn_c_compute_int ()
> -{
> -  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
> -  if test "$cross_compiling" = yes; then
> -    # Depending upon the size, compute the lo and hi bounds.
> -cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> -/* end confdefs.h.  */
> -$4
> -int
> -main ()
> -{
> -static int test_array [1 - 2 * !(($2) >= 0)];
> -test_array [0] = 0;
> -return test_array [0];
> -
> -  ;
> -  return 0;
> -}
> -_ACEOF
> -if ac_fn_c_try_compile "$LINENO"; then :
> -  ac_lo=0 ac_mid=0
> -  while :; do
> -    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> -/* end confdefs.h.  */
> -$4
> -int
> -main ()
> -{
> -static int test_array [1 - 2 * !(($2) <= $ac_mid)];
> -test_array [0] = 0;
> -return test_array [0];
> -
> -  ;
> -  return 0;
> -}
> -_ACEOF
> -if ac_fn_c_try_compile "$LINENO"; then :
> -  ac_hi=$ac_mid; break
> -else
> -  as_fn_arith $ac_mid + 1 && ac_lo=$as_val
> -			if test $ac_lo -le $ac_mid; then
> -			  ac_lo= ac_hi=
> -			  break
> -			fi
> -			as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
> -fi
> -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
> -  done
> -else
> -  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> -/* end confdefs.h.  */
> -$4
> -int
> -main ()
> -{
> -static int test_array [1 - 2 * !(($2) < 0)];
> -test_array [0] = 0;
> -return test_array [0];
> -
> -  ;
> -  return 0;
> -}
> -_ACEOF
> -if ac_fn_c_try_compile "$LINENO"; then :
> -  ac_hi=-1 ac_mid=-1
> -  while :; do
> -    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> -/* end confdefs.h.  */
> -$4
> -int
> -main ()
> -{
> -static int test_array [1 - 2 * !(($2) >= $ac_mid)];
> -test_array [0] = 0;
> -return test_array [0];
> -
> -  ;
> -  return 0;
> -}
> -_ACEOF
> -if ac_fn_c_try_compile "$LINENO"; then :
> -  ac_lo=$ac_mid; break
> -else
> -  as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
> -			if test $ac_mid -le $ac_hi; then
> -			  ac_lo= ac_hi=
> -			  break
> -			fi
> -			as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
> -fi
> -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
> -  done
> -else
> -  ac_lo= ac_hi=
> -fi
> -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
> -fi
> -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
> -# Binary search between lo and hi bounds.
> -while test "x$ac_lo" != "x$ac_hi"; do
> -  as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
> -  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> -/* end confdefs.h.  */
> -$4
> -int
> -main ()
> -{
> -static int test_array [1 - 2 * !(($2) <= $ac_mid)];
> -test_array [0] = 0;
> -return test_array [0];
> -
> -  ;
> -  return 0;
> -}
> -_ACEOF
> -if ac_fn_c_try_compile "$LINENO"; then :
> -  ac_hi=$ac_mid
> -else
> -  as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
> -fi
> -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
> -done
> -case $ac_lo in #((
> -?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
> -'') ac_retval=1 ;;
> -esac
> -  else
> -    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> -/* end confdefs.h.  */
> -$4
> -static long int longval () { return $2; }
> -static unsigned long int ulongval () { return $2; }
> -#include <stdio.h>
> -#include <stdlib.h>
> -int
> -main ()
> -{
> -
> -  FILE *f = fopen ("conftest.val", "w");
> -  if (! f)
> -    return 1;
> -  if (($2) < 0)
> -    {
> -      long int i = longval ();
> -      if (i != ($2))
> -	return 1;
> -      fprintf (f, "%ld", i);
> -    }
> -  else
> -    {
> -      unsigned long int i = ulongval ();
> -      if (i != ($2))
> -	return 1;
> -      fprintf (f, "%lu", i);
> -    }
> -  /* Do not output a trailing newline, as this causes \r\n confusion
> -     on some platforms.  */
> -  return ferror (f) || fclose (f) != 0;
> -
> -  ;
> -  return 0;
> -}
> -_ACEOF
> -if ac_fn_c_try_run "$LINENO"; then :
> -  echo >>conftest.val; read $3 <conftest.val; ac_retval=0
> -else
> -  ac_retval=1
> -fi
> -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
> -  conftest.$ac_objext conftest.beam conftest.$ac_ext
> -rm -f conftest.val
> -
> -  fi
> -  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
> -  as_fn_set_status $ac_retval
> -
> -} # ac_fn_c_compute_int
> -
>   # ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
>   # ---------------------------------------------
>   # Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
> @@ -11688,7 +11501,7 @@ else
>     lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
>     lt_status=$lt_dlunknown
>     cat > conftest.$ac_ext <<_LT_EOF
> -#line 11691 "configure"
> +#line 11504 "configure"
>   #include "confdefs.h"
>   
>   #if HAVE_DLFCN_H
> @@ -11794,7 +11607,7 @@ else
>     lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
>     lt_status=$lt_dlunknown
>     cat > conftest.$ac_ext <<_LT_EOF
> -#line 11797 "configure"
> +#line 11610 "configure"
>   #include "confdefs.h"
>   
>   #if HAVE_DLFCN_H
> @@ -15462,70 +15275,46 @@ fi
>   esac
>   fi
>   
> -# Check whether --enable-64-bit-bfd was given.
> -if test "${enable_64_bit_bfd+set}" = set; then :
> -  enableval=$enable_64_bit_bfd; case $enableval in #(
> -  yes|no) :
> -     ;; #(
> -  *) :
> -    as_fn_error $? "bad value ${enableval} for 64-bit-bfd option" "$LINENO" 5 ;; #(
> -  *) :
> -     ;;
> -esac
> -else
> -  enable_64_bit_bfd=no
> -fi
> -
> -
> -if test "x$enable_64_bit_bfd" = "xno"; then :
> -    # The cast to long int works around a bug in the HP C Compiler
> -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
> -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
> -# This bug is HP SR number 8606223364.
> -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of void *" >&5
> -$as_echo_n "checking size of void *... " >&6; }
> -if ${ac_cv_sizeof_void_p+:} false; then :
> +# See whether 64-bit bfd lib has been enabled.
> +OLD_CPPFLAGS=$CPPFLAGS
> +# Put the old CPPFLAGS last, in case the user's CPPFLAGS point somewhere
> +# with bfd, with -I/foo/include.  We always want our bfd.
> +CPPFLAGS="-I${srcdir}/../include -I../bfd -I${srcdir}/../bfd $CPPFLAGS"
> +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether BFD is 64-bit" >&5
> +$as_echo_n "checking whether BFD is 64-bit... " >&6; }
> +if ${bfd_cv_64_bit+:} false; then :
>     $as_echo_n "(cached) " >&6
>   else
> -  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void *))" "ac_cv_sizeof_void_p"        "$ac_includes_default"; then :
> -
> -else
> -  if test "$ac_cv_type_void_p" = yes; then
> -     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
> -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
> -as_fn_error 77 "cannot compute sizeof (void *)
> -See \`config.log' for more details" "$LINENO" 5; }
> -   else
> -     ac_cv_sizeof_void_p=0
> -   fi
> -fi
> -
> -fi
> -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_void_p" >&5
> -$as_echo "$ac_cv_sizeof_void_p" >&6; }
> -
> -
> -
> -cat >>confdefs.h <<_ACEOF
> -#define SIZEOF_VOID_P $ac_cv_sizeof_void_p
> +  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> +/* end confdefs.h.  */
> +#include "bfd.h"
> +int
> +main ()
> +{
> +#ifdef BFD64
> +HAVE_BFD64
> +#endif
> +  ;
> +  return 0;
> +}
>   _ACEOF
> -
> -
> -  if test "x$ac_cv_sizeof_void_p" = "x8"; then :
> -  enable_64_bit_bfd=yes
> +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
> +  $EGREP "HAVE_BFD64" >/dev/null 2>&1; then :
> +  bfd_cv_64_bit=yes
> +else
> +  bfd_cv_64_bit=no
>   fi
> +rm -f conftest*
>   
>   fi
> -
> - if test "x$enable_64_bit_bfd" = "xyes"; then
> -  ENABLE_BFD_64_BIT_TRUE=
> -  ENABLE_BFD_64_BIT_FALSE='#'
> +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_64_bit" >&5
> +$as_echo "$bfd_cv_64_bit" >&6; }
> +if test $bfd_cv_64_bit = yes; then
> +  have_64_bit_bfd=yes
>   else
> -  ENABLE_BFD_64_BIT_TRUE='#'
> -  ENABLE_BFD_64_BIT_FALSE=
> +  have_64_bit_bfd=no
>   fi
> -
> -
> +CPPFLAGS=$OLD_CPPFLAGS
>   
>   
>   # Check whether --with-sysroot was given.
> @@ -19306,11 +19095,11 @@ do
>         EMUL=$targ_emul
>       fi
>   
> -    if test x${enable_64_bit_bfd} = xno; then
> +    if test x${have_64_bit_bfd} = xno; then
>         . ${srcdir}/../bfd/config.bfd
>       fi
>   
> -    if test x${enable_64_bit_bfd} = xyes; then
> +    if test x${have_64_bit_bfd} = xyes; then
>         targ_extra_emuls="$targ_extra_emuls $targ64_extra_emuls"
>         targ_extra_libpath="$targ_extra_libpath $targ64_extra_libpath"
>       fi
> @@ -19534,7 +19323,7 @@ _ACEOF
>   
>   
>   if test x${all_targets} = xtrue; then
> -  if test x${enable_64_bit_bfd} = xyes; then
> +  if test x${have_64_bit_bfd} = xyes; then
>       EMULATION_OFILES='$(ALL_EMULATIONS) $(ALL_64_EMULATIONS)'
>       EMUL_EXTRA_OFILES='$(ALL_EMUL_EXTRA_OFILES) $(ALL_64_EMUL_EXTRA_OFILES)'
>     else
> @@ -19737,10 +19526,6 @@ if test -z "${am__fastdepCXX_TRUE}" && t
>     as_fn_error $? "conditional \"am__fastdepCXX\" was never defined.
>   Usually this means the macro was only invoked conditionally." "$LINENO" 5
>   fi
> -if test -z "${ENABLE_BFD_64_BIT_TRUE}" && test -z "${ENABLE_BFD_64_BIT_FALSE}"; then
> -  as_fn_error $? "conditional \"ENABLE_BFD_64_BIT\" was never defined.
> -Usually this means the macro was only invoked conditionally." "$LINENO" 5
> -fi
>   if test -z "${ENABLE_LIBCTF_TRUE}" && test -z "${ENABLE_LIBCTF_FALSE}"; then
>     as_fn_error $? "conditional \"ENABLE_LIBCTF\" was never defined.
>   Usually this means the macro was only invoked conditionally." "$LINENO" 5
> Index: binutils-gdb/ld/configure.ac
> ===================================================================
> --- binutils-gdb.orig/ld/configure.ac
> +++ binutils-gdb/ld/configure.ac
> @@ -495,11 +495,11 @@ do
>         EMUL=$targ_emul
>       fi
>   
> -    if test x${enable_64_bit_bfd} = xno; then
> +    if test x${have_64_bit_bfd} = xno; then
>         . ${srcdir}/../bfd/config.bfd
>       fi
>   
> -    if test x${enable_64_bit_bfd} = xyes; then
> +    if test x${have_64_bit_bfd} = xyes; then
>         targ_extra_emuls="$targ_extra_emuls $targ64_extra_emuls"
>         targ_extra_libpath="$targ_extra_libpath $targ64_extra_libpath"
>       fi
> @@ -686,7 +686,7 @@ AC_SUBST(TDIRS)
>   AM_SUBST_NOTMAKE(TDIRS)
>   
>   if test x${all_targets} = xtrue; then
> -  if test x${enable_64_bit_bfd} = xyes; then
> +  if test x${have_64_bit_bfd} = xyes; then
>       EMULATION_OFILES='$(ALL_EMULATIONS) $(ALL_64_EMULATIONS)'
>       EMUL_EXTRA_OFILES='$(ALL_EMUL_EXTRA_OFILES) $(ALL_64_EMUL_EXTRA_OFILES)'
>     else
> Index: binutils-gdb/opcodes/configure
> ===================================================================
> --- binutils-gdb.orig/opcodes/configure
> +++ binutils-gdb/opcodes/configure
> @@ -646,8 +646,6 @@ cgendir
>   CGEN_MAINT_FALSE
>   CGEN_MAINT_TRUE
>   HDEFINES
> -ENABLE_BFD_64_BIT_FALSE
> -ENABLE_BFD_64_BIT_TRUE
>   EXEEXT_FOR_BUILD
>   CC_FOR_BUILD
>   CATOBJEXT
> @@ -819,7 +817,6 @@ with_libiconv_prefix
>   with_libiconv_type
>   with_libintl_prefix
>   with_libintl_type
> -enable_64_bit_bfd
>   enable_cgen_maint
>   '
>         ac_precious_vars='build_alias
> @@ -1471,7 +1468,6 @@ if test -n "$ac_init_help"; then
>     --enable-install-libbfd controls installation of libbfd and related headers
>     --disable-nls           do not use Native Language Support
>     --disable-rpath         do not hardcode runtime library paths
> -  --enable-64-bit-bfd     64-bit support (on hosts with narrower word sizes)
>     --enable-cgen-maint=dir    build cgen generated files
>   
>   Optional Packages:
> @@ -1926,189 +1922,6 @@ $as_echo "$ac_res" >&6; }
>   
>   } # ac_fn_c_check_func
>   
> -# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
> -# --------------------------------------------
> -# Tries to find the compile-time value of EXPR in a program that includes
> -# INCLUDES, setting VAR accordingly. Returns whether the value could be
> -# computed
> -ac_fn_c_compute_int ()
> -{
> -  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
> -  if test "$cross_compiling" = yes; then
> -    # Depending upon the size, compute the lo and hi bounds.
> -cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> -/* end confdefs.h.  */
> -$4
> -int
> -main ()
> -{
> -static int test_array [1 - 2 * !(($2) >= 0)];
> -test_array [0] = 0;
> -return test_array [0];
> -
> -  ;
> -  return 0;
> -}
> -_ACEOF
> -if ac_fn_c_try_compile "$LINENO"; then :
> -  ac_lo=0 ac_mid=0
> -  while :; do
> -    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> -/* end confdefs.h.  */
> -$4
> -int
> -main ()
> -{
> -static int test_array [1 - 2 * !(($2) <= $ac_mid)];
> -test_array [0] = 0;
> -return test_array [0];
> -
> -  ;
> -  return 0;
> -}
> -_ACEOF
> -if ac_fn_c_try_compile "$LINENO"; then :
> -  ac_hi=$ac_mid; break
> -else
> -  as_fn_arith $ac_mid + 1 && ac_lo=$as_val
> -			if test $ac_lo -le $ac_mid; then
> -			  ac_lo= ac_hi=
> -			  break
> -			fi
> -			as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
> -fi
> -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
> -  done
> -else
> -  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> -/* end confdefs.h.  */
> -$4
> -int
> -main ()
> -{
> -static int test_array [1 - 2 * !(($2) < 0)];
> -test_array [0] = 0;
> -return test_array [0];
> -
> -  ;
> -  return 0;
> -}
> -_ACEOF
> -if ac_fn_c_try_compile "$LINENO"; then :
> -  ac_hi=-1 ac_mid=-1
> -  while :; do
> -    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> -/* end confdefs.h.  */
> -$4
> -int
> -main ()
> -{
> -static int test_array [1 - 2 * !(($2) >= $ac_mid)];
> -test_array [0] = 0;
> -return test_array [0];
> -
> -  ;
> -  return 0;
> -}
> -_ACEOF
> -if ac_fn_c_try_compile "$LINENO"; then :
> -  ac_lo=$ac_mid; break
> -else
> -  as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
> -			if test $ac_mid -le $ac_hi; then
> -			  ac_lo= ac_hi=
> -			  break
> -			fi
> -			as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
> -fi
> -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
> -  done
> -else
> -  ac_lo= ac_hi=
> -fi
> -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
> -fi
> -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
> -# Binary search between lo and hi bounds.
> -while test "x$ac_lo" != "x$ac_hi"; do
> -  as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
> -  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> -/* end confdefs.h.  */
> -$4
> -int
> -main ()
> -{
> -static int test_array [1 - 2 * !(($2) <= $ac_mid)];
> -test_array [0] = 0;
> -return test_array [0];
> -
> -  ;
> -  return 0;
> -}
> -_ACEOF
> -if ac_fn_c_try_compile "$LINENO"; then :
> -  ac_hi=$ac_mid
> -else
> -  as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
> -fi
> -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
> -done
> -case $ac_lo in #((
> -?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
> -'') ac_retval=1 ;;
> -esac
> -  else
> -    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> -/* end confdefs.h.  */
> -$4
> -static long int longval () { return $2; }
> -static unsigned long int ulongval () { return $2; }
> -#include <stdio.h>
> -#include <stdlib.h>
> -int
> -main ()
> -{
> -
> -  FILE *f = fopen ("conftest.val", "w");
> -  if (! f)
> -    return 1;
> -  if (($2) < 0)
> -    {
> -      long int i = longval ();
> -      if (i != ($2))
> -	return 1;
> -      fprintf (f, "%ld", i);
> -    }
> -  else
> -    {
> -      unsigned long int i = ulongval ();
> -      if (i != ($2))
> -	return 1;
> -      fprintf (f, "%lu", i);
> -    }
> -  /* Do not output a trailing newline, as this causes \r\n confusion
> -     on some platforms.  */
> -  return ferror (f) || fclose (f) != 0;
> -
> -  ;
> -  return 0;
> -}
> -_ACEOF
> -if ac_fn_c_try_run "$LINENO"; then :
> -  echo >>conftest.val; read $3 <conftest.val; ac_retval=0
> -else
> -  ac_retval=1
> -fi
> -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
> -  conftest.$ac_objext conftest.beam conftest.$ac_ext
> -rm -f conftest.val
> -
> -  fi
> -  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
> -  as_fn_set_status $ac_retval
> -
> -} # ac_fn_c_compute_int
> -
>   # ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
>   # ---------------------------------------------
>   # Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
> @@ -11090,7 +10903,7 @@ else
>     lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
>     lt_status=$lt_dlunknown
>     cat > conftest.$ac_ext <<_LT_EOF
> -#line 11093 "configure"
> +#line 10906 "configure"
>   #include "confdefs.h"
>   
>   #if HAVE_DLFCN_H
> @@ -11196,7 +11009,7 @@ else
>     lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
>     lt_status=$lt_dlunknown
>     cat > conftest.$ac_ext <<_LT_EOF
> -#line 11199 "configure"
> +#line 11012 "configure"
>   #include "confdefs.h"
>   
>   #if HAVE_DLFCN_H
> @@ -14025,70 +13838,46 @@ $as_echo "$bfd_cv_build_exeext" >&6; }
>     test x"${bfd_cv_build_exeext}" != xno && EXEEXT_FOR_BUILD=${bfd_cv_build_exeext}
>   fi
>   
> -# Check whether --enable-64-bit-bfd was given.
> -if test "${enable_64_bit_bfd+set}" = set; then :
> -  enableval=$enable_64_bit_bfd; case $enableval in #(
> -  yes|no) :
> -     ;; #(
> -  *) :
> -    as_fn_error $? "bad value ${enableval} for 64-bit-bfd option" "$LINENO" 5 ;; #(
> -  *) :
> -     ;;
> -esac
> -else
> -  enable_64_bit_bfd=no
> -fi
> -
> -
> -if test "x$enable_64_bit_bfd" = "xno"; then :
> -    # The cast to long int works around a bug in the HP C Compiler
> -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
> -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
> -# This bug is HP SR number 8606223364.
> -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of void *" >&5
> -$as_echo_n "checking size of void *... " >&6; }
> -if ${ac_cv_sizeof_void_p+:} false; then :
> +# See whether 64-bit bfd lib has been enabled.
> +OLD_CPPFLAGS=$CPPFLAGS
> +# Put the old CPPFLAGS last, in case the user's CPPFLAGS point somewhere
> +# with bfd, with -I/foo/include.  We always want our bfd.
> +CPPFLAGS="-I${srcdir}/../include -I../bfd -I${srcdir}/../bfd $CPPFLAGS"
> +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether BFD is 64-bit" >&5
> +$as_echo_n "checking whether BFD is 64-bit... " >&6; }
> +if ${bfd_cv_64_bit+:} false; then :
>     $as_echo_n "(cached) " >&6
>   else
> -  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void *))" "ac_cv_sizeof_void_p"        "$ac_includes_default"; then :
> -
> -else
> -  if test "$ac_cv_type_void_p" = yes; then
> -     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
> -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
> -as_fn_error 77 "cannot compute sizeof (void *)
> -See \`config.log' for more details" "$LINENO" 5; }
> -   else
> -     ac_cv_sizeof_void_p=0
> -   fi
> -fi
> -
> -fi
> -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_void_p" >&5
> -$as_echo "$ac_cv_sizeof_void_p" >&6; }
> -
> -
> -
> -cat >>confdefs.h <<_ACEOF
> -#define SIZEOF_VOID_P $ac_cv_sizeof_void_p
> +  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> +/* end confdefs.h.  */
> +#include "bfd.h"
> +int
> +main ()
> +{
> +#ifdef BFD64
> +HAVE_BFD64
> +#endif
> +  ;
> +  return 0;
> +}
>   _ACEOF
> -
> -
> -  if test "x$ac_cv_sizeof_void_p" = "x8"; then :
> -  enable_64_bit_bfd=yes
> +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
> +  $EGREP "HAVE_BFD64" >/dev/null 2>&1; then :
> +  bfd_cv_64_bit=yes
> +else
> +  bfd_cv_64_bit=no
>   fi
> +rm -f conftest*
>   
>   fi
> -
> - if test "x$enable_64_bit_bfd" = "xyes"; then
> -  ENABLE_BFD_64_BIT_TRUE=
> -  ENABLE_BFD_64_BIT_FALSE='#'
> +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_64_bit" >&5
> +$as_echo "$bfd_cv_64_bit" >&6; }
> +if test $bfd_cv_64_bit = yes; then
> +  have_64_bit_bfd=yes
>   else
> -  ENABLE_BFD_64_BIT_TRUE='#'
> -  ENABLE_BFD_64_BIT_FALSE=
> +  have_64_bit_bfd=no
>   fi
> -
> -
> +CPPFLAGS=$OLD_CPPFLAGS
>   
>   
>   
> @@ -14567,7 +14356,7 @@ if test x${all_targets} = xfalse ; then
>   
>   else	# all_targets is true
>       archdefs=-DARCH_all
> -    if test "$enable_64_bit_bfd" = "yes" ; then
> +    if test "$have_64_bit_bfd" = "yes" ; then
>   	BFD_MACHINES='$(ALL32_MACHINES) $(ALL64_MACHINES)'
>       else
>   	BFD_MACHINES='$(ALL32_MACHINES)'
> @@ -14720,10 +14509,6 @@ if test -z "${INSTALL_LIBBFD_TRUE}" && t
>     as_fn_error $? "conditional \"INSTALL_LIBBFD\" was never defined.
>   Usually this means the macro was only invoked conditionally." "$LINENO" 5
>   fi
> -if test -z "${ENABLE_BFD_64_BIT_TRUE}" && test -z "${ENABLE_BFD_64_BIT_FALSE}"; then
> -  as_fn_error $? "conditional \"ENABLE_BFD_64_BIT\" was never defined.
> -Usually this means the macro was only invoked conditionally." "$LINENO" 5
> -fi
>   if test -z "${CGEN_MAINT_TRUE}" && test -z "${CGEN_MAINT_FALSE}"; then
>     as_fn_error $? "conditional \"CGEN_MAINT\" was never defined.
>   Usually this means the macro was only invoked conditionally." "$LINENO" 5
> Index: binutils-gdb/opcodes/configure.ac
> ===================================================================
> --- binutils-gdb.orig/opcodes/configure.ac
> +++ binutils-gdb/opcodes/configure.ac
> @@ -383,7 +383,7 @@ if test x${all_targets} = xfalse ; then
>   
>   else	# all_targets is true
>       archdefs=-DARCH_all
> -    if test "$enable_64_bit_bfd" = "yes" ; then
> +    if test "$have_64_bit_bfd" = "yes" ; then
>   	BFD_MACHINES='$(ALL32_MACHINES) $(ALL64_MACHINES)'
>       else
>   	BFD_MACHINES='$(ALL32_MACHINES)'
>



More information about the Binutils mailing list