From patchwork Thu Dec 12 02:35:02 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Simon Marchi (Code Review)" X-Patchwork-Id: 36754 Received: (qmail 130855 invoked by alias); 12 Dec 2019 02:35:12 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 130798 invoked by uid 89); 12 Dec 2019 02:35:11 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-21.6 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3 autolearn=ham version=3.3.1 spammy= X-HELO: mx1.osci.io Received: from polly.osci.io (HELO mx1.osci.io) (8.43.85.229) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 12 Dec 2019 02:35:09 +0000 Received: by mx1.osci.io (Postfix, from userid 994) id 0CF2F203C1; Wed, 11 Dec 2019 21:35:08 -0500 (EST) Received: from gnutoolchain-gerrit.osci.io (gnutoolchain-gerrit.osci.io [8.43.85.239]) by mx1.osci.io (Postfix) with ESMTP id BEA6D20484 for ; Wed, 11 Dec 2019 21:35:04 -0500 (EST) Received: from localhost (localhost [127.0.0.1]) by gnutoolchain-gerrit.osci.io (Postfix) with ESMTP id B418728177 for ; Wed, 11 Dec 2019 21:35:04 -0500 (EST) X-Gerrit-PatchSet: 2 Date: Wed, 11 Dec 2019 21:35:02 -0500 From: "Tom Tromey (Code Review)" To: gdb-patches@sourceware.org Auto-Submitted: auto-generated X-Gerrit-MessageType: newpatchset Subject: [review v2] Simplify tui_source_window_base::maybe_update method X-Gerrit-Change-Id: I33d8e1a669a179544edb4197f5f7c5429dfc368e X-Gerrit-Change-Number: 634 X-Gerrit-ChangeURL: X-Gerrit-Commit: e5b1a349b62eb72b8ad97a35afbe643207bfcaf7 In-Reply-To: References: Reply-To: tromey@sourceware.org, gdb-patches@sourceware.org MIME-Version: 1.0 Content-Disposition: inline User-Agent: Gerrit/3.0.3-79-g83ff7f88f1 Message-Id: <20191212023504.B418728177@gnutoolchain-gerrit.osci.io> Change URL: https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/634 ...................................................................... Simplify tui_source_window_base::maybe_update method tui_source_window_base::maybe_update takes a symtab_and_line, plus a separate line number and PC. Because a symtab_and_line already holds a line number and a PC, it is possible to remove these extra parameters. gdb/ChangeLog 2019-12-11 Tom Tromey * tui/tui-winsource.h (struct tui_source_window_base) : Remove line_no and addr parameters. * tui/tui-stack.c (tui_show_frame_info): Set PC on sal. Update. * tui/tui-source.h (struct tui_source_window) : Update. * tui/tui-source.c (tui_source_window::maybe_update): Remove line_no and addr parameters. * tui/tui-disasm.h (struct tui_disasm_window) : Update. * tui/tui-disasm.c (tui_disasm_window::maybe_update): Remove line_no and addr parameters. Change-Id: I33d8e1a669a179544edb4197f5f7c5429dfc368e --- M gdb/ChangeLog M gdb/tui/tui-disasm.c M gdb/tui/tui-disasm.h M gdb/tui/tui-source.c M gdb/tui/tui-source.h M gdb/tui/tui-stack.c M gdb/tui/tui-winsource.h 7 files changed, 35 insertions(+), 25 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index d7352f7..994eb6a 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,19 @@ 2019-12-11 Tom Tromey + * tui/tui-winsource.h (struct tui_source_window_base) + : Remove line_no and addr parameters. + * tui/tui-stack.c (tui_show_frame_info): Set PC on sal. Update. + * tui/tui-source.h (struct tui_source_window) : + Update. + * tui/tui-source.c (tui_source_window::maybe_update): Remove + line_no and addr parameters. + * tui/tui-disasm.h (struct tui_disasm_window) : + Update. + * tui/tui-disasm.c (tui_disasm_window::maybe_update): Remove + line_no and addr parameters. + +2019-12-11 Tom Tromey + * tui/tui-winsource.c (tui_source_window_base::set_is_exec_point_at) (tui_source_window_base::update_breakpoint_info): Remove asserts. diff --git a/gdb/tui/tui-disasm.c b/gdb/tui/tui-disasm.c index 94780a5..63d581b 100644 --- a/gdb/tui/tui-disasm.c +++ b/gdb/tui/tui-disasm.c @@ -384,31 +384,30 @@ } void -tui_disasm_window::maybe_update (struct frame_info *fi, symtab_and_line sal, - int line_no, CORE_ADDR addr) +tui_disasm_window::maybe_update (struct frame_info *fi, symtab_and_line sal) { CORE_ADDR low; - if (find_pc_partial_function (get_frame_pc (fi), - NULL, &low, NULL) == 0) + struct gdbarch *frame_arch = get_frame_arch (fi); + + if (find_pc_partial_function (sal.pc, NULL, &low, NULL) == 0) { /* There is no symbol available for current PC. There is no safe way how to "disassemble backwards". */ - low = get_frame_pc (fi); + low = sal.pc; } else - low = tui_get_low_disassembly_address (get_frame_arch (fi), - low, get_frame_pc (fi)); + low = tui_get_low_disassembly_address (frame_arch, low, sal.pc); struct tui_line_or_address a; a.loa = LOA_ADDRESS; a.u.addr = low; - if (!addr_is_displayed (addr)) - update_source_window (get_frame_arch (fi), sal.symtab, a); + if (!addr_is_displayed (sal.pc)) + update_source_window (frame_arch, sal.symtab, a); else { - a.u.addr = addr; + a.u.addr = sal.pc; set_is_exec_point_at (a); } } diff --git a/gdb/tui/tui-disasm.h b/gdb/tui/tui-disasm.h index a4b04e4..28f87c6 100644 --- a/gdb/tui/tui-disasm.h +++ b/gdb/tui/tui-disasm.h @@ -44,9 +44,7 @@ bool location_matches_p (struct bp_location *loc, int line_no) override; - void maybe_update (struct frame_info *fi, symtab_and_line sal, - int line_no, CORE_ADDR addr) - override; + void maybe_update (struct frame_info *fi, symtab_and_line sal) override; void erase_source_content () override { diff --git a/gdb/tui/tui-source.c b/gdb/tui/tui-source.c index 32877d7..9292d82 100644 --- a/gdb/tui/tui-source.c +++ b/gdb/tui/tui-source.c @@ -207,10 +207,9 @@ } void -tui_source_window::maybe_update (struct frame_info *fi, symtab_and_line sal, - int line_no, CORE_ADDR addr) +tui_source_window::maybe_update (struct frame_info *fi, symtab_and_line sal) { - int start_line = (line_no - (viewport_height / 2)) + 1; + int start_line = (sal.line - (viewport_height / 2)) + 1; if (start_line <= 0) start_line = 1; @@ -221,12 +220,11 @@ l.loa = LOA_LINE; l.u.line_no = start_line; - if (!(source_already_displayed - && line_is_displayed (line_no))) + if (!(source_already_displayed && line_is_displayed (sal.line))) update_source_window (get_frame_arch (fi), sal.symtab, l); else { - l.u.line_no = line_no; + l.u.line_no = sal.line; set_is_exec_point_at (l); } } diff --git a/gdb/tui/tui-source.h b/gdb/tui/tui-source.h index a2b7754..15d1429 100644 --- a/gdb/tui/tui-source.h +++ b/gdb/tui/tui-source.h @@ -49,9 +49,7 @@ bool showing_source_p (const char *filename) const; - void maybe_update (struct frame_info *fi, symtab_and_line sal, - int line_no, CORE_ADDR addr) - override; + void maybe_update (struct frame_info *fi, symtab_and_line sal) override; void erase_source_content () override { diff --git a/gdb/tui/tui-stack.c b/gdb/tui/tui-stack.c index 7803b95..4f6fe8e 100644 --- a/gdb/tui/tui-stack.c +++ b/gdb/tui/tui-stack.c @@ -341,9 +341,13 @@ if (!locator_changed_p) return 0; + /* find_frame_sal does not always set PC, but we want to ensure + that it is available in the SAL. */ + sal.pc = pc; + for (struct tui_source_window_base *win_info : tui_source_windows ()) { - win_info->maybe_update (fi, sal, locator->line_no, locator->addr); + win_info->maybe_update (fi, sal); win_info->update_exec_info (); } diff --git a/gdb/tui/tui-winsource.h b/gdb/tui/tui-winsource.h index 8b96200..1ba967c 100644 --- a/gdb/tui/tui-winsource.h +++ b/gdb/tui/tui-winsource.h @@ -109,8 +109,7 @@ /* Update the window to display the given location. Does nothing if the location is already displayed. */ - virtual void maybe_update (struct frame_info *fi, symtab_and_line sal, - int line_no, CORE_ADDR addr) = 0; + virtual void maybe_update (struct frame_info *fi, symtab_and_line sal) = 0; void update_source_window_as_is (struct gdbarch *gdbarch, struct symtab *s,