aboutsummaryrefslogtreecommitdiff
path: root/gdbsupport
diff options
context:
space:
mode:
authorTom Tromey <tromey@adacore.com>2021-09-29 12:51:15 -0600
committerTom Tromey <tromey@adacore.com>2021-10-19 13:14:48 -0600
commit5dfe4bfcb96945dc5cc1f8717be454f1f7f6bbec (patch)
treeaae9e022c794f4887ad3e9ac759bcb0de647e183 /gdbsupport
parent05fb05a94729473cb04b1299fe5c36e06525c78f (diff)
downloadfsf-binutils-gdb-5dfe4bfcb96945dc5cc1f8717be454f1f7f6bbec.zip
fsf-binutils-gdb-5dfe4bfcb96945dc5cc1f8717be454f1f7f6bbec.tar.gz
fsf-binutils-gdb-5dfe4bfcb96945dc5cc1f8717be454f1f7f6bbec.tar.bz2
Fix format_pieces selftest on Windows
The format_pieces selftest currently fails on Windows hosts. The selftest doesn't handle the "%ll" -> "%I64" rewrite that the formatter may perform, but also gdbsupport was missing a configure check for PRINTF_HAS_LONG_LONG. This patch fixes both issues.
Diffstat (limited to 'gdbsupport')
-rw-r--r--gdbsupport/common.m421
-rw-r--r--gdbsupport/config.in3
-rwxr-xr-xgdbsupport/configure46
3 files changed, 70 insertions, 0 deletions
diff --git a/gdbsupport/common.m4 b/gdbsupport/common.m4
index 901c454..07c7b2a 100644
--- a/gdbsupport/common.m4
+++ b/gdbsupport/common.m4
@@ -163,6 +163,27 @@ AC_DEFUN([GDB_AC_COMMON], [
fi
fi
+ # Check if the compiler and runtime support printing long longs.
+
+ AC_CACHE_CHECK([for long long support in printf],
+ gdb_cv_printf_has_long_long,
+ [AC_RUN_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],
+ [[char buf[32];
+ long long l = 0;
+ l = (l << 16) + 0x0123;
+ l = (l << 16) + 0x4567;
+ l = (l << 16) + 0x89ab;
+ l = (l << 16) + 0xcdef;
+ sprintf (buf, "0x%016llx", l);
+ return (strcmp ("0x0123456789abcdef", buf));]])],
+ gdb_cv_printf_has_long_long=yes,
+ gdb_cv_printf_has_long_long=no,
+ gdb_cv_printf_has_long_long=no)])
+ if test "$gdb_cv_printf_has_long_long" = yes; then
+ AC_DEFINE(PRINTF_HAS_LONG_LONG, 1,
+ [Define to 1 if the "%ll" format works to print long longs.])
+ fi
+
BFD_SYS_PROCFS_H
if test "$ac_cv_header_sys_procfs_h" = yes; then
BFD_HAVE_SYS_PROCFS_TYPE(gregset_t)
diff --git a/gdbsupport/config.in b/gdbsupport/config.in
index e4e6fc0..f6b0159 100644
--- a/gdbsupport/config.in
+++ b/gdbsupport/config.in
@@ -321,6 +321,9 @@
/* Define to the version of this package. */
#undef PACKAGE_VERSION
+/* Define to 1 if the "%ll" format works to print long longs. */
+#undef PRINTF_HAS_LONG_LONG
+
/* Define to necessary symbol if this constant uses a non-standard name on
your system. */
#undef PTHREAD_CREATE_JOINABLE
diff --git a/gdbsupport/configure b/gdbsupport/configure
index f13ae76..d22f225 100755
--- a/gdbsupport/configure
+++ b/gdbsupport/configure
@@ -9571,6 +9571,52 @@ fi
fi
fi
+ # Check if the compiler and runtime support printing long longs.
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long support in printf" >&5
+$as_echo_n "checking for long long support in printf... " >&6; }
+if ${gdb_cv_printf_has_long_long+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then :
+ gdb_cv_printf_has_long_long=no
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+char buf[32];
+ long long l = 0;
+ l = (l << 16) + 0x0123;
+ l = (l << 16) + 0x4567;
+ l = (l << 16) + 0x89ab;
+ l = (l << 16) + 0xcdef;
+ sprintf (buf, "0x%016llx", l);
+ return (strcmp ("0x0123456789abcdef", buf));
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ gdb_cv_printf_has_long_long=yes
+else
+ gdb_cv_printf_has_long_long=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_printf_has_long_long" >&5
+$as_echo "$gdb_cv_printf_has_long_long" >&6; }
+ if test "$gdb_cv_printf_has_long_long" = yes; then
+
+$as_echo "#define PRINTF_HAS_LONG_LONG 1" >>confdefs.h
+
+ fi
+
$as_echo "#define _STRUCTURED_PROC 1" >>confdefs.h