* tracepoint.c (tfile_get_trace_state_variable_value): Look for
the last matched 'V' blcok in trace frame. gdb/gdbserver: * tracepoint.c (traceframe_read_tsv): Look for the last matched 'V' block in trace frame. gdb/testsuite: * gdb.trace/tsv.exp (check_tsv): New. (top level): Save a tfile on current trace session. Call check_tsv on live target. Load the tfile with target tfile and call check_tsv again.
This commit is contained in:
parent
045dd51fd8
commit
8ddb196517
6 changed files with 63 additions and 10 deletions
|
@ -4655,7 +4655,12 @@ static int
|
|||
tfile_get_trace_state_variable_value (int tsvnum, LONGEST *val)
|
||||
{
|
||||
int pos;
|
||||
int found = 0;
|
||||
|
||||
/* Iterate over blocks in current frame and find the last 'V'
|
||||
block in which tsv number is TSVNUM. In one trace frame, there
|
||||
may be multiple 'V' blocks created for a given trace variable,
|
||||
and the last matched 'V' block contains the updated value. */
|
||||
pos = 0;
|
||||
while ((pos = traceframe_find_block_type ('V', pos)) >= 0)
|
||||
{
|
||||
|
@ -4671,13 +4676,12 @@ tfile_get_trace_state_variable_value (int tsvnum, LONGEST *val)
|
|||
*val = extract_signed_integer ((gdb_byte *) val, 8,
|
||||
gdbarch_byte_order
|
||||
(target_gdbarch ()));
|
||||
return 1;
|
||||
found = 1;
|
||||
}
|
||||
pos += (4 + 8);
|
||||
}
|
||||
|
||||
/* Didn't find anything. */
|
||||
return 0;
|
||||
return found;
|
||||
}
|
||||
|
||||
static int
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue