[PATCH] opcodes: fix Werror=format build breaker in opcodes/riscv-dis.c

Tom de Vries tdevries@suse.de
Fri Nov 22 16:37:01 GMT 2024


I build gdb on arm-linux and ran into:
...
  CC       riscv-dis.lo
opcodes/riscv-dis.c: In function ‘print_insn_args’:
opcodes/riscv-dis.c:743:29: error: format ‘%lu’ expects argument of type \
  ‘long unsigned int’, but argument 4 has type ‘insn_t’ \
  {aka ‘long long unsigned int’} [-Werror=format=]
  743 |                          "%lu", EXTRACT_ZCMT_INDEX (l));
      |                           ~~^
      |                             |
      |                             long unsigned int
      |                           %llu
...

Fix this by printing the insn_t value, which is a uint64_t, using PRIu64.

Tested by finishing the build.
---
 opcodes/riscv-dis.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/opcodes/riscv-dis.c b/opcodes/riscv-dis.c
index 101380f93aa..c1212b14a05 100644
--- a/opcodes/riscv-dis.c
+++ b/opcodes/riscv-dis.c
@@ -740,7 +740,7 @@ print_insn_args (const char *oparg, insn_t l, bfd_vma pc, disassemble_info *info
 		case 'i':
 		case 'I':
 		  print (info->stream, dis_style_address_offset,
-			 "%lu", EXTRACT_ZCMT_INDEX (l));
+			 "%" PRIu64, EXTRACT_ZCMT_INDEX (l));
 		  break;
 		default:
 		  goto undefined_modifier;

base-commit: 8a7f13063a6d5314cfde5b4f1dc49afa2922cf8c
-- 
2.35.3



More information about the Binutils mailing list