Allow board file to specify remotetimeout
Commit Message
Hi.
I was cross-testing from linux to windows7 with stdio gdbserver,
and ssh was taking longer to connect than the default remotetimeout
of 2 seconds.
This patch adds the ability to specify remotetimeout in the board file.
For reference sake, here's my board file.
---snip---
# To use this file:
# bash$ cd ${build_dir}/gdb
# bash$ make check RUNTESTFLAGS="--target_board=win7"
#
# gdbserver running over ssh.
set REMOTE_HOSTNAME win7
set REMOTE_USERNAME dje
set REMOTE_PORTNUM 22
set REMOTE_TMPDIR /tmp
load_board_description "remote-stdio-gdbserver"
# Path to the gdbserver executable.
unset_board_info gdb_server_prog
set_board_info gdb_server_prog "/usr/bin/gdbserver.exe"
# It takes a few seconds to establish the ssh session.
set_board_info gdb,remotetimeout 15
---snip---
2014-11-06 Doug Evans <xdje42@gmail.com>
* README: Document gdb,remotetimeout.
* lib/gdbserver-support.exp (gdb_target_cmd): Apply remotetimeout if
specified in board description.
* lib/mi-support.exp (mi_gdb_target_cmd): Ditto.
Comments
On 11/07/2014 01:01 AM, Doug Evans wrote:
> I was cross-testing from linux to windows7 with stdio gdbserver,
> and ssh was taking longer to connect than the default remotetimeout
> of 2 seconds.
>
> This patch adds the ability to specify remotetimeout in the board file.
>
> For reference sake, here's my board file.
Note you can already put
set GDBFLAGS "-l 15"
in the board file for this. See:
https://sourceware.org/gdb/wiki/TestingGDB#Running_GDB_with_a_larger_remote_serial_protocol_timeout
Is there an advantage to this method?
Thanks,
Pedro Alves
On Fri, Nov 7, 2014 at 2:21 AM, Pedro Alves <palves@redhat.com> wrote:
> On 11/07/2014 01:01 AM, Doug Evans wrote:
>
>> I was cross-testing from linux to windows7 with stdio gdbserver,
>> and ssh was taking longer to connect than the default remotetimeout
>> of 2 seconds.
>>
>> This patch adds the ability to specify remotetimeout in the board file.
>>
>> For reference sake, here's my board file.
>
> Note you can already put
>
> set GDBFLAGS "-l 15"
>
> in the board file for this. See:
>
> https://sourceware.org/gdb/wiki/TestingGDB#Running_GDB_with_a_larger_remote_serial_protocol_timeout
>
> Is there an advantage to this method?
Yeah, it's documented in testsuite/README so I'll find it next time. 1/2 :-)
I'd long since forgotten about the wiki page.
Having both places being reasonably large, and neither having a reference
to the other, is unfortunate.
[The README mentions the wiki, but without an explicit link
it's not that helpful.]
I'd be happy with gutting testsuite/README and just mentioning the wiki url.
Thoughts?
On 11/07/2014 03:25 PM, Doug Evans wrote:
> On Fri, Nov 7, 2014 at 2:21 AM, Pedro Alves <palves@redhat.com> wrote:
>> Is there an advantage to this method?
>
> Yeah, it's documented in testsuite/README so I'll find it next time. 1/2 :-)
>
:-)
> I'd long since forgotten about the wiki page.
> Having both places being reasonably large, and neither having a reference
> to the other, is unfortunate.
> [The README mentions the wiki, but without an explicit link
> it's not that helpful.]
>
> I'd be happy with gutting testsuite/README and just mentioning the wiki url.
> Thoughts?
I ( still [1] ) prefer having the testsuite/README file in the tree
documenting the variables that the testsuite supports, because
those are tied to the specific GDB version in the tree, while
the (whole) wiki doesn't really distinguish that. IMO, the
wiki serves best for "recipes" and tips.
It looks like testsuite/README doesn't document GDBFLAGS though.
How about we fix that, and use 'set GDBFLAGS "-l 15"' as the
example?
I think the "Writing Tests" section of README could/should be
moved to the wiki, though, e.g., to the GDBTestcaseCookbook page.
[1] https://sourceware.org/ml/gdb-patches/2013-09/msg00192.html
Thanks,
Pedro Alves
@@ -367,6 +367,10 @@ gdb,predefined_tsv
The predefined trace state variables the board has.
+gdb,remotetimeout
+
+ The value for gdb's "remotetimeout" parameter, for use with gdbserver.
+
Testsuite Organization
**********************
@@ -39,6 +39,8 @@
# After GDB starts you should check global $gdbserver_gdbport for the
# real port used. It is not useful if $gdbserver_reconnect_p was not set.
#
+# set_board_info gdb,remotetimeout
+# The value for gdb's "remotetimeout" parameter.
#
# gdb_target_cmd
@@ -47,6 +49,11 @@
proc gdb_target_cmd { targetname serialport } {
global gdb_prompt
+ if [target_info exists gdb,remotetimeout] {
+ set remotetimeout [target_info gdb,remotetimeout]
+ gdb_test_no_output "set remotetimeout $remotetimeout"
+ }
+
set serialport_re [string_to_regexp $serialport]
for {set i 1} {$i <= 3} {incr i} {
send_gdb "target $targetname $serialport\n"
@@ -335,6 +335,19 @@ proc mi_gdb_reinitialize_dir { subdir } {
proc mi_gdb_target_cmd { targetname serialport } {
global mi_gdb_prompt
+ if [target_info exists gdb,remotetimeout] {
+ set remotetimeout [target_info gdb,remotetimeout]
+ send_gdb "46-gdb-set remotetimeout $remotetimeout\n"
+ gdb_expect 10 {
+ -re ".*46-gdb-set remotetimeout $remotetimeout\r\n46\\\^done\r\n$mi_gdb_prompt$" {
+ verbose "Setting remotetimeout to $remotetimeout." 2
+ }
+ timeout {
+ warning "Couldn't set remotetimeout to $remotetimeout."
+ }
+ }
+ }
+
set serialport_re [string_to_regexp $serialport]
for {set i 1} {$i <= 3} {incr i} {
send_gdb "47-target-select $targetname $serialport\n"