aboutsummaryrefslogtreecommitdiff
path: root/bfd/configure.ac
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2022-07-31 19:25:32 +0930
committerAlan Modra <amodra@gmail.com>2022-08-01 09:30:33 +0930
commit1a5178fe284547ef2abd8ae66588c9999d61c524 (patch)
treea3e10f649adb19dfc046d345a73ecf2f1befdc3f /bfd/configure.ac
parentdf0e73ff9307251d179aa4158347deccc9576b85 (diff)
downloadgdb-1a5178fe284547ef2abd8ae66588c9999d61c524.zip
gdb-1a5178fe284547ef2abd8ae66588c9999d61c524.tar.gz
gdb-1a5178fe284547ef2abd8ae66588c9999d61c524.tar.bz2
PR29348, BFD_VMA_FMT wrong
There is a problem with my commit 0e3c1eebb2, which replaced bfd_uint64_t with uint64_t: Some hosts typedef int64_t to long long even when long is the same size as long long. That confuses the code choosing one of "l", "ll", or "I64" for BFD_VMA_FMT, and results in warnings. Write a direct configure test for the printf int64_t style instead. This removes the last use of BFD_HOST_64BIT_LONG, so delete that. Note that the changes to configure.com are pure guesswork. PR 29348 * bfd-in.h (BFD_HOST_64BIT_LONG): Don't define. (BFD_VMA_FMT): Define using BFD_INT64_FMT when 64-bit. (bfd_vma, bfd_signed_vma): Move comments to 64-bit typedefs. * configure.ac (BFD_HOST_64BIT_LONG): Delete. (BFD_INT64_FMT): New config test. * configure.com: Update similarly. * Makefile.in: Regenerate. * bfd-in2.h: Regenerate. * configure: Regenerate.
Diffstat (limited to 'bfd/configure.ac')
-rw-r--r--bfd/configure.ac19
1 files changed, 12 insertions, 7 deletions
diff --git a/bfd/configure.ac b/bfd/configure.ac
index aad4f3c..6146efb 100644
--- a/bfd/configure.ac
+++ b/bfd/configure.ac
@@ -218,13 +218,6 @@ if test "x${ac_cv_sizeof_void_p}" = "x8"; then
host64=true
fi
-BFD_HOST_64BIT_LONG=0
-if test "x${ac_cv_sizeof_long}" = "x8"; then
- BFD_HOST_64BIT_LONG=1
-fi
-
-AC_SUBST(BFD_HOST_64BIT_LONG)
-
BFD_CC_FOR_BUILD
AC_CHECK_HEADERS(fcntl.h sys/file.h sys/resource.h sys/stat.h sys/types.h \
@@ -255,6 +248,18 @@ if test $bfd_cv_hidden = yes; then
[Define if your compiler supports hidden visibility.])
fi
+AC_CACHE_CHECK([printf int64_t format], [bfd_cv_int64_fmt],
+ for style in I64 ll l; do
+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ #define __STDC_FORMAT_MACROS 1
+ #include <stdio.h>
+ #include <inttypes.h>
+ extern char PRId64_probe[sizeof PRId64 == sizeof "${style}d" ? 1 : -1];
+ ]])], [bfd_cv_int64_fmt=${style}], [])]
+ done)
+BFD_INT64_FMT=\"$bfd_cv_int64_fmt\"
+AC_SUBST(BFD_INT64_FMT)
+
# Check if linker supports --as-needed and --no-as-needed options
AC_CACHE_CHECK(linker --as-needed support, bfd_cv_ld_as_needed,
[bfd_cv_ld_as_needed=no