public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] [gdb/tui] Fix secondary prompt
@ 2023-07-14 12:47 Tom de Vries
  2023-07-18 11:35 ` Alexandra Petlanova Hajkova
  0 siblings, 1 reply; 3+ messages in thread
From: Tom de Vries @ 2023-07-14 12:47 UTC (permalink / raw)
  To: gdb-patches; +Cc: Tom Tromey

With CLI, a session defining a command looks like:
...
(gdb) define foo
Type commands for definition of "foo".
End with a line saying just "end".
>bar
>end
(gdb)
...

With TUI however, we get the same secondary prompts, and type the same, but
are left with:
...
(gdb) define foo
Type commands for definition of "foo".
End with a line saying just "end".
(gdb)
...

Fix this by calling tui_inject_newline_into_command_window in
gdb_readline_wrapper_line, as is done in tui_command_line_handler.

Tested on x86_64-linux.

PR tui/30636
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30636
---
 gdb/testsuite/gdb.tui/secondary-prompt.exp | 38 ++++++++++++++++++++++
 gdb/top.c                                  |  6 ++++
 2 files changed, 44 insertions(+)
 create mode 100644 gdb/testsuite/gdb.tui/secondary-prompt.exp

diff --git a/gdb/testsuite/gdb.tui/secondary-prompt.exp b/gdb/testsuite/gdb.tui/secondary-prompt.exp
new file mode 100644
index 00000000000..99fedaa3e47
--- /dev/null
+++ b/gdb/testsuite/gdb.tui/secondary-prompt.exp
@@ -0,0 +1,38 @@
+# Copyright 2023 Free Software Foundation, Inc.
+
+# 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 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# 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, see <http://www.gnu.org/licenses/>.
+
+require allow_tui_tests
+
+tuiterm_env
+
+Term::clean_restart 24 80
+
+if {![Term::enter_tui]} {
+    unsupported "TUI not supported"
+    return
+}
+
+# Define a macro.
+send_gdb "define foo\n"
+send_gdb "bar\n"
+send_gdb "end\n"
+
+# Wait for the last secondary prompt to appear, followed by the gdb prompt.
+Term::wait_for ">end"
+
+# Regression test for PR tui/30636.  Make sure the secondary prompts are not
+# overwritten.
+Term::check_region_contents "secondary prompt not overwritten" 0 19 80 2 \
+    "^>bar *\r\n>end *$"
diff --git a/gdb/top.c b/gdb/top.c
index 90ddc5f5ea7..2322e55f1db 100644
--- a/gdb/top.c
+++ b/gdb/top.c
@@ -77,6 +77,7 @@
 
 #if defined(TUI)
 # include "tui/tui.h"
+# include "tui/tui-io.h"
 #endif
 
 #ifndef O_NOCTTY
@@ -958,6 +959,11 @@ gdb_readline_wrapper_line (gdb::unique_xmalloc_ptr<char> &&line)
   saved_after_char_processing_hook = after_char_processing_hook;
   after_char_processing_hook = NULL;
 
+#if defined(TUI)
+  if (tui_active)
+    tui_inject_newline_into_command_window ();
+#endif
+
   /* Prevent parts of the prompt from being redisplayed if annotations
      are enabled, and readline's state getting out of sync.  We'll
      reinstall the callback handler, which puts the terminal in raw

base-commit: 9d9f26d8b1a15561af02370f15be0af0d56ac5fa
-- 
2.35.3


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] [gdb/tui] Fix secondary prompt
  2023-07-14 12:47 [PATCH] [gdb/tui] Fix secondary prompt Tom de Vries
@ 2023-07-18 11:35 ` Alexandra Petlanova Hajkova
  2023-07-26 11:34   ` Tom de Vries
  0 siblings, 1 reply; 3+ messages in thread
From: Alexandra Petlanova Hajkova @ 2023-07-18 11:35 UTC (permalink / raw)
  To: Tom de Vries; +Cc: gdb-patches, Tom Tromey

[-- Attachment #1: Type: text/plain, Size: 3613 bytes --]

On Fri, Jul 14, 2023 at 2:47 PM Tom de Vries via Gdb-patches <
gdb-patches@sourceware.org> wrote:

> With CLI, a session defining a command looks like:
> ...
> (gdb) define foo
> Type commands for definition of "foo".
> End with a line saying just "end".
> >bar
> >end
> (gdb)
> ...
>
> With TUI however, we get the same secondary prompts, and type the same, but
> are left with:
> ...
> (gdb) define foo
> Type commands for definition of "foo".
> End with a line saying just "end".
> (gdb)
> ...
>
> Fix this by calling tui_inject_newline_into_command_window in
> gdb_readline_wrapper_line, as is done in tui_command_line_handler.
>
> Tested on x86_64-linux.
>
> PR tui/30636
> Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30636
> ---
>  gdb/testsuite/gdb.tui/secondary-prompt.exp | 38 ++++++++++++++++++++++
>  gdb/top.c                                  |  6 ++++
>  2 files changed, 44 insertions(+)
>  create mode 100644 gdb/testsuite/gdb.tui/secondary-prompt.exp
>
> diff --git a/gdb/testsuite/gdb.tui/secondary-prompt.exp
> b/gdb/testsuite/gdb.tui/secondary-prompt.exp
> new file mode 100644
> index 00000000000..99fedaa3e47
> --- /dev/null
> +++ b/gdb/testsuite/gdb.tui/secondary-prompt.exp
> @@ -0,0 +1,38 @@
> +# Copyright 2023 Free Software Foundation, Inc.
> +
> +# 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 3 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +# 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, see <http://www.gnu.org/licenses/>.
> +
> +require allow_tui_tests
> +
> +tuiterm_env
> +
> +Term::clean_restart 24 80
> +
> +if {![Term::enter_tui]} {
> +    unsupported "TUI not supported"
> +    return
> +}
> +
> +# Define a macro.
> +send_gdb "define foo\n"
> +send_gdb "bar\n"
> +send_gdb "end\n"
> +
> +# Wait for the last secondary prompt to appear, followed by the gdb
> prompt.
> +Term::wait_for ">end"
> +
> +# Regression test for PR tui/30636.  Make sure the secondary prompts are
> not
> +# overwritten.
> +Term::check_region_contents "secondary prompt not overwritten" 0 19 80 2 \
> +    "^>bar *\r\n>end *$"
> diff --git a/gdb/top.c b/gdb/top.c
> index 90ddc5f5ea7..2322e55f1db 100644
> --- a/gdb/top.c
> +++ b/gdb/top.c
> @@ -77,6 +77,7 @@
>
>  #if defined(TUI)
>  # include "tui/tui.h"
> +# include "tui/tui-io.h"
>  #endif
>
>  #ifndef O_NOCTTY
> @@ -958,6 +959,11 @@ gdb_readline_wrapper_line
> (gdb::unique_xmalloc_ptr<char> &&line)
>    saved_after_char_processing_hook = after_char_processing_hook;
>    after_char_processing_hook = NULL;
>
> +#if defined(TUI)
> +  if (tui_active)
> +    tui_inject_newline_into_command_window ();
> +#endif
> +
>    /* Prevent parts of the prompt from being redisplayed if annotations
>       are enabled, and readline's state getting out of sync.  We'll
>       reinstall the callback handler, which puts the terminal in raw
>
> base-commit: 9d9f26d8b1a15561af02370f15be0af0d56ac5fa
> --
> 2.35.3
>

I can confirm this change causes no regressions and
the gdb.tui/secondary-prompt.exp test passes for ppc64le Fedora Rawhide.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] [gdb/tui] Fix secondary prompt
  2023-07-18 11:35 ` Alexandra Petlanova Hajkova
@ 2023-07-26 11:34   ` Tom de Vries
  0 siblings, 0 replies; 3+ messages in thread
From: Tom de Vries @ 2023-07-26 11:34 UTC (permalink / raw)
  To: Alexandra Petlanova Hajkova; +Cc: gdb-patches, Tom Tromey

On 7/18/23 13:35, Alexandra Petlanova Hajkova wrote:
> I can confirm this change causes no regressions and 
> the gdb.tui/secondary-prompt.exp test passes for ppc64le Fedora Rawhide.

Thanks for testing this.

I've just committed, and forgotten to add the Tested-By tag, sorry about 
that.

Thanks,
- Tom

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2023-07-26 11:35 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-07-14 12:47 [PATCH] [gdb/tui] Fix secondary prompt Tom de Vries
2023-07-18 11:35 ` Alexandra Petlanova Hajkova
2023-07-26 11:34   ` Tom de Vries

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).