public inbox for gdb-testers@sourceware.org
help / color / mirror / Atom feed
From: gdb-buildbot@sergiodj.net
To: gdb-testers@sourceware.org
Subject: [binutils-gdb] gdb/tui: Link source and assembler scrolling .... again
Date: Fri, 10 Jan 2020 05:23:00 -0000	[thread overview]
Message-ID: <f5a7c406b1975cde626efed526960f2cf1bdaceb@gdb-build> (raw)

*** TEST RESULTS FOR COMMIT f5a7c406b1975cde626efed526960f2cf1bdaceb ***

commit f5a7c406b1975cde626efed526960f2cf1bdaceb
Author:     Andrew Burgess <andrew.burgess@embecosm.com>
AuthorDate: Tue Jan 7 11:39:17 2020 +0000
Commit:     Andrew Burgess <andrew.burgess@embecosm.com>
CommitDate: Thu Jan 9 23:11:47 2020 +0000

    gdb/tui: Link source and assembler scrolling .... again
    
    Until recently when the source window was scrolled the assembler
    window would scroll in sync - keeping the disassembly for the current
    line in view.
    
    This was broken in commit:
    
      commit b4b49dcbff6b437fa8b4e2fc0c3f27b457f11310
      Date:   Wed Nov 13 16:47:58 2019 -0700
    
          Don't call tui_show_source from tui_ui_out
    
    This commit restores the synchronised scrolling and also maintains the
    horizontal scroll within the source view when it is vertically
    scrolled, something that was broken before.
    
    This commit does not mean that scrolling the assembler view scrolls
    the source view.  The connection this way never existed, though maybe
    it should, but I'll leave adding this feature for a separate commit.
    
    gdb/ChangeLog:
    
            * tui/tui-source.c (tui_source_window::do_scroll_vertical): Update
            all source windows, and maintain horizontal scroll status while
            doing so.
    
    gdb/testsuite/ChangeLog:
    
            * gdb.tui/basic.exp: Add more scrolling tests.
    
    Change-Id: I250114a3bc670040a6a759d41905776771b2f818

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 4c789119ce..425bafa9b2 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2020-01-09  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* tui/tui-source.c (tui_source_window::do_scroll_vertical): Update
+	all source windows, and maintain horizontal scroll status while
+	doing so.
+
 2020-01-09  Tom Tromey  <tom@tromey.com>
 
 	PR tui/18932:
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 16f3b5503d..536a964959 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2020-01-09  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.tui/basic.exp: Add more scrolling tests.
+
 2020-01-09  Tom Tromey  <tom@tromey.com>
 
 	PR tui/18932:
diff --git a/gdb/testsuite/gdb.tui/basic.exp b/gdb/testsuite/gdb.tui/basic.exp
index be822f8a91..34e60384c4 100644
--- a/gdb/testsuite/gdb.tui/basic.exp
+++ b/gdb/testsuite/gdb.tui/basic.exp
@@ -48,6 +48,33 @@ if {[Term::wait_for [string_to_regexp $line]] \
     fail "scroll up"
 }
 
+# Check the horizontal scrolling.  First confirm that 'main ()' is
+# where we expect it to be.  This relies on the current way we
+# position source code on the screen, which might change in the
+# future.  The important part of this test is detecting the left/right
+# scrolling, not which line main is actually on.
+set line_num 6
+set line [Term::get_line $line_num]
+gdb_assert {[regexp -- "19\[\\t \]+main \\(\\)" $line]} \
+    "check main is where we expect on the screen"
+set regexp "19\[\\t \]+ain \\(\\)"
+# Send a right arrow.
+send_gdb "\033\[C"
+if {[Term::wait_for $regexp]} {
+    pass "scroll right"
+} else {
+    fail "scroll right"
+}
+set line [Term::get_line $line_num]
+# Send a down arrow.
+send_gdb "\033\[B"
+if {[Term::wait_for $regexp] \
+	&& [Term::get_line [expr {$line_num - 1}]] == $line} {
+    pass "scroll down"
+} else {
+    fail "scroll down"
+}
+
 Term::check_box "source box" 0 0 80 15
 
 Term::command "layout asm"
diff --git a/gdb/tui/tui-source.c b/gdb/tui/tui-source.c
index 13f2dc7cfe..912eaa4544 100644
--- a/gdb/tui/tui-source.c
+++ b/gdb/tui/tui-source.c
@@ -158,7 +158,9 @@ tui_source_window::do_scroll_vertical (int num_to_scroll)
 	line_no = 1;
 
       cursal.line = line_no;
-      update_source_window (arch, cursal);
+      find_line_pc (cursal.symtab, cursal.line, &cursal.pc);
+      for (struct tui_source_window_base *win_info : tui_source_windows ())
+	win_info->update_source_window_as_is (arch, cursal);
     }
 }
 


             reply	other threads:[~2020-01-10  5:23 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-10  5:23 gdb-buildbot [this message]
2020-01-10  5:23 ` Failures on Ubuntu-Aarch64-native-gdbserver-m64, branch master gdb-buildbot
2020-01-10 11:19 ` Failures on Fedora-x86_64-cc-with-index, " gdb-buildbot
2020-01-10 12:12 ` Failures on Fedora-x86_64-m64, " gdb-buildbot
2020-01-10 12:18 ` Failures on Fedora-x86_64-m32, " gdb-buildbot
2020-01-10 12:23 ` Failures on Fedora-x86_64-native-extended-gdbserver-m32, " gdb-buildbot
2020-01-10 12:57 ` Failures on Fedora-x86_64-native-extended-gdbserver-m64, " gdb-buildbot
2020-01-10 13:29 ` Failures on Fedora-x86_64-native-gdbserver-m32, " gdb-buildbot
2020-01-10 13:44 ` Failures on Fedora-x86_64-native-gdbserver-m64, " gdb-buildbot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f5a7c406b1975cde626efed526960f2cf1bdaceb@gdb-build \
    --to=gdb-buildbot@sergiodj.net \
    --cc=gdb-testers@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).