* 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:
Yao Qi 2013-08-08 05:10:10 +00:00
parent 5c4aa40b93
commit 82a0a75ff0
6 changed files with 59 additions and 4 deletions

View File

@ -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>
* mi/mi-cmd-stack.c: Update comments to function

View File

@ -714,6 +714,8 @@ struct frame_arg
extern void read_frame_arg (struct symbol *sym, struct frame_info *frame,
struct frame_arg *argp,
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);

View File

@ -602,7 +602,10 @@ list_args_or_locals (enum what_to_list what, enum print_values values,
&& TYPE_CODE (type) != TYPE_CODE_UNION)
{
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;
}

View File

@ -301,6 +301,27 @@ print_frame_arg (const struct frame_arg *arg)
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
responsible for xfree of ARGP->ERROR. This function never throws an
exception. */

View File

@ -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>
* gdb.python/py-value-cc.cc: Renamed from py-value.cc.

View File

@ -75,9 +75,6 @@ mi_gdb_test "-trace-save ${tracefile}.tf" ".*\\^done" \
mi_gdb_test "-trace-save -ctf ${tracefile}.ctf" ".*\\^done" \
"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 } {
global decimal
@ -89,6 +86,22 @@ proc test_trace_unavailable { data_source } {
".*\\^done,found=\"1\",tracepoint=\"${decimal}\",traceframe=\"0\",frame=\{.*" \
"-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'.
mi_gdb_test "-stack-list-locals --simple-values" \
".*\\^done,locals=\\\[\{name=\"array\",type=\"unsigned char \\\[2\\\]\"\},\{name=\"i\",type=\"int\",value=\"<unavailable>\"\}\\\]" \