* mi/mi-cmd-stack.c (parse_print_values): New.

(mi_cmd_stack_list_locals, mi_cmd_stack_list_args): Use the above.
This commit is contained in:
Vladimir Prus 2009-06-30 09:37:24 +00:00
parent 1a4300e94d
commit 8b777f02e1
4 changed files with 35 additions and 17 deletions

View File

@ -1,3 +1,8 @@
2009-06-30 Vladimir Prus <vladimir@codesourcery.com>
* mi/mi-cmd-stack.c (parse_print_values): New.
(mi_cmd_stack_list_locals, mi_cmd_stack_list_args): Use the above.
2009-06-30 Vladimir Prus <vladimir@codesourcery.com> 2009-06-30 Vladimir Prus <vladimir@codesourcery.com>
* varobj.c (varobj_get_type): Use type_to_string. * varobj.c (varobj_get_type): Use type_to_string.

View File

@ -116,6 +116,24 @@ mi_cmd_stack_info_depth (char *command, char **argv, int argc)
ui_out_field_int (uiout, "depth", i); ui_out_field_int (uiout, "depth", i);
} }
static enum print_values
parse_print_values (char *name)
{
if (strcmp (name, "0") == 0
|| strcmp (name, mi_no_values) == 0)
return PRINT_NO_VALUES;
else if (strcmp (name, "1") == 0
|| strcmp (name, mi_all_values) == 0)
return PRINT_ALL_VALUES;
else if (strcmp (name, "2") == 0
|| strcmp (name, mi_simple_values) == 0)
return PRINT_SIMPLE_VALUES;
else
error (_("Unknown value for PRINT_VALUES: must be: \
0 or \"%s\", 1 or \"%s\", 2 or \"%s\""),
mi_no_values, mi_all_values, mi_simple_values);
}
/* Print a list of the locals for the current frame. With argument of /* Print a list of the locals for the current frame. With argument of
0, print only the names, with argument of 1 print also the 0, print only the names, with argument of 1 print also the
values. */ values. */
@ -130,20 +148,7 @@ mi_cmd_stack_list_locals (char *command, char **argv, int argc)
frame = get_selected_frame (NULL); frame = get_selected_frame (NULL);
if (strcmp (argv[0], "0") == 0 list_args_or_locals (1, parse_print_values (argv[0]), frame);
|| strcmp (argv[0], mi_no_values) == 0)
print_values = PRINT_NO_VALUES;
else if (strcmp (argv[0], "1") == 0
|| strcmp (argv[0], mi_all_values) == 0)
print_values = PRINT_ALL_VALUES;
else if (strcmp (argv[0], "2") == 0
|| strcmp (argv[0], mi_simple_values) == 0)
print_values = PRINT_SIMPLE_VALUES;
else
error (_("Unknown value for PRINT_VALUES: must be: \
0 or \"%s\", 1 or \"%s\", 2 or \"%s\""),
mi_no_values, mi_all_values, mi_simple_values);
list_args_or_locals (1, print_values, frame);
} }
/* Print a list of the arguments for the current frame. With argument /* Print a list of the arguments for the current frame. With argument
@ -157,6 +162,7 @@ mi_cmd_stack_list_args (char *command, char **argv, int argc)
int i; int i;
struct frame_info *fi; struct frame_info *fi;
struct cleanup *cleanup_stack_args; struct cleanup *cleanup_stack_args;
enum print_values print_values;
if (argc < 1 || argc > 3 || argc == 2) if (argc < 1 || argc > 3 || argc == 2)
error (_("mi_cmd_stack_list_args: Usage: PRINT_VALUES [FRAME_LOW FRAME_HIGH]")); error (_("mi_cmd_stack_list_args: Usage: PRINT_VALUES [FRAME_LOW FRAME_HIGH]"));
@ -174,6 +180,8 @@ mi_cmd_stack_list_args (char *command, char **argv, int argc)
frame_high = -1; frame_high = -1;
} }
print_values = parse_print_values (argv[0]);
/* Let's position fi on the frame at which to start the /* Let's position fi on the frame at which to start the
display. Could be the innermost frame if the whole stack needs display. Could be the innermost frame if the whole stack needs
displaying, or if frame_low is 0. */ displaying, or if frame_low is 0. */
@ -196,7 +204,7 @@ mi_cmd_stack_list_args (char *command, char **argv, int argc)
QUIT; QUIT;
cleanup_frame = make_cleanup_ui_out_tuple_begin_end (uiout, "frame"); cleanup_frame = make_cleanup_ui_out_tuple_begin_end (uiout, "frame");
ui_out_field_int (uiout, "level", i); ui_out_field_int (uiout, "level", i);
list_args_or_locals (0, atoi (argv[0]), fi); list_args_or_locals (0, print_values, fi);
do_cleanups (cleanup_frame); do_cleanups (cleanup_frame);
} }

View File

@ -1,3 +1,8 @@
2009-06-30 Vladimir Prus <vladimir@codesourcery.com>
* gdb.mi/mi-stack.exp: Testing symbolic options
to -stack-list-locals and -stack-list-arguments.
2009-06-29 Jan Kratochvil <jan.kratochvil@redhat.com> 2009-06-29 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.threads/current-lwp-dead.exp, gdb.threads/current-lwp-dead.c: New. * gdb.threads/current-lwp-dead.exp, gdb.threads/current-lwp-dead.c: New.

View File

@ -115,7 +115,7 @@ proc test_stack_args_listing {} {
"232\\^done,stack-args=\\\[frame=\{level=\"1\",args=\\\[\{name=\"strarg\",value=\"$hex \\\\\"A string argument.\\\\\"\"\}\\\]\}\\\]" \ "232\\^done,stack-args=\\\[frame=\{level=\"1\",args=\\\[\{name=\"strarg\",value=\"$hex \\\\\"A string argument.\\\\\"\"\}\\\]\}\\\]" \
"stack args listing 1 1 1" "stack args listing 1 1 1"
mi_gdb_test "233-stack-list-arguments 1 1 3" \ mi_gdb_test "233-stack-list-arguments --all-values 1 3" \
"233\\^done,stack-args=\\\[frame=\{level=\"1\",args=\\\[\{name=\"strarg\",value=\"$hex \\\\\"A string argument.\\\\\"\"\}\\\]\},frame=\{level=\"2\",args=\\\[\{name=\"intarg\",value=\"2\"\},\{name=\"strarg\",value=\"$hex \\\\\"A string argument.\\\\\"\"\}\\\]\},frame=\{level=\"3\",args=\\\[\{name=\"intarg\",value=\"2\"\},\{name=\"strarg\",value=\"$hex \\\\\"A string argument.\\\\\"\"\},\{name=\"fltarg\",value=\"3.5\"\}\\\]\}\\\]" \ "233\\^done,stack-args=\\\[frame=\{level=\"1\",args=\\\[\{name=\"strarg\",value=\"$hex \\\\\"A string argument.\\\\\"\"\}\\\]\},frame=\{level=\"2\",args=\\\[\{name=\"intarg\",value=\"2\"\},\{name=\"strarg\",value=\"$hex \\\\\"A string argument.\\\\\"\"\}\\\]\},frame=\{level=\"3\",args=\\\[\{name=\"intarg\",value=\"2\"\},\{name=\"strarg\",value=\"$hex \\\\\"A string argument.\\\\\"\"\},\{name=\"fltarg\",value=\"3.5\"\}\\\]\}\\\]" \
"stack args listing 1 1 3" "stack args listing 1 1 3"
@ -180,7 +180,7 @@ mi_execute_to "exec-next 4" "end-stepping-range" "callee4" "" ".*${srcfile}" $li
"232\\^done,locals=\\\[\{name=\"A\",value=\"1\"\},\{name=\"B\",value=\"2\"\},\{name=\"C\",value=\"3\"\},\{name=\"D\",value=\"\\{0, 1, 2\\}\"\}\\\]" \ "232\\^done,locals=\\\[\{name=\"A\",value=\"1\"\},\{name=\"B\",value=\"2\"\},\{name=\"C\",value=\"3\"\},\{name=\"D\",value=\"\\{0, 1, 2\\}\"\}\\\]" \
"stack locals listing of names and values" "stack locals listing of names and values"
mi_gdb_test "232-stack-list-locals 2" \ mi_gdb_test "232-stack-list-locals --simple-values" \
"232\\^done,locals=\\\[\{name=\"A\",type=\"int\",value=\"1\"\},\{name=\"B\",type=\"int\",value=\"2\"\},\{name=\"C\",type=\"int\",value=\"3\"\},\{name=\"D\",type=\"int \\\[3\\\]\"\}\\\]" \ "232\\^done,locals=\\\[\{name=\"A\",type=\"int\",value=\"1\"\},\{name=\"B\",type=\"int\",value=\"2\"\},\{name=\"C\",type=\"int\",value=\"3\"\},\{name=\"D\",type=\"int \\\[3\\\]\"\}\\\]" \
"stack locals listing, simple types: names and values, complex type: names and types" "stack locals listing, simple types: names and values, complex type: names and types"