public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Andrew Burgess <aburgess@redhat.com>
To: gdb-patches@sourceware.org
Subject: Re: [PATCH 02/15] gdb/testsuite: update gdb.tui/tui-disasm-long-lines.exp
Date: Wed, 25 Jan 2023 11:29:42 +0000	[thread overview]
Message-ID: <87mt66x36h.fsf@redhat.com> (raw)
In-Reply-To: <c6ac71235a5b8a5b2e30fb0c491b7af6b2b7b04b.1673000632.git.aburgess@redhat.com>

Andrew Burgess <aburgess@redhat.com> writes:

> Following on from the previous commit, in this commit I am updating
> the test script gdb.tui/tui-disasm-long-lines.exp to take account of
> the changes in commit:
>
>   commit 9162a27c5f5828240b53379d735679e2a69a9f41
>   Date:   Tue Nov 13 11:59:03 2018 -0700
>
>       Change gdb test suite's TERM setting
>
> In the above commit the TERM environment variable was changed to be
> 'dumb' by default, which means that tests, that previously activated
> tui mode, no longer do unless TERM is set to 'ansi'.
>
> As the gdb.tui/tui-disasm-long-lines.exp script didn't do this, the
> test stopped working.  As the expect patterns in this script were
> pretty generic no tests actually started failing, and we never
> noticed.
>
> In this commit I update the script to use Term::clean_restart, which
> correctly sets TERM to 'ansi'.  I've also added a check that the asm
> box does appear on the screen, which should indicate that tui mode has
> correctly activated.
>
> However, I also notice that GDB doesn't appear to fully work
> correctly.  The test should display the disassembly for the test
> program, but it doesn't.
>
> The test is trying to disassemble some code that (deliberately) uses a
> very long symbol name, this eventually results in GDB entering
> tui_source_window_base::show_source_content and trying to allocate an
> ncurses pad in order to hold the current page of disassembler output.
>
> Unfortunately, due to the very long line, the call to newpad fails,
> meaning that tui_source_window_base::m_pad is nullptr.  Luckily non of
> the following calls appear to crash when passed a nullptr, however,
> all the output that is written to the pad is lost, which is why we
> don't see any assembly code written to the screen.
>
> As the test history indicates that the script was originally checking
> for a crash in GDB when the long identifier was encountered, I think
> there is value in just leaving the test as it is for now, I'll see if
> I can come up with a solution to the long line problem in a later
> commit.

I've gone ahead and pushed this patch.  The final version that I pushed
is included below.

Thanks,
Andrew

---

commit 843a1a4f735e77147710b307db29a1b5f4e1c707
Author: Andrew Burgess <aburgess@redhat.com>
Date:   Tue Dec 20 16:25:33 2022 +0000

    gdb/testsuite: update gdb.tui/tui-disasm-long-lines.exp
    
    Following on from the previous commit, in this commit I am updating
    the test script gdb.tui/tui-disasm-long-lines.exp to take account of
    the changes in commit:
    
      commit 9162a27c5f5828240b53379d735679e2a69a9f41
      Date:   Tue Nov 13 11:59:03 2018 -0700
    
          Change gdb test suite's TERM setting
    
    In the above commit the TERM environment variable was changed to be
    'dumb' by default, which means that tests, that previously activated
    tui mode, no longer do unless TERM is set to 'ansi'.
    
    As the gdb.tui/tui-disasm-long-lines.exp script didn't do this, the
    test stopped working.  As the expect patterns in this script were
    pretty generic no tests actually started failing, and we never
    noticed.
    
    In this commit I update the script to use Term::clean_restart, which
    correctly sets TERM to 'ansi'.  I've also added a check that the asm
    box does appear on the screen, which should indicate that tui mode has
    correctly activated.
    
    However, I also notice that GDB doesn't appear to fully work
    correctly.  The test should display the disassembly for the test
    program, but it doesn't.
    
    The test is trying to disassemble some code that (deliberately) uses a
    very long symbol name, this eventually results in GDB entering
    tui_source_window_base::show_source_content and trying to allocate an
    ncurses pad in order to hold the current page of disassembler output.
    
    Unfortunately, due to the very long line, the call to newpad fails,
    meaning that tui_source_window_base::m_pad is nullptr.  Luckily non of
    the following calls appear to crash when passed a nullptr, however,
    all the output that is written to the pad is lost, which is why we
    don't see any assembly code written to the screen.
    
    As the test history indicates that the script was originally checking
    for a crash in GDB when the long identifier was encountered, I think
    there is value in just leaving the test as it is for now, I have a fix
    for the issue of the newpad call failing, which I'll post in a follow
    up commit later.

diff --git a/gdb/testsuite/gdb.tui/tui-disasm-long-lines.exp b/gdb/testsuite/gdb.tui/tui-disasm-long-lines.exp
index 7e3cff3950b..ae19f2e69cb 100644
--- a/gdb/testsuite/gdb.tui/tui-disasm-long-lines.exp
+++ b/gdb/testsuite/gdb.tui/tui-disasm-long-lines.exp
@@ -16,6 +16,10 @@
 # Test that the logic for displaying the TUI disassembly window
 # handles very long lines.
 
+require allow_tui_tests
+
+tuiterm_env
+
 standard_testfile
 
 set ccopts {debug quiet}
@@ -31,13 +35,16 @@ if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "$binfile" \
     }
 }
 
-clean_restart "$binfile"
-
-if {![allow_tui_tests]} {
-    # TUI support is disabled.  Check for error message.
-    gdb_test "layout asm" "Undefined command: \"layout\".  Try \"help\"."
+Term::clean_restart 24 80 $binfile
+if {![Term::prepare_for_tui]} {
+    unsupported "TUI not supported"
     return
 }
 
-# Just check the command does not cause gdb to crash.
-gdb_test "layout asm"
+# Just check the command does not cause gdb to crash.  It is worth
+# noting that the asm window does infact fail to correctly display the
+# disassembler output at this point, but initially we are just
+# checking that GDB doesn't crash, fixing the asm display will come
+# later.
+Term::command_no_prompt_prefix "layout asm"
+Term::check_box "asm box" 0 0 80 15


  reply	other threads:[~2023-01-25 11:29 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-06 10:25 [PATCH 00/15] Mixed bag of TUI tests and fixes Andrew Burgess
2023-01-06 10:25 ` [PATCH 01/15] gdb/testsuite: extend gdb.tui/tui-layout.exp test script Andrew Burgess
2023-01-25 11:29   ` Andrew Burgess
2023-01-06 10:25 ` [PATCH 02/15] gdb/testsuite: update gdb.tui/tui-disasm-long-lines.exp Andrew Burgess
2023-01-25 11:29   ` Andrew Burgess [this message]
2023-01-06 10:25 ` [PATCH 03/15] gdb/testsuite: update gdb.tui/tui-nl-filtered-output.exp Andrew Burgess
2023-01-25 11:30   ` Andrew Burgess
2023-01-06 10:25 ` [PATCH 04/15] gdb/testsuite/tui: more testing of the 'focus' command Andrew Burgess
2023-01-25 11:32   ` Andrew Burgess
2023-01-06 10:25 ` [PATCH 05/15] gdb/tui: convert if/error to an assert Andrew Burgess
2023-01-25 11:33   ` Andrew Burgess
2023-01-06 10:25 ` [PATCH 06/15] gdb/tui: better filtering of tab completion results for focus command Andrew Burgess
2023-01-25 11:33   ` Andrew Burgess
2023-01-06 10:25 ` [PATCH 07/15] gdb/testsuite: fix line feed scrolling in tuiterm.exp Andrew Burgess
2023-01-06 10:25 ` [PATCH 08/15] gdb/tui: improve errors from tui focus command Andrew Burgess
2023-01-06 10:25 ` [PATCH 09/15] gdb/tui: disable tui mode when an assert triggers Andrew Burgess
2023-01-06 10:25 ` [PATCH 10/15] gdb/tui: make m_horizontal_offset private Andrew Burgess
2023-01-06 10:25 ` [PATCH 11/15] gdb/tui: rewrite of tui_source_window_base to handle very long lines Andrew Burgess
2023-01-06 10:25 ` [PATCH 12/15] gdb/tui: avoid extra refresh_window on horizontal scroll Andrew Burgess
2023-01-06 10:25 ` [PATCH 13/15] gdb/tui: avoid extra refresh_window on vertical scroll Andrew Burgess
2023-01-06 10:25 ` [PATCH 14/15] gdb/tui: more debug output Andrew Burgess
2023-01-06 10:25 ` [PATCH 15/15] gdb/tui: make use of a scoped_restore Andrew Burgess
2023-01-25 12:01   ` Andrew Burgess
2023-01-25 12:08 ` [PATCHv2 0/8] Mixed bag of TUI tests and fixes Andrew Burgess
2023-01-25 12:08   ` [PATCHv2 1/8] gdb/testsuite: fix line feed scrolling in tuiterm.exp Andrew Burgess
2023-01-25 19:46     ` Tom Tromey
2023-01-25 12:08   ` [PATCHv2 2/8] gdb/tui: improve errors from tui focus command Andrew Burgess
2023-01-25 12:08   ` [PATCHv2 3/8] gdb/tui: disable tui mode when an assert triggers Andrew Burgess
2023-01-25 12:08   ` [PATCHv2 4/8] gdb/tui: make m_horizontal_offset private Andrew Burgess
2023-01-25 12:08   ` [PATCHv2 5/8] gdb/tui: rewrite of tui_source_window_base to handle very long lines Andrew Burgess
2023-01-25 12:08   ` [PATCHv2 6/8] gdb/tui: avoid extra refresh_window on horizontal scroll Andrew Burgess
2023-01-25 20:05     ` Tom Tromey
2023-01-25 12:08   ` [PATCHv2 7/8] gdb/tui: avoid extra refresh_window on vertical scroll Andrew Burgess
2023-01-25 12:08   ` [PATCHv2 8/8] gdb/tui: more debug output Andrew Burgess
2023-01-25 20:07   ` [PATCHv2 0/8] Mixed bag of TUI tests and fixes Tom Tromey
2023-01-27 16:31     ` Andrew Burgess

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=87mt66x36h.fsf@redhat.com \
    --to=aburgess@redhat.com \
    --cc=gdb-patches@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).