From: Pedro Alves <palves@redhat.com>
To: Simon Marchi <simon.marchi@polymtl.ca>, gdb-patches@sourceware.org
Cc: philippe.waroquiers@skynet.be
Subject: Re: [PATCH] Make gdb.base/corefile.exp work on terminals with few rows
Date: Wed, 06 Feb 2019 18:42:00 -0000 [thread overview]
Message-ID: <12fe97cd-e3d9-56dd-fd88-f3c0fd7adae1@redhat.com> (raw)
In-Reply-To: <20190206034857.14608-1-simon.marchi@polymtl.ca>
On 02/06/2019 03:48 AM, Simon Marchi wrote:
> When creating a pty to spawn a subprocess (such as gdb), Expect
> copies the settings of its own controlling terminal, including the
> number of rows and columns. If you "make check" on a terminal with just
> a few rows (e.g. 4), GDB will paginate before reaching the initial
> prompt. In default_gdb_start, used by most tests, this is already
> handled: if we see the pagination prompt, we sent \n to continue.
>
> Philippe reported that gdb.base/corefile.exp didn't work in terminals
> with just a few rows. This test spawns GDB by hand, because it needs to
> check things before the initial prompt, which it couldn't do if it used
> default_gdb_start.
>
> In this case I think it's not safe to use the same technique as in
> default_gdb_start. Even if we could send a \n if we see a pagination
> prompt, we match some multiline regexes in there. So if a pagination
> slips in there, it might make the regexes not match and fail the test.
>
> It's also not possible to use -ex "set height 0" or -iex "set height 0",
> it is handled after the introduction text is shown.
>
> The simplest way I found to avoid showing the pagination completely is
> to set stty_init (documented in expect's man page) to initialize gdb's
> pty with a fixed number of rows.
Hmm, good idea. But, if you have a small terminal with just a few
columns (as opposed to rows), then the testsuite all breaks, AFAICT.
E.g., I just tried running gdb.base/break.exp with a small window and
the test hangs starting GDB.
But with:
--- c/gdb/testsuite/lib/gdb.exp
+++ w/gdb/testsuite/lib/gdb.exp
@@ -4752,6 +4752,9 @@ proc gdb_init { test_file_name } {
# tests.
setenv TERM "dumb"
+ global stty_init
+ set stty_init "rows 25 cols 80"
+
# Some tests (for example gdb.base/maint.exp) shell out from gdb to use
# grep. Clear GREP_OPTIONS to make the behavior predictable,
# especially having color output turned on can cause tests to fail.
... it passes. And so does gdb.base/corefile.exp.
Is there any reason we'd ever want GDB's terminal size to match
whatever the user's term size was? I'd think that sanitizing / forcing
the same sizes everywhere would just lead to more stable testing,
and thus be a good thing.
Thanks,
Pedro Alves
next prev parent reply other threads:[~2019-02-06 18:42 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-06 3:49 Simon Marchi
2019-02-06 18:42 ` Pedro Alves [this message]
2019-02-06 23:11 ` Simon Marchi
2019-02-07 13:26 ` Pedro Alves
2019-02-07 14:24 ` Simon Marchi
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=12fe97cd-e3d9-56dd-fd88-f3c0fd7adae1@redhat.com \
--to=palves@redhat.com \
--cc=gdb-patches@sourceware.org \
--cc=philippe.waroquiers@skynet.be \
--cc=simon.marchi@polymtl.ca \
/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