Two fixes for test suite's terminal

Exactly which escape sequences are emitted by gdb in TUI mode are
determined largely by the curses implementation.  Testing my latest
(as yet unsubmitted) series to refactor the TUI showed a couple of
failures that I tracked to the test suite's terminal implementation.

In particular, the CSI "@" sequence was not implemented; and the CSI
"X" sequence was implemented incorrectly.

This patch fixes both of these problems.  Tested on x86-64 Fedora 28.

gdb/testsuite/ChangeLog
2019-07-29  Tom Tromey  <tom@tromey.com>

	* lib/tuiterm.exp (Term::_csi_@): New proc.
	(Term::_csi_X): Don't move cursor.
This commit is contained in:
Tom Tromey
2019-07-28 15:02:35 -06:00
parent bc4268a5d9
commit 3d2357068b
2 changed files with 31 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2019-07-29 Tom Tromey <tom@tromey.com>
* lib/tuiterm.exp (Term::_csi_@): New proc.
(Term::_csi_X): Don't move cursor.
2019-07-29 Philippe Waroquiers <philippe.waroquiers@skynet.be>
* gdb.base/options.exp: Update backtrace - completion to

View File

@ -104,6 +104,21 @@ namespace eval Term {
set _cur_x 0
}
# Make room for characters.
proc _csi_@ {args} {
set n [_default [lindex $args 0] 1]
variable _cur_x
variable _cur_y
variable _chars
set in_x $_cur_x
set out_x [expr {$_cur_x + $n}]
for {set i 0} {$i < $n} {incr i} {
set _chars($out_x,$_cur_y) $_chars($in_x,$_cur_y)
incr in_x
incr out_x
}
}
# Cursor Up.
proc _csi_A {args} {
variable _cur_y
@ -238,7 +253,17 @@ namespace eval Term {
# Erase chars.
proc _csi_X {args} {
set n [_default [lindex $args 0] 1]
_insert [string repeat " " $n]
# Erase characters but don't move cursor.
variable _cur_x
variable _cur_y
variable _attrs
variable _chars
set lattr [array get _attrs]
set x $_cur_x
for {set i 0} {$i < $n} {incr i} {
set _chars($x,$_cur_y) [list " " $lattr]
incr x
}
}
# Repeat.