From 596179f77c803d3fc5586465f4ece6503055d035 Mon Sep 17 00:00:00 2001 From: Sergio Durigan Junior Date: Wed, 24 Apr 2019 14:53:59 -0400 Subject: [PATCH] Use "pulongest" on aarch64-tdep.c:aarch64_gdbarch_init While trying to build GDB on i686, I found the following error: In file included from ../../gdb/common/common-defs.h:105, from ../../gdb/defs.h:28, from ../../gdb/aarch64-tdep.c:21: ../../gdb/aarch64-tdep.c: In function 'gdbarch* aarch64_gdbarch_init(gdbarch_info, gdbarch_list*)': ../../gdb/aarch64-tdep.c:3176:43: error: format '%ld' expects argument of type 'long int', but argument 4 has type 'uint64_t' {aka 'long long unsigned int'} [-Werror=format=] 3176 | internal_error (__FILE__, __LINE__, _("VQ out of bounds: %ld (max %d)"), | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../gdb/common/gdb_locale.h:28:29: note: in definition of macro '_' 28 | # define _(String) gettext (String) | ^~~~~~ ../../gdb/aarch64-tdep.c:3176:64: note: format string is defined here 3176 | internal_error (__FILE__, __LINE__, _("VQ out of bounds: %ld (max %d)"), | ~~^ | | | long int | %lld This happens because aarch64-tdep.c:aarch64_gdbarch_init prints a "uint64_t" variable using "%ld". This patch fixes the build by using "pulongest" instead. As explained in a similar fix (commit 495143533ad95369811391c6e3c6dadd69d7dd67), this should be safe because if aarch64-tdep.c is included in the build, then ULONGEST must be a 64-bit type. gdb/ChangeLog: 2019-04-24 Sergio Durigan Junior * aarch64-tdep.c (aarch64_gdbarch_init): Use "pulongest" to print "vq". --- gdb/ChangeLog | 5 +++++ gdb/aarch64-tdep.c | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 490c181..21358ff 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2019-04-24 Sergio Durigan Junior + + * aarch64-tdep.c (aarch64_gdbarch_init): Use "pulongest" to print + "vq". + 2019-04-24 Tom Tromey * amd64-tdep.c (amd64_has_unaligned_fields): Ignore bitfields. diff --git a/gdb/aarch64-tdep.c b/gdb/aarch64-tdep.c index d53c573..f8b4fa4 100644 --- a/gdb/aarch64-tdep.c +++ b/gdb/aarch64-tdep.c @@ -3173,8 +3173,8 @@ aarch64_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) vq = aarch64_get_tdesc_vq (info.target_desc); if (vq > AARCH64_MAX_SVE_VQ) - internal_error (__FILE__, __LINE__, _("VQ out of bounds: %ld (max %d)"), - vq, AARCH64_MAX_SVE_VQ); + internal_error (__FILE__, __LINE__, _("VQ out of bounds: %s (max %d)"), + pulongest (vq), AARCH64_MAX_SVE_VQ); /* If there is already a candidate, use it. */ for (gdbarch_list *best_arch = gdbarch_list_lookup_by_info (arches, &info); -- 2.7.4