X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fmi%2Fmi-cmd-stack.c;h=baf9b6dbd68af0b902ccd322ac55a96234a15672;hb=ce8f13f88e2d8fc915e0af5039080ec0b293ee11;hp=690a4e4c00942ef3726aed0aca12a2d425013ea2;hpb=9fbcbb40824b6e96cb242af169273ec30bc26596;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/mi/mi-cmd-stack.c b/gdb/mi/mi-cmd-stack.c index 690a4e4c00..baf9b6dbd6 100644 --- a/gdb/mi/mi-cmd-stack.c +++ b/gdb/mi/mi-cmd-stack.c @@ -1,5 +1,5 @@ /* MI Command Set - stack commands. - Copyright (C) 2000, 2002, 2003, 2004, 2005, 2007 + Copyright (C) 2000, 2002, 2003, 2004, 2005, 2007, 2008 Free Software Foundation, Inc. Contributed by Cygnus Solutions (a Red Hat company). @@ -7,7 +7,7 @@ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or + the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, @@ -16,9 +16,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. */ + along with this program. If not, see . */ #include "defs.h" #include "target.h" @@ -31,6 +29,7 @@ #include "stack.h" #include "dictionary.h" #include "gdb_string.h" +#include "language.h" static void list_args_or_locals (int locals, int values, struct frame_info *fi); @@ -39,7 +38,7 @@ static void list_args_or_locals (int locals, int values, struct frame_info *fi); specifying the frame numbers at which to start and stop the display. If the two numbers are equal, a single frame will be displayed. */ -enum mi_cmd_result +void mi_cmd_stack_list_frames (char *command, char **argv, int argc) { int frame_low; @@ -89,11 +88,9 @@ mi_cmd_stack_list_frames (char *command, char **argv, int argc) } do_cleanups (cleanup_stack); - - return MI_CMD_DONE; } -enum mi_cmd_result +void mi_cmd_stack_info_depth (char *command, char **argv, int argc) { int frame_high; @@ -116,14 +113,12 @@ mi_cmd_stack_info_depth (char *command, char **argv, int argc) QUIT; ui_out_field_int (uiout, "depth", i); - - return MI_CMD_DONE; } /* 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 values. */ -enum mi_cmd_result +void mi_cmd_stack_list_locals (char *command, char **argv, int argc) { struct frame_info *frame; @@ -148,13 +143,12 @@ mi_cmd_stack_list_locals (char *command, char **argv, int argc) 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); - return MI_CMD_DONE; } /* Print a list of the arguments for the current frame. With argument of 0, print only the names, with argument of 1 print also the values. */ -enum mi_cmd_result +void mi_cmd_stack_list_args (char *command, char **argv, int argc) { int frame_low; @@ -206,8 +200,6 @@ mi_cmd_stack_list_args (char *command, char **argv, int argc) } do_cleanups (cleanup_stack_args); - - return MI_CMD_DONE; } /* Print a list of the locals or the arguments for the currently @@ -253,21 +245,12 @@ list_args_or_locals (int locals, int values, struct frame_info *fi) case LOC_ARG: /* argument */ case LOC_REF_ARG: /* reference arg */ - case LOC_REGPARM: /* register arg */ case LOC_REGPARM_ADDR: /* indirect register arg */ - case LOC_LOCAL_ARG: /* stack arg */ - case LOC_BASEREG_ARG: /* basereg arg */ - case LOC_COMPUTED_ARG: /* arg with computed location */ - if (!locals) - print_me = 1; - break; - case LOC_LOCAL: /* stack local */ - case LOC_BASEREG: /* basereg local */ case LOC_STATIC: /* static */ case LOC_REGISTER: /* register */ case LOC_COMPUTED: /* computed location */ - if (locals) + if (SYMBOL_IS_ARGUMENT (sym) ? !locals : locals) print_me = 1; break; } @@ -284,10 +267,9 @@ list_args_or_locals (int locals, int values, struct frame_info *fi) if (!locals) sym2 = lookup_symbol (SYMBOL_NATURAL_NAME (sym), block, VAR_DOMAIN, - (int *) NULL, - (struct symtab **) NULL); + (int *) NULL); else - sym2 = sym; + sym2 = sym; switch (values) { case PRINT_SIMPLE_VALUES: @@ -300,7 +282,8 @@ list_args_or_locals (int locals, int values, struct frame_info *fi) { val = read_var_value (sym2, fi); common_val_print - (val, stb->stream, 0, 1, 0, Val_no_prettyprint); + (val, stb->stream, 0, 1, 0, Val_no_prettyprint, + language_def (SYMBOL_LANGUAGE (sym2))); ui_out_field_stream (uiout, "value", stb); } do_cleanups (cleanup_tuple); @@ -308,7 +291,8 @@ list_args_or_locals (int locals, int values, struct frame_info *fi) case PRINT_ALL_VALUES: val = read_var_value (sym2, fi); common_val_print - (val, stb->stream, 0, 1, 0, Val_no_prettyprint); + (val, stb->stream, 0, 1, 0, Val_no_prettyprint, + language_def (SYMBOL_LANGUAGE (sym2))); ui_out_field_stream (uiout, "value", stb); do_cleanups (cleanup_tuple); break; @@ -324,22 +308,20 @@ list_args_or_locals (int locals, int values, struct frame_info *fi) ui_out_stream_delete (stb); } -enum mi_cmd_result +void mi_cmd_stack_select_frame (char *command, char **argv, int argc) { if (argc == 0 || argc > 1) error (_("mi_cmd_stack_select_frame: Usage: FRAME_SPEC")); select_frame_command (argv[0], 1 /* not used */ ); - return MI_CMD_DONE; } -enum mi_cmd_result +void mi_cmd_stack_info_frame (char *command, char **argv, int argc) { if (argc > 0) error (_("mi_cmd_stack_info_frame: No arguments required")); - + print_frame_info (get_selected_frame (NULL), 1, LOC_AND_ADDRESS, 0); - return MI_CMD_DONE; }