gdb/
* frame.h (read_frame_local): Declare. * mi/mi-cmd-stack.c (list_args_or_locals): Call read_frame_local. * stack.c (read_frame_local): New. gdb/testsuite/ * gdb.trace/mi-trace-unavailable.exp: Don't set "print entry-values" to "no". (test_trace_unavailable): Set various values to "print entry-values" to test that the output of '-stack-list-locals' is not affected, and then set set "print entry-values" to "no".
This commit is contained in:
parent
5c4aa40b93
commit
82a0a75ff0
6 changed files with 59 additions and 4 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2013-08-08 Yao Qi <yao@codesourcery.com>
|
||||||
|
|
||||||
|
* frame.h (read_frame_local): Declare.
|
||||||
|
* mi/mi-cmd-stack.c (list_args_or_locals): Call
|
||||||
|
read_frame_local.
|
||||||
|
* stack.c (read_frame_local): New.
|
||||||
|
|
||||||
2013-08-08 Yao Qi <yao@codesourcery.com>
|
2013-08-08 Yao Qi <yao@codesourcery.com>
|
||||||
|
|
||||||
* mi/mi-cmd-stack.c: Update comments to function
|
* mi/mi-cmd-stack.c: Update comments to function
|
||||||
|
|
|
@ -714,6 +714,8 @@ struct frame_arg
|
||||||
extern void read_frame_arg (struct symbol *sym, struct frame_info *frame,
|
extern void read_frame_arg (struct symbol *sym, struct frame_info *frame,
|
||||||
struct frame_arg *argp,
|
struct frame_arg *argp,
|
||||||
struct frame_arg *entryargp);
|
struct frame_arg *entryargp);
|
||||||
|
extern void read_frame_local (struct symbol *sym, struct frame_info *frame,
|
||||||
|
struct frame_arg *argp);
|
||||||
|
|
||||||
extern void args_info (char *, int);
|
extern void args_info (char *, int);
|
||||||
|
|
||||||
|
|
|
@ -602,7 +602,10 @@ list_args_or_locals (enum what_to_list what, enum print_values values,
|
||||||
&& TYPE_CODE (type) != TYPE_CODE_UNION)
|
&& TYPE_CODE (type) != TYPE_CODE_UNION)
|
||||||
{
|
{
|
||||||
case PRINT_ALL_VALUES:
|
case PRINT_ALL_VALUES:
|
||||||
read_frame_arg (sym2, fi, &arg, &entryarg);
|
if (SYMBOL_IS_ARGUMENT (sym))
|
||||||
|
read_frame_arg (sym2, fi, &arg, &entryarg);
|
||||||
|
else
|
||||||
|
read_frame_local (sym2, fi, &arg);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
21
gdb/stack.c
21
gdb/stack.c
|
@ -301,6 +301,27 @@ print_frame_arg (const struct frame_arg *arg)
|
||||||
annotate_arg_end ();
|
annotate_arg_end ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Read in inferior function local SYM at FRAME into ARGP. Caller is
|
||||||
|
responsible for xfree of ARGP->ERROR. This function never throws an
|
||||||
|
exception. */
|
||||||
|
|
||||||
|
void
|
||||||
|
read_frame_local (struct symbol *sym, struct frame_info *frame,
|
||||||
|
struct frame_arg *argp)
|
||||||
|
{
|
||||||
|
volatile struct gdb_exception except;
|
||||||
|
struct value *val = NULL;
|
||||||
|
|
||||||
|
TRY_CATCH (except, RETURN_MASK_ERROR)
|
||||||
|
{
|
||||||
|
val = read_var_value (sym, frame);
|
||||||
|
}
|
||||||
|
|
||||||
|
argp->error = (val == NULL) ? xstrdup (except.message) : NULL;
|
||||||
|
argp->sym = sym;
|
||||||
|
argp->val = val;
|
||||||
|
}
|
||||||
|
|
||||||
/* Read in inferior function parameter SYM at FRAME into ARGP. Caller is
|
/* Read in inferior function parameter SYM at FRAME into ARGP. Caller is
|
||||||
responsible for xfree of ARGP->ERROR. This function never throws an
|
responsible for xfree of ARGP->ERROR. This function never throws an
|
||||||
exception. */
|
exception. */
|
||||||
|
|
|
@ -1,3 +1,12 @@
|
||||||
|
2013-08-08 Yao Qi <yao@codesourcery.com>
|
||||||
|
|
||||||
|
* gdb.trace/mi-trace-unavailable.exp: Don't set
|
||||||
|
"print entry-values" to "no".
|
||||||
|
(test_trace_unavailable): Set various values to
|
||||||
|
"print entry-values" to test that the output of
|
||||||
|
'-stack-list-locals' is not affected, and then set
|
||||||
|
set "print entry-values" to "no".
|
||||||
|
|
||||||
2013-08-07 Doug Evans <dje@google.com>
|
2013-08-07 Doug Evans <dje@google.com>
|
||||||
|
|
||||||
* gdb.python/py-value-cc.cc: Renamed from py-value.cc.
|
* gdb.python/py-value-cc.cc: Renamed from py-value.cc.
|
||||||
|
|
|
@ -75,9 +75,6 @@ mi_gdb_test "-trace-save ${tracefile}.tf" ".*\\^done" \
|
||||||
mi_gdb_test "-trace-save -ctf ${tracefile}.ctf" ".*\\^done" \
|
mi_gdb_test "-trace-save -ctf ${tracefile}.ctf" ".*\\^done" \
|
||||||
"save ctf trace file"
|
"save ctf trace file"
|
||||||
|
|
||||||
mi_gdb_test "-gdb-set print entry-values no" {\^done} \
|
|
||||||
"-gdb-set print entry-values no"
|
|
||||||
|
|
||||||
proc test_trace_unavailable { data_source } {
|
proc test_trace_unavailable { data_source } {
|
||||||
global decimal
|
global decimal
|
||||||
|
|
||||||
|
@ -89,6 +86,22 @@ proc test_trace_unavailable { data_source } {
|
||||||
".*\\^done,found=\"1\",tracepoint=\"${decimal}\",traceframe=\"0\",frame=\{.*" \
|
".*\\^done,found=\"1\",tracepoint=\"${decimal}\",traceframe=\"0\",frame=\{.*" \
|
||||||
"-trace-find frame-number 0"
|
"-trace-find frame-number 0"
|
||||||
|
|
||||||
|
# The "print entry-values" option shouldn't affect the output of
|
||||||
|
# '-stack-list-locals'.
|
||||||
|
foreach entry_values { no only preferred if-needed both compact default } {
|
||||||
|
mi_gdb_test "-gdb-set print entry-values $entry_values" {\^done} ""
|
||||||
|
|
||||||
|
with_test_prefix "$entry_values" {
|
||||||
|
# Test MI command '-stack-list-locals'.
|
||||||
|
mi_gdb_test "-stack-list-locals --simple-values" \
|
||||||
|
".*\\^done,locals=\\\[\{name=\"array\",type=\"unsigned char \\\[2\\\]\"\},\{name=\"i\",type=\"int\",value=\"<unavailable>\"\}\\\]" \
|
||||||
|
"-stack-list-locals --simple-values"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mi_gdb_test "-gdb-set print entry-values no" {\^done} \
|
||||||
|
"-gdb-set print entry-values no"
|
||||||
|
|
||||||
# Test MI command '-stack-list-locals'.
|
# Test MI command '-stack-list-locals'.
|
||||||
mi_gdb_test "-stack-list-locals --simple-values" \
|
mi_gdb_test "-stack-list-locals --simple-values" \
|
||||||
".*\\^done,locals=\\\[\{name=\"array\",type=\"unsigned char \\\[2\\\]\"\},\{name=\"i\",type=\"int\",value=\"<unavailable>\"\}\\\]" \
|
".*\\^done,locals=\\\[\{name=\"array\",type=\"unsigned char \\\[2\\\]\"\},\{name=\"i\",type=\"int\",value=\"<unavailable>\"\}\\\]" \
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue