public inbox for gdb-prs@sourceware.org help / color / mirror / Atom feed
* [Bug tui/28800] New: non-ascii character cannot display correctly in tui-mode's extended-prompt @ 2022-01-20 16:03 wuzy01 at qq dot com 2022-01-20 16:11 ` [Bug tui/28800] " schwab@linux-m68k.org ` (4 more replies) 0 siblings, 5 replies; 6+ messages in thread From: wuzy01 at qq dot com @ 2022-01-20 16:03 UTC (permalink / raw) To: gdb-prs https://sourceware.org/bugzilla/show_bug.cgi?id=28800 Bug ID: 28800 Summary: non-ascii character cannot display correctly in tui-mode's extended-prompt Product: gdb Version: 11.1 Status: UNCONFIRMED Severity: normal Priority: P2 Component: tui Assignee: unassigned at sourceware dot org Reporter: wuzy01 at qq dot com Target Milestone: --- ## Reproduce Procedures ``` gdb -tui main ``` Then `set extended-prompt \w \f:\t\n❯ ` After inputting each character, the prompt string will be messed. it looks non-ascii character cannot display correctly in tui-mode. OS: 5.15.11 -- You are receiving this mail because: You are on the CC list for the bug. ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug tui/28800] non-ascii character cannot display correctly in tui-mode's extended-prompt 2022-01-20 16:03 [Bug tui/28800] New: non-ascii character cannot display correctly in tui-mode's extended-prompt wuzy01 at qq dot com @ 2022-01-20 16:11 ` schwab@linux-m68k.org 2022-01-27 12:26 ` aburgess at redhat dot com ` (3 subsequent siblings) 4 siblings, 0 replies; 6+ messages in thread From: schwab@linux-m68k.org @ 2022-01-20 16:11 UTC (permalink / raw) To: gdb-prs https://sourceware.org/bugzilla/show_bug.cgi?id=28800 --- Comment #1 from Andreas Schwab <schwab@linux-m68k.org> --- (gdb) set extended-prompt \w \f:\t\n❯ Python Exception <type 'exceptions.UnicodeEncodeError'>: 'ascii' codec can't enc ode character u'\u276f' in position 10: ordinal not in range(128) -- You are receiving this mail because: You are on the CC list for the bug. ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug tui/28800] non-ascii character cannot display correctly in tui-mode's extended-prompt 2022-01-20 16:03 [Bug tui/28800] New: non-ascii character cannot display correctly in tui-mode's extended-prompt wuzy01 at qq dot com 2022-01-20 16:11 ` [Bug tui/28800] " schwab@linux-m68k.org @ 2022-01-27 12:26 ` aburgess at redhat dot com 2023-05-24 15:40 ` vries at gcc dot gnu.org ` (2 subsequent siblings) 4 siblings, 0 replies; 6+ messages in thread From: aburgess at redhat dot com @ 2022-01-27 12:26 UTC (permalink / raw) To: gdb-prs https://sourceware.org/bugzilla/show_bug.cgi?id=28800 Andrew Burgess <aburgess at redhat dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Status|UNCONFIRMED |NEW Last reconfirmed| |2022-01-27 CC| |aburgess at redhat dot com --- Comment #2 from Andrew Burgess <aburgess at redhat dot com> --- Andreas, This is a slightly different issue you are seeing. I'm guessing you have gdb.prompt_hook set. This ends up calling gdbpy_before_prompt_hook in python.c. If we assume Python 3 for a moment, then in this function we convert the prompt to a unicode object, assuming UTF-8 encoding. This unicode object is then passed to the users python code. If the user returns the same prompt unchanged, or even some other utf-8 encoded prompt string, we then convert that string back to bytes using the host_charset. >From the error message you see, it would appear your hostchar set is maybe 'ascii'? I'm guessing it's certainly not utf-8. You could try: 'set host-charset UTF8' and see if the problem is resolved. The asymmetry in our use of different unicode encodings seems like a bad thing to me ... I wonder if we should just fix on one particular scheme, maybe utf-8 for some of the cases like this? However, we should probably spin this conversation into a separate bug as this is different to the original unicode within tui bug. -- You are receiving this mail because: You are on the CC list for the bug. ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug tui/28800] non-ascii character cannot display correctly in tui-mode's extended-prompt 2022-01-20 16:03 [Bug tui/28800] New: non-ascii character cannot display correctly in tui-mode's extended-prompt wuzy01 at qq dot com 2022-01-20 16:11 ` [Bug tui/28800] " schwab@linux-m68k.org 2022-01-27 12:26 ` aburgess at redhat dot com @ 2023-05-24 15:40 ` vries at gcc dot gnu.org 2023-05-24 17:56 ` vries at gcc dot gnu.org 2023-05-26 13:26 ` vries at gcc dot gnu.org 4 siblings, 0 replies; 6+ messages in thread From: vries at gcc dot gnu.org @ 2023-05-24 15:40 UTC (permalink / raw) To: gdb-prs https://sourceware.org/bugzilla/show_bug.cgi?id=28800 Tom de Vries <vries at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |vries at gcc dot gnu.org --- Comment #3 from Tom de Vries <vries at gcc dot gnu.org> --- The prompt is printed by tui_puts_internal, which outputs every byte in the string individually. As demonstrator patch, by making tui_puts_internal behave more like tui_puts, that is, output entire strings: ... diff --git a/gdb/tui/tui-io.c b/gdb/tui/tui-io.c index a1eadcd937d..5cc26f02174 100644 --- a/gdb/tui/tui-io.c +++ b/gdb/tui/tui-io.c @@ -521,8 +521,23 @@ tui_puts_internal (WINDOW *w, const char *string, int *height) int prev_col = 0; bool saw_nl = false; - while ((c = *string++) != 0) + while (true) { + const char *next = strpbrk (string, "\n\1\2\033\t"); + + /* Print the plain text prefix. */ + size_t n_chars = next == nullptr ? strlen (string) : next - string; + if (n_chars > 0) + waddnstr (w, string, n_chars); + + /* We finished. */ + if (next == nullptr) + break; + + c = *next; + if (c == 0) + break; + if (c == '\n') saw_nl = true; @@ -530,6 +545,7 @@ tui_puts_internal (WINDOW *w, const char *string, int *height) { /* Ignore these, they are readline escape-marking sequences. */ + ++next; } else { @@ -538,10 +554,12 @@ tui_puts_internal (WINDOW *w, const char *string, int *height) size_t bytes_read = apply_ansi_escape (w, string - 1); if (bytes_read > 0) { - string = string + bytes_read - 1; + next = next + bytes_read - 1; continue; } } + else + next++; do_tui_putc (w, c); if (height != nullptr) @@ -552,6 +570,8 @@ tui_puts_internal (WINDOW *w, const char *string, int *height) prev_col = col; } } + + string = next; } if (TUI_CMD_WIN != nullptr && w == TUI_CMD_WIN->handle.get ()) update_cmdwin_start_line (); ... I can see this that the behaviour is now correct: ... └────────────────────────────────────────────────────────────────┘ None No process In: ?? PC: ?? /data/vries/gdb <no frame>:<no attribute num on current thread> ❯ ... I'm not sure yet if this is a proper fix, I suspect that'll involve accumulating using mbrtowc or some such. -- You are receiving this mail because: You are on the CC list for the bug. ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug tui/28800] non-ascii character cannot display correctly in tui-mode's extended-prompt 2022-01-20 16:03 [Bug tui/28800] New: non-ascii character cannot display correctly in tui-mode's extended-prompt wuzy01 at qq dot com ` (2 preceding siblings ...) 2023-05-24 15:40 ` vries at gcc dot gnu.org @ 2023-05-24 17:56 ` vries at gcc dot gnu.org 2023-05-26 13:26 ` vries at gcc dot gnu.org 4 siblings, 0 replies; 6+ messages in thread From: vries at gcc dot gnu.org @ 2023-05-24 17:56 UTC (permalink / raw) To: gdb-prs https://sourceware.org/bugzilla/show_bug.cgi?id=28800 --- Comment #4 from Tom de Vries <vries at gcc dot gnu.org> --- Created attachment 14907 --> https://sourceware.org/bugzilla/attachment.cgi?id=14907&action=edit Tentative patch -- You are receiving this mail because: You are on the CC list for the bug. ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug tui/28800] non-ascii character cannot display correctly in tui-mode's extended-prompt 2022-01-20 16:03 [Bug tui/28800] New: non-ascii character cannot display correctly in tui-mode's extended-prompt wuzy01 at qq dot com ` (3 preceding siblings ...) 2023-05-24 17:56 ` vries at gcc dot gnu.org @ 2023-05-26 13:26 ` vries at gcc dot gnu.org 4 siblings, 0 replies; 6+ messages in thread From: vries at gcc dot gnu.org @ 2023-05-26 13:26 UTC (permalink / raw) To: gdb-prs https://sourceware.org/bugzilla/show_bug.cgi?id=28800 Tom de Vries <vries at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |UNCONFIRMED Ever confirmed|1 |0 --- Comment #5 from Tom de Vries <vries at gcc dot gnu.org> --- Submitted patch: https://sourceware.org/pipermail/gdb-patches/2023-May/199880.html -- You are receiving this mail because: You are on the CC list for the bug. ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2023-05-26 13:26 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-01-20 16:03 [Bug tui/28800] New: non-ascii character cannot display correctly in tui-mode's extended-prompt wuzy01 at qq dot com 2022-01-20 16:11 ` [Bug tui/28800] " schwab@linux-m68k.org 2022-01-27 12:26 ` aburgess at redhat dot com 2023-05-24 15:40 ` vries at gcc dot gnu.org 2023-05-24 17:56 ` vries at gcc dot gnu.org 2023-05-26 13:26 ` vries at gcc dot gnu.org
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).