forked from Imagelibrary/binutils-gdb
With test-case gdb.server/stop-reply-no-thread-multi.exp and host board local-remote-host-notty.exp we occasionally run into a silent out, due to getting: ... (gdb) kill^M (gdb) The program is not being run.^M ... instead of the expected: ... (gdb) kill^M The program is not being run.^M (gdb) ... Likewise, we occasionally run into a nonsilent timeout: ... (gdb) disconnect^M (gdb) You can't do that when your target is `exec'^M FAIL: gdb.server/stop-reply-no-thread.exp: to_disable=Tthread: t_nonstop=on: \ disconnect (timeout) ... Typically, this results in the test-case taking more than two minutes to run. The problem can be reproduced using just: ... $ ssh -l $USER 127.0.0.1 gdb -q -ex kill ... Note that ssh by default uses -T which disables pseudo-tty allocation (as opposed to -t which forces pseudo-tty allocation): ... $ ssh -l $USER 127.0.0.1 -T tty not a tty $ ssh -l $USER 127.0.0.1 -t tty /dev/pts/5 Connection to 127.0.0.1 closed. ... and according to https://stackoverflow.com/a/63241102 the behaviour we're seeing is specific to using '-T'. The related host board local-remote-host.exp does use '-t', and the only difference between the two boards mentioned is whether editing is on or off. Fix this by: - moving the content of local-remote-host-notty.exp into local-remote-host.exp - consequently, extending the copyright years in local-remote-host.exp - including local-remote-host.exp in local-remote-host-notty.exp (making local-remote-host-notty.exp use '-t') - adding -iex "set editing off" to GDBFLAGS in local-remote-host-notty.exp This results in the test-case taking just 6 seconds to run. Tested on x86_64-linux. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29669
72 lines
2.2 KiB
Plaintext
72 lines
2.2 KiB
Plaintext
# Copyright 2012-2022 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/>.
|
|
|
|
# This file is a dejagnu "board file" and is used to run the testsuite
|
|
# against local host, in remote host mode.
|
|
#
|
|
# To use this file:
|
|
# bash$ cd ${build_dir}/gdb
|
|
# bash$ make check RUNTESTFLAGS="--host_board=local-remote-host"
|
|
|
|
# Like local-remote-host-notty, but with readline/editing enabled.
|
|
|
|
global GDB
|
|
set GDB [file join [pwd] "../gdb"]
|
|
|
|
set_board_info hostname 127.0.0.1
|
|
|
|
set_board_info username $env(USER)
|
|
|
|
# The ssh key should be correctly set up that you ssh to 127.0.0.1
|
|
# without having to type password.
|
|
set_board_info rsh_prog /usr/bin/ssh
|
|
set_board_info rcp_prog /usr/bin/scp
|
|
set_board_info file_transfer "rsh"
|
|
|
|
proc ${board}_file { dest op args } {
|
|
if { $op == "delete" } {
|
|
return 0
|
|
}
|
|
return [eval [list standard_file $dest $op] $args]
|
|
}
|
|
|
|
proc ${board}_download { board src dest } {
|
|
|
|
# If file name is a relative, convert it to absolute, otherwise file can't
|
|
# be found on host, because the current directory usually is /home/$USER.
|
|
# This also bypasses the real download to the host.
|
|
if { [file pathtype $src] == "relative" } {
|
|
return [file join [pwd] $src]
|
|
} else {
|
|
return $src
|
|
}
|
|
}
|
|
|
|
# Like standard_spawn, but force pseudo-tty allocation, with 'ssh -t'.
|
|
|
|
proc ${board}_spawn { board cmd } {
|
|
global board_info
|
|
|
|
set remote [board_info $board hostname]
|
|
set username [board_info $board username]
|
|
set RSH [board_info $board rsh_prog]
|
|
|
|
spawn $RSH -t -l $username $remote $cmd
|
|
set board_info($board,fileid) $spawn_id
|
|
return $spawn_id
|
|
}
|
|
|
|
set GDBFLAGS "${GDBFLAGS} -iex \"set style enabled off\""
|