mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-27 03:54:41 +08:00
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 d894edfcc4
Author: Felix Willgerodt <felix.willgerodt@intel.com>
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 <simon.marchi@efficios.com>
This commit is contained in:
parent
db856d4100
commit
387f97a1b2
58
gdb/btrace.c
58
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<CORE_ADDR> (insn.ip)},
|
||||
static_cast<gdb_byte> (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)
|
||||
{
|
||||
if (event.status_update != 0)
|
||||
break;
|
||||
|
||||
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);
|
||||
|
||||
warning
|
||||
(_("Non-contiguous trace at instruction %u (offset = 0x%"
|
||||
PRIx64 ")."), bfun->insn_offset - 1, offset);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
if (event.variant.enabled.resumed == 0 && !btinfo->functions.empty ())
|
||||
{
|
||||
bfun = ftrace_new_gap (btinfo, BDE_PT_DISABLED, gaps);
|
||||
|
||||
pt_insn_get_offset (decoder, &offset);
|
||||
|
||||
warning (_("Non-contiguous trace at instruction %u (offset = 0x%"
|
||||
PRIx64 ")."), bfun->insn_offset - 1, offset);
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user