From: Felix Willgerodt Date: Tue, 20 Aug 2024 07:38:16 +0000 (+0200) Subject: gdb, btrace: Fix clang build X-Git-Tag: gdb-16-branchpoint~1079 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=387f97a1b24e968e06dd62f91a26eb0a883fff58;p=thirdparty%2Fbinutils-gdb.git gdb, btrace: Fix clang build Simon pointed out to me that there are some failures when building with clang, that were caused by my commit commit d894edfcc40e63be9b6efa0950c1752f249f16e5 Author: Felix Willgerodt Date: Mon Feb 18 13:49:25 2019 +0100 btrace: Introduce auxiliary instructions. The errors are: CXX btrace.o gdb/btrace.c:1203:11: error: suggest braces around initialization of subobject [-Werror,-Wmissing-braces] 1203 | return {(CORE_ADDR) insn.ip, (gdb_byte) insn.size, | ^~~~~~~~~~~~~~~~~~~ | { } gdb/btrace.c:1218:21: error: suggest braces around initialization of subobject [-Werror,-Wmissing-braces] 1218 | btrace_insn insn {btinfo->aux_data.size () - 1, 0, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ | { } gdb/btrace.c:1323:34: error: variable 'bfun' is uninitialized when used here [-Werror,-Wuninitialized] 1323 | handle_pt_aux_insn (btinfo, bfun, *ptw_string, pc); | ^~~~ gdb/btrace.c:1236:35: note: initialize the variable 'bfun' to silence this warning 1236 | struct btrace_function *bfun; | ^ | = nullptr 3 errors generated. make[1]: *** [Makefile:1961: btrace.o] Error 1 This fixes those errors and switches two casts to C++ casts while we are at it. Approved-By: Simon Marchi --- diff --git a/gdb/btrace.c b/gdb/btrace.c index 95ff27cc4fe..ff9612dd664 100644 --- a/gdb/btrace.c +++ b/gdb/btrace.c @@ -1200,7 +1200,8 @@ pt_btrace_insn_flags (const struct pt_insn &insn) static btrace_insn pt_btrace_insn (const struct pt_insn &insn) { - return {(CORE_ADDR) insn.ip, (gdb_byte) insn.size, + return {{static_cast (insn.ip)}, + static_cast (insn.size), pt_reclassify_insn (insn.iclass), pt_btrace_insn_flags (insn)}; } @@ -1209,13 +1210,13 @@ pt_btrace_insn (const struct pt_insn &insn) /* Helper for events that will result in an aux_insn. */ static void -handle_pt_aux_insn (btrace_thread_info *btinfo, btrace_function *bfun, - std::string &aux_str, CORE_ADDR ip) +handle_pt_aux_insn (btrace_thread_info *btinfo, std::string &aux_str, + CORE_ADDR ip) { btinfo->aux_data.emplace_back (std::move (aux_str)); - bfun = ftrace_update_function (btinfo, ip); + struct btrace_function *bfun = ftrace_update_function (btinfo, ip); - btrace_insn insn {btinfo->aux_data.size () - 1, 0, + btrace_insn insn {{btinfo->aux_data.size () - 1}, 0, BTRACE_INSN_AUX, 0}; ftrace_update_insns (bfun, insn); @@ -1233,7 +1234,6 @@ handle_pt_insn_events (struct btrace_thread_info *btinfo, #if defined (HAVE_PT_INSN_EVENT) while (status & pts_event_pending) { - struct btrace_function *bfun; struct pt_event event; uint64_t offset; @@ -1247,30 +1247,38 @@ handle_pt_insn_events (struct btrace_thread_info *btinfo, break; case ptev_enabled: - if (event.status_update != 0) - break; + { + if (event.status_update != 0) + break; - if (event.variant.enabled.resumed == 0 && !btinfo->functions.empty ()) - { - bfun = ftrace_new_gap (btinfo, BDE_PT_DISABLED, gaps); + if (event.variant.enabled.resumed == 0 + && !btinfo->functions.empty ()) + { + struct btrace_function *bfun + = ftrace_new_gap (btinfo, BDE_PT_DISABLED, gaps); - pt_insn_get_offset (decoder, &offset); + pt_insn_get_offset (decoder, &offset); - warning (_("Non-contiguous trace at instruction %u (offset = 0x%" - PRIx64 ")."), bfun->insn_offset - 1, offset); - } + warning + (_("Non-contiguous trace at instruction %u (offset = 0x%" + PRIx64 ")."), bfun->insn_offset - 1, offset); + } - break; + break; + } case ptev_overflow: - bfun = ftrace_new_gap (btinfo, BDE_PT_OVERFLOW, gaps); + { + struct btrace_function *bfun + = ftrace_new_gap (btinfo, BDE_PT_OVERFLOW, gaps); - pt_insn_get_offset (decoder, &offset); + pt_insn_get_offset (decoder, &offset); - warning (_("Overflow at instruction %u (offset = 0x%" PRIx64 ")."), - bfun->insn_offset - 1, offset); + warning (_("Overflow at instruction %u (offset = 0x%" PRIx64 ")."), + bfun->insn_offset - 1, offset); - break; + break; + } #if defined (HAVE_STRUCT_PT_EVENT_VARIANT_PTWRITE) case ptev_ptwrite: { @@ -1320,7 +1328,7 @@ handle_pt_insn_events (struct btrace_thread_info *btinfo, if (!ptw_string.has_value ()) *ptw_string = hex_string (event.variant.ptwrite.payload); - handle_pt_aux_insn (btinfo, bfun, *ptw_string, pc); + handle_pt_aux_insn (btinfo, *ptw_string, pc); break; }