aboutsummaryrefslogtreecommitdiff
path: root/gdb
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 /gdb
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 'gdb')
-rwxr-xr-xgdb/configure92
-rw-r--r--gdb/configure.ac21
-rw-r--r--gdb/unittests/format_pieces-selftests.c16
3 files changed, 57 insertions, 72 deletions
diff --git a/gdb/configure b/gdb/configure
index 1876cbf..d5c1883 100755
--- a/gdb/configure
+++ b/gdb/configure
@@ -15282,6 +15282,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
@@ -16176,52 +16222,6 @@ if test "$gdb_cv_c_long_long" != yes; then
as_fn_error $? "Compiler must support long long for GDB." "$LINENO" 5
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
-
# Check if the compiler and runtime support printing decfloats.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for decfloat support in printf" >&5
diff --git a/gdb/configure.ac b/gdb/configure.ac
index 0d91be5..d4cfb6a 100644
--- a/gdb/configure.ac
+++ b/gdb/configure.ac
@@ -1513,27 +1513,6 @@ if test "$gdb_cv_c_long_long" != yes; then
AC_MSG_ERROR([Compiler must support long long for GDB.])
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
-
# Check if the compiler and runtime support printing decfloats.
AC_CACHE_CHECK([for decfloat support in printf],
diff --git a/gdb/unittests/format_pieces-selftests.c b/gdb/unittests/format_pieces-selftests.c
index f8df687..6a15b5e 100644
--- a/gdb/unittests/format_pieces-selftests.c
+++ b/gdb/unittests/format_pieces-selftests.c
@@ -21,6 +21,12 @@
#include "gdbsupport/format.h"
#include "gdbsupport/selftest.h"
+#if USE_PRINTF_I64
+#define LL "I64"
+#else
+#define LL "ll"
+#endif
+
namespace selftests {
namespace format_pieces {
@@ -55,7 +61,7 @@ test_format_specifier ()
{
format_piece ("Hello\t ", literal_piece, 0),
format_piece ("%d", int_arg, 0),
- format_piece ("%llx", long_long_arg, 0), /* ARI: %ll */
+ format_piece ("%" LL "x", long_long_arg, 0),
format_piece ("%%d", literal_piece, 0),
format_piece ("%d", int_arg, 0),
});
@@ -87,7 +93,7 @@ test_format_int_sizes ()
format_piece ("Hello\t ", literal_piece, 0),
format_piece ("%hu", int_arg, 0),
format_piece ("%lu", long_arg, 0),
- format_piece ("%llu", long_long_arg, 0), /* ARI: %ll */
+ format_piece ("%" LL "u", long_long_arg, 0),
format_piece ("%zu", size_t_arg, 0)
});
@@ -96,7 +102,7 @@ test_format_int_sizes ()
format_piece ("Hello\t ", literal_piece, 0),
format_piece ("%hx", int_arg, 0),
format_piece ("%lx", long_arg, 0),
- format_piece ("%llx", long_long_arg, 0), /* ARI: %ll */
+ format_piece ("%" LL "x", long_long_arg, 0),
format_piece ("%zx", size_t_arg, 0)
});
@@ -105,7 +111,7 @@ test_format_int_sizes ()
format_piece ("Hello\t ", literal_piece, 0),
format_piece ("%ho", int_arg, 0),
format_piece ("%lo", long_arg, 0),
- format_piece ("%llo", long_long_arg, 0), /* ARI: %ll */
+ format_piece ("%" LL "o", long_long_arg, 0),
format_piece ("%zo", size_t_arg, 0)
});
@@ -114,7 +120,7 @@ test_format_int_sizes ()
format_piece ("Hello\t ", literal_piece, 0),
format_piece ("%hd", int_arg, 0),
format_piece ("%ld", long_arg, 0),
- format_piece ("%lld", long_long_arg, 0), /* ARI: %ll */
+ format_piece ("%" LL "d", long_long_arg, 0),
format_piece ("%zd", size_t_arg, 0)
});
}