From 45c7190d7cfead87a66ed666cf4a2079865af327 Mon Sep 17 00:00:00 2001 From: Max Barraclough Date: Sat, 14 May 2022 13:44:55 +0100 Subject: [PATCH 1/3] Fix compile warnings re. sprintf format specifiers Compiler warnings were encountered on GCC 11.2.0/Kubuntu 21.10/x86_64, and on Clang 11.0.1/Debian 11/x86_64. * Adopt libbfd's sprintf_vma helper macro * Remove definition of (now unused) address_buffer_format macro * Add casts to avoid warnings when using print_str macro with void* * These also boiled down to format specifier warnings Signed-off-by: Max Barraclough --- lib/jit_disasm.c | 9 ++++----- lib/jit_print.c | 4 ++-- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/lib/jit_disasm.c b/lib/jit_disasm.c index 6d4e51c..81eb5e9 100644 --- a/lib/jit_disasm.c +++ b/lib/jit_disasm.c @@ -266,10 +266,8 @@ disasm_compare_symbols(const void *ap, const void *bp) #if __WORDSIZE == 32 # define address_buffer_length 16 -# define address_buffer_format "%llx" #else # define address_buffer_length 32 -# define address_buffer_format "%lx" #endif static void disasm_print_address(bfd_vma addr, struct disassemble_info *info) @@ -279,7 +277,8 @@ disasm_print_address(bfd_vma addr, struct disassemble_info *info) int line; char buffer[address_buffer_length]; - sprintf(buffer, address_buffer_format, (long long)addr); + /* Use libbfd's sprintf_vma helper macro */ + sprintf_vma(buffer, addr); (*info->fprintf_func)(info->stream, "0x%s", buffer); # define _jit disasm_jit @@ -394,7 +393,7 @@ _disassemble(jit_state_t *_jit, jit_pointer_t code, jit_int32_t length) if (pc == _jitc->data_info.ptr[data_offset].code) { offset = _jitc->data_info.ptr[data_offset].length; for (; offset >= 4; offset -= 4, pc += 4) { - bytes = sprintf(buffer, address_buffer_format, pc); + bytes = sprintf_vma(buffer, pc); (*disasm_info.fprintf_func)(disasm_stream, "%*c0x%s\t.data\t0x%08x\n", 16 - bytes, ' ', buffer, @@ -422,7 +421,7 @@ _disassemble(jit_state_t *_jit, jit_pointer_t code, jit_int32_t length) old_line = line; } - bytes = sprintf(buffer, address_buffer_format, (long long)pc); + bytes = sprintf_vma(buffer, pc); (*disasm_info.fprintf_func)(disasm_stream, "%*c0x%s\t", 16 - bytes, ' ', buffer); pc += (*disasm_print)(pc, &disasm_info); diff --git a/lib/jit_print.c b/lib/jit_print.c index 61d9650..f646e5f 100644 --- a/lib/jit_print.c +++ b/lib/jit_print.c @@ -292,12 +292,12 @@ _jit_print_node(jit_state_t *_jit, jit_node_t *node) case jit_code_name: print_chr(' '); if (node->v.p && _jitc->emit) - print_str(node->v.n->u.p); + print_str((char*)node->v.n->u.p); break; case jit_code_note: print_chr(' '); if (node->v.p && _jitc->emit) - print_str(node->v.n->u.p); + print_str((char*)node->v.n->u.p); if (node->v.p && _jitc->emit && node->w.w) print_chr(':'); if (node->w.w) -- 2.32.0