From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3563 invoked by alias); 24 Apr 2004 00:03:04 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 3546 invoked from network); 24 Apr 2004 00:03:03 -0000 Received: from unknown (HELO mx1.redhat.com) (66.187.233.31) by sources.redhat.com with SMTP; 24 Apr 2004 00:03:03 -0000 Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.10/8.12.10) with ESMTP id i3O033KG001511 for ; Fri, 23 Apr 2004 20:03:03 -0400 Received: from localhost.redhat.com (to-dhcp51.toronto.redhat.com [172.16.14.151]) by int-mx1.corp.redhat.com (8.11.6/8.11.6) with ESMTP id i3O032p30934 for ; Fri, 23 Apr 2004 20:03:02 -0400 Received: from gnu.org (localhost [127.0.0.1]) by localhost.redhat.com (Postfix) with ESMTP id 4B90C2BA4; Fri, 23 Apr 2004 10:43:15 -0400 (EDT) Message-ID: <40892B83.30209@gnu.org> Date: Sat, 24 Apr 2004 00:03:00 -0000 From: Andrew Cagney User-Agent: Mozilla/5.0 (X11; U; NetBSD macppc; en-GB; rv:1.4.1) Gecko/20040217 MIME-Version: 1.0 To: gdb-patches@sources.redhat.com Subject: [patch/rfc] Clean up print_stack_frame et.al. Content-Type: multipart/mixed; boundary="------------000706030407020900030601" X-SW-Source: 2004-04/txt/msg00585.txt.bz2 This is a multi-part message in MIME format. --------------000706030407020900030601 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-length: 673 Hello, The attached patch cleans up the print_stack_frame interface vis: - replaces ``level'' with ``print_level'' The old code was doing the ultimate dumness of: print_stack_frame (fi, frame_relative_level (fi), ...) trusting that one matched the other ... :-/ - replaces ``int source'' with ``enum print_what print_what'' a very long standing cleanup - replaces ``int args'' with the more meaningful ``int print_args'' An obvious follow-up is to merge print_args, print_level and print_what. However, just getting this very long standing overhaul to work was hairy enough so I'm going to leave it for now. Baring comments I'll commit it in a few days, Andrew --------------000706030407020900030601 Content-Type: text/plain; name="diffs" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="diffs" Content-length: 19441 2004-04-23 Andrew Cagney * stack.c (print_stack_frame_stub): Delete declaration. (struct print_stack_frame_args, print_stack_frame) (print_frame_info, print_frame): Replace "source" with print what. Replace "print" with "print_level". Replace "args" with "print_args". * frame.h (show_and_print_stack_frame, print_stack_frame) (print_frame_info): Update declarations. * stack.c (select_and_print_frame, frame_command) (current_frame_command, up_command, down_command): Update calls - use get_selected_frame, pass "enum print_what" for source, do not call frame_relative_level. * mi/mi-cmd-stack.c (mi_cmd_stack_list_frames): Ditto. * remote-rdp.c (remote_rdp_open): Ditto. * remote-mips.c (common_open): Ditto. * remote-e7000.c (e7000_start_remote): Ditto. * ocd.c (ocd_start_remote): Ditto. * mi/mi-main.c (mi_cmd_exec_return): Ditto. * infrun.c (normal_stop): Ditto. * inflow.c (kill_command): Ditto. * infcmd.c (finish_command): Ditto. * corelow.c (core_open): Ditto. * tracepoint.c (finish_tfind_command): Ditto. * thread.c (info_threads_command, info_threads_command) (restore_current_thread, do_captured_thread_select): Ditto. * ada-tasks.c (task_command): Ditto. Index: ada-tasks.c =================================================================== RCS file: /cvs/src/src/gdb/ada-tasks.c,v retrieving revision 1.7 diff -u -r1.7 ada-tasks.c --- ada-tasks.c 17 Jun 2003 20:58:32 -0000 1.7 +++ ada-tasks.c 23 Apr 2004 14:29:12 -0000 @@ -794,10 +794,8 @@ { /* FIXME: find_printable_frame should be defined in frame.h, and implemented in ada-lang.c */ - /* find_printable_frame (deprecated_selected_frame, frame_relative_level (deprecated_selected_frame)); */ printf_filtered ("[Switching to task %d]\n", num); - print_stack_frame (deprecated_selected_frame, - frame_relative_level (deprecated_selected_frame), 1); + print_stack_frame (get_selected_frame (), 1, SRC_AND_LOC); } else printf_filtered ("Unable to switch to task %d\n", num); Index: corelow.c =================================================================== RCS file: /cvs/src/src/gdb/corelow.c,v retrieving revision 1.38 diff -u -r1.38 corelow.c --- corelow.c 21 Apr 2004 17:47:10 -0000 1.38 +++ corelow.c 23 Apr 2004 14:29:12 -0000 @@ -388,8 +388,7 @@ /* Now, set up the frame cache, and print the top of stack. */ flush_cached_frames (); select_frame (get_current_frame ()); - print_stack_frame (deprecated_selected_frame, - frame_relative_level (deprecated_selected_frame), 1); + print_stack_frame (get_selected_frame (), 1, SRC_AND_LOC); } else { Index: frame.h =================================================================== RCS file: /cvs/src/src/gdb/frame.h,v retrieving revision 1.127 diff -u -r1.127 frame.h --- frame.h 22 Apr 2004 18:19:56 -0000 1.127 +++ frame.h 23 Apr 2004 14:29:12 -0000 @@ -554,14 +554,16 @@ extern struct frame_info *find_relative_frame (struct frame_info *, int *); -extern void show_and_print_stack_frame (struct frame_info *fi, int level, - int source); +extern void show_and_print_stack_frame (struct frame_info *fi, int print_level, + enum print_what print_what); -extern void print_stack_frame (struct frame_info *, int, int); +extern void print_stack_frame (struct frame_info *, int print_level, + enum print_what print_what); extern void show_stack_frame (struct frame_info *); -extern void print_frame_info (struct frame_info *, int, int, int); +extern void print_frame_info (struct frame_info *, int print_level, + enum print_what print_what, int args); extern struct frame_info *block_innermost_frame (struct block *); Index: infcmd.c =================================================================== RCS file: /cvs/src/src/gdb/infcmd.c,v retrieving revision 1.107 diff -u -r1.107 infcmd.c --- infcmd.c 21 Apr 2004 23:52:20 -0000 1.107 +++ infcmd.c 23 Apr 2004 14:29:12 -0000 @@ -1234,8 +1234,7 @@ if (from_tty) { printf_filtered ("Run till exit from "); - print_stack_frame (deprecated_selected_frame, - frame_relative_level (deprecated_selected_frame), 0); + print_stack_frame (get_selected_frame (), 1, LOCATION); } /* If running asynchronously and the target support asynchronous Index: inflow.c =================================================================== RCS file: /cvs/src/src/gdb/inflow.c,v retrieving revision 1.21 diff -u -r1.21 inflow.c --- inflow.c 29 Feb 2004 19:17:49 -0000 1.21 +++ inflow.c 23 Apr 2004 14:29:12 -0000 @@ -595,8 +595,7 @@ if (deprecated_selected_frame == NULL) fputs_filtered ("No selected stack frame.\n", gdb_stdout); else - print_stack_frame (deprecated_selected_frame, - frame_relative_level (deprecated_selected_frame), 1); + print_stack_frame (get_selected_frame (), 1, SRC_AND_LOC); } } Index: infrun.c =================================================================== RCS file: /cvs/src/src/gdb/infrun.c,v retrieving revision 1.147 diff -u -r1.147 infrun.c --- infrun.c 21 Apr 2004 23:52:20 -0000 1.147 +++ infrun.c 23 Apr 2004 14:29:12 -0000 @@ -3247,7 +3247,7 @@ LOCATION: Print only location SRC_AND_LOC: Print location and source line */ if (do_frame_printing) - print_stack_frame (deprecated_selected_frame, -1, source_flag); + print_stack_frame (get_selected_frame (), 0, source_flag); /* Display the auto-display expressions. */ do_displays (); Index: ocd.c =================================================================== RCS file: /cvs/src/src/gdb/ocd.c,v retrieving revision 1.28 diff -u -r1.28 ocd.c --- ocd.c 18 Jan 2004 19:26:51 -0000 1.28 +++ ocd.c 23 Apr 2004 14:29:12 -0000 @@ -225,7 +225,7 @@ flush_cached_frames (); registers_changed (); stop_pc = read_pc (); - print_stack_frame (get_selected_frame (), -1, 1); + print_stack_frame (get_selected_frame (), 0, SRC_AND_LOC); buf[0] = OCD_LOG_FILE; buf[1] = 3; /* close existing WIGGLERS.LOG */ Index: remote-e7000.c =================================================================== RCS file: /cvs/src/src/gdb/remote-e7000.c,v retrieving revision 1.39 diff -u -r1.39 remote-e7000.c --- remote-e7000.c 11 Dec 2003 06:21:12 -0000 1.39 +++ remote-e7000.c 23 Apr 2004 14:29:13 -0000 @@ -629,7 +629,7 @@ flush_cached_frames (); registers_changed (); stop_pc = read_pc (); - print_stack_frame (get_selected_frame (), -1, 1); + print_stack_frame (get_selected_frame (), 0, SRC_AND_LOC); return 1; } Index: remote-mips.c =================================================================== RCS file: /cvs/src/src/gdb/remote-mips.c,v retrieving revision 1.45 diff -u -r1.45 remote-mips.c --- remote-mips.c 21 Apr 2004 23:52:20 -0000 1.45 +++ remote-mips.c 23 Apr 2004 14:29:13 -0000 @@ -1588,7 +1588,7 @@ flush_cached_frames (); registers_changed (); stop_pc = read_pc (); - print_stack_frame (get_selected_frame (), -1, 1); + print_stack_frame (get_selected_frame (), 0, SRC_AND_LOC); xfree (serial_port_name); } Index: remote-rdp.c =================================================================== RCS file: /cvs/src/src/gdb/remote-rdp.c,v retrieving revision 1.36 diff -u -r1.36 remote-rdp.c --- remote-rdp.c 25 Mar 2004 16:52:42 -0000 1.36 +++ remote-rdp.c 23 Apr 2004 14:29:14 -0000 @@ -1181,7 +1181,7 @@ flush_cached_frames (); registers_changed (); stop_pc = read_pc (); - print_stack_frame (get_selected_frame (), -1, 1); + print_stack_frame (get_selected_frame (), 0, SRC_AND_LOC); } Index: stack.c =================================================================== RCS file: /cvs/src/src/gdb/stack.c,v retrieving revision 1.103 diff -u -r1.103 stack.c --- stack.c 21 Apr 2004 23:52:21 -0000 1.103 +++ stack.c 23 Apr 2004 14:29:14 -0000 @@ -95,9 +95,9 @@ struct ui_file *); static void print_frame (struct frame_info *fi, - int level, - int source, - int args, + int print_level, + enum print_what print_what, + int print_args, struct symtab_and_line sal); static void backtrace_command (char *, int); @@ -120,42 +120,38 @@ struct print_stack_frame_args { struct frame_info *fi; - int level; - int source; - int args; + int print_level; + enum print_what print_what; + int print_args; }; /* Show or print the frame arguments. Pass the args the way catch_errors wants them. */ -static int print_stack_frame_stub (void *args); static int print_stack_frame_stub (void *args) { struct print_stack_frame_args *p = (struct print_stack_frame_args *) args; - print_frame_info (p->fi, p->level, p->source, p->args); + print_frame_info (p->fi, p->print_level, p->print_what, p->print_args); return 0; } -/* Show or print a stack frame briefly. FRAME_INFI should be the frame info - and LEVEL should be its level in the stack (or -1 for level not defined). - This prints the level, the function executing, the arguments, - and the file name and line number. - If the pc is not at the beginning of the source line, - the actual pc is printed at the beginning. - - If SOURCE is 1, print the source line as well. - If SOURCE is -1, print ONLY the source line. */ +/* Show or print a stack frame briefly. FRAME_INFI should be the + frame info. This prints the level, the function executing, the + arguments, and the file name and line number. If the pc is not at + the beginning of the source line, the actual pc is printed at the + beginning. */ void -print_stack_frame (struct frame_info *fi, int level, int source) +print_stack_frame (struct frame_info *fi, int print_level, + enum print_what print_what) { struct print_stack_frame_args args; args.fi = fi; - args.level = level; - args.source = source; - args.args = 1; + args.print_level = print_level; + args.print_what = print_what; + args.print_args = 1; catch_errors (print_stack_frame_stub, (char *) &args, "", RETURN_MASK_ALL); } @@ -418,7 +414,8 @@ LOC_AND_SRC: Print location and source line. */ void -print_frame_info (struct frame_info *fi, int level, int source, int args) +print_frame_info (struct frame_info *fi, int print_level, + enum print_what print_what, int print_args) { struct symtab_and_line sal; int source_print; @@ -430,14 +427,16 @@ struct cleanup *uiout_cleanup = make_cleanup_ui_out_tuple_begin_end (uiout, "frame"); - annotate_frame_begin (level == -1 ? 0 : level, get_frame_pc (fi)); + annotate_frame_begin (print_level ? frame_relative_level (fi) : 0, + get_frame_pc (fi)); /* Do this regardless of SOURCE because we don't have any source to list for this frame. */ - if (level >= 0) + if (print_level) { ui_out_text (uiout, "#"); - ui_out_field_fmt_int (uiout, 2, ui_left, "level", level); + ui_out_field_fmt_int (uiout, 2, ui_left, "level", + frame_relative_level (fi)); } if (ui_out_is_mi_like_p (uiout)) { @@ -471,14 +470,14 @@ line containing fi->pc. */ find_frame_sal (fi, &sal); - location_print = (source == LOCATION - || source == LOC_AND_ADDRESS - || source == SRC_AND_LOC); + location_print = (print_what == LOCATION + || print_what == LOC_AND_ADDRESS + || print_what == SRC_AND_LOC); if (location_print || !sal.symtab) - print_frame (fi, level, source, args, sal); + print_frame (fi, print_level, print_what, print_args, sal); - source_print = (source == SRC_LINE || source == SRC_AND_LOC); + source_print = (print_what == SRC_LINE || print_what == SRC_AND_LOC); if (sal.symtab) set_current_source_symtab_and_line (&sal); @@ -487,7 +486,8 @@ { struct symtab_and_line cursal; int done = 0; - int mid_statement = (source == SRC_LINE) && (get_frame_pc (fi) != sal.pc); + int mid_statement = ((print_what == SRC_LINE) + && (get_frame_pc (fi) != sal.pc)); if (annotation_level) done = identify_source_line (sal.symtab, sal.line, mid_statement, @@ -522,7 +522,7 @@ set_current_source_symtab_and_line (&cursal); } - if (source != 0) + if (print_what != LOCATION) set_default_breakpoint (1, get_frame_pc (fi), sal.symtab, sal.line); annotate_frame_end (); @@ -532,9 +532,9 @@ static void print_frame (struct frame_info *fi, - int level, - int source, - int args, + int print_level, + enum print_what print_what, + int print_args, struct symtab_and_line sal) { struct symbol *func; @@ -622,19 +622,21 @@ } } - annotate_frame_begin (level == -1 ? 0 : level, get_frame_pc (fi)); + annotate_frame_begin (print_level ? frame_relative_level (fi) : 0, + get_frame_pc (fi)); list_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "frame"); - if (level >= 0) + if (print_level) { ui_out_text (uiout, "#"); - ui_out_field_fmt_int (uiout, 2, ui_left, "level", level); + ui_out_field_fmt_int (uiout, 2, ui_left, "level", + frame_relative_level (fi)); } if (addressprint) if (get_frame_pc (fi) != sal.pc || !sal.symtab - || source == LOC_AND_ADDRESS) + || print_what == LOC_AND_ADDRESS) { annotate_frame_address (); ui_out_field_core_addr (uiout, "addr", get_frame_pc (fi)); @@ -649,7 +651,7 @@ annotate_frame_args (); ui_out_text (uiout, " ("); - if (args) + if (print_args) { struct print_args_args args; struct cleanup *args_list_chain; @@ -1220,7 +1222,7 @@ means further attempts to backtrace would fail (on the other hand, perhaps the code does or could be fixed to make sure the frame->prev field gets set to NULL in that case). */ - print_frame_info (fi, trailing_level + i, 0, 1); + print_frame_info (fi, 1, LOCATION, 1); if (show_locals) print_frame_local_vars (fi, 1, gdb_stdout); } @@ -1606,9 +1608,7 @@ { select_frame (fi); if (fi) - { - print_stack_frame (fi, frame_relative_level (fi), 1); - } + print_stack_frame (fi, 1, SRC_AND_LOC); } /* Return the symbol-block in which the selected frame is executing. @@ -1715,8 +1715,7 @@ frame_command (char *level_exp, int from_tty) { select_frame_command (level_exp, from_tty); - print_stack_frame (deprecated_selected_frame, - frame_relative_level (deprecated_selected_frame), 1); + print_stack_frame (get_selected_frame (), 1, SRC_AND_LOC); } /* The XDB Compatibility command to print the current frame. */ @@ -1726,8 +1725,7 @@ { if (target_has_stack == 0 || deprecated_selected_frame == 0) error ("No stack."); - print_stack_frame (deprecated_selected_frame, - frame_relative_level (deprecated_selected_frame), 1); + print_stack_frame (get_selected_frame (), 1, SRC_AND_LOC); } /* Select the frame up one or COUNT stack levels @@ -1762,8 +1760,7 @@ up_command (char *count_exp, int from_tty) { up_silently_base (count_exp); - print_stack_frame (deprecated_selected_frame, - frame_relative_level (deprecated_selected_frame), 1); + print_stack_frame (get_selected_frame (), 1, SRC_AND_LOC); } /* Select the frame down one or COUNT stack levels @@ -1807,8 +1804,7 @@ down_command (char *count_exp, int from_tty) { down_silently_base (count_exp); - print_stack_frame (deprecated_selected_frame, - frame_relative_level (deprecated_selected_frame), 1); + print_stack_frame (get_selected_frame (), 1, SRC_AND_LOC); } void Index: thread.c =================================================================== RCS file: /cvs/src/src/gdb/thread.c,v retrieving revision 1.32 diff -u -r1.32 thread.c --- thread.c 28 Jul 2003 13:02:12 -0000 1.32 +++ thread.c 23 Apr 2004 14:29:14 -0000 @@ -448,7 +448,7 @@ puts_filtered (" "); switch_to_thread (tp->ptid); - print_stack_frame (get_selected_frame (), -1, 0); + print_stack_frame (get_selected_frame (), 0, LOCATION); } switch_to_thread (current_ptid); @@ -465,7 +465,7 @@ { /* Ooops, can't restore, tell user where we are. */ warning ("Couldn't restore frame in current thread, at frame 0"); - print_stack_frame (get_selected_frame (), -1, 0); + print_stack_frame (get_selected_frame (), 0, LOCATION); } else { @@ -497,7 +497,7 @@ if (!ptid_equal (ptid, inferior_ptid)) { switch_to_thread (ptid); - print_stack_frame (get_current_frame (), 0, -1); + print_stack_frame (get_current_frame (), 1, SRC_LINE); } } @@ -704,8 +704,7 @@ #endif ui_out_text (uiout, ")]"); - print_stack_frame (deprecated_selected_frame, - frame_relative_level (deprecated_selected_frame), 1); + print_stack_frame (get_selected_frame (), 1, SRC_AND_LOC); return GDB_RC_OK; } Index: tracepoint.c =================================================================== RCS file: /cvs/src/src/gdb/tracepoint.c,v retrieving revision 1.58 diff -u -r1.58 tracepoint.c --- tracepoint.c 21 Apr 2004 23:52:21 -0000 1.58 +++ tracepoint.c 23 Apr 2004 14:29:15 -0000 @@ -1935,7 +1935,7 @@ if (from_tty) { - int source_only; + enum print_what print_what; /* NOTE: in immitation of the step command, try to determine whether we have made a transition from one function to another. @@ -1951,13 +1951,11 @@ (old_frame_addr == 0 || get_frame_base (get_current_frame ()) == 0 || old_frame_addr == get_frame_base (get_current_frame ()))) - source_only = -1; + print_what = SRC_LINE; else - source_only = 1; + print_what = SRC_AND_LOC; - print_stack_frame (deprecated_selected_frame, - frame_relative_level (deprecated_selected_frame), - source_only); + print_stack_frame (get_selected_frame (), 1, print_what); do_displays (); } } Index: mi/mi-cmd-stack.c =================================================================== RCS file: /cvs/src/src/gdb/mi/mi-cmd-stack.c,v retrieving revision 1.22 diff -u -r1.22 mi-cmd-stack.c --- mi/mi-cmd-stack.c 24 Jan 2004 04:21:55 -0000 1.22 +++ mi/mi-cmd-stack.c 23 Apr 2004 14:29:15 -0000 @@ -85,14 +85,9 @@ i++, fi = get_prev_frame (fi)) { QUIT; - /* level == i: always print the level 'i' - source == LOC_AND_ADDRESS: print the location and the address - always, even for level 0. + /* Print the location and the address always, even for level 0. args == 0: don't print the arguments. */ - print_frame_info (fi /* frame info */ , - i /* level */ , - LOC_AND_ADDRESS /* source */ , - 0 /* args */ ); + print_frame_info (fi, 1, LOC_AND_ADDRESS, 0 /* args */ ); } do_cleanups (cleanup_stack); Index: mi/mi-main.c =================================================================== RCS file: /cvs/src/src/gdb/mi/mi-main.c,v retrieving revision 1.58 diff -u -r1.58 mi-main.c --- mi/mi-main.c 15 Feb 2004 15:22:06 -0000 1.58 +++ mi/mi-main.c 23 Apr 2004 14:29:15 -0000 @@ -191,9 +191,7 @@ /* Because we have called return_command with from_tty = 0, we need to print the frame here. */ - print_stack_frame (deprecated_selected_frame, - frame_relative_level (deprecated_selected_frame), - LOC_AND_ADDRESS); + print_stack_frame (get_selected_frame (), 1, LOC_AND_ADDRESS); return MI_CMD_DONE; } --------------000706030407020900030601--