Fix testing gdb.rust/modules.exp against gdbserver
authorPedro Alves <palves@redhat.com>
Thu, 16 Nov 2017 18:07:41 +0000 (18:07 +0000)
committerPedro Alves <palves@redhat.com>
Thu, 16 Nov 2017 18:07:41 +0000 (18:07 +0000)
commitea04e54ca8b935b01155c3d40381d879dd6ba683
tree9752de5669dffa3a89b53a36039f4c6dc2b64aae
parentd723696126beb185dc1f8f3196be7cb29948148d
Fix testing gdb.rust/modules.exp against gdbserver

Currently several tests in gdb.rust/modules.exp fail with
 --target_board=native-gdbserver:

 Running src/gdb/testsuite/gdb.rust/modules.exp ...
 FAIL: gdb.rust/modules.exp: call f3()
 FAIL: gdb.rust/modules.exp: call self::f2()
 FAIL: gdb.rust/modules.exp: call self::super::f2()
 FAIL: gdb.rust/modules.exp: call super::f2()
 FAIL: gdb.rust/modules.exp: call self::super::super::f2()
 FAIL: gdb.rust/modules.exp: call super::super::f2()
 FAIL: gdb.rust/modules.exp: call ::f2()
 FAIL: gdb.rust/modules.exp: call extern modules::mod1::f2()

This is because these tests rely on matching inferior output.
However, when testing with gdbserver, inferior output goes to a
separate terminal instead of to gdb's terminal, and so gdb_test won't
cut it, as that is only reading from gdb's pty/gdb_spawn_id:

 (gdb) call f3()
 (gdb) FAIL: gdb.rust/modules.exp: call f3()
 call self::f2()
 (gdb) FAIL: gdb.rust/modules.exp: call self::f2()

Fix this by using gdb_test_stdio instead, which handles output coming
out of gdbserver's pty.

Also, skip the tests if the target/board doesn't support inferior I/O
at all.

gdb/ChangeLog:
2017-11-16  Pedro Alves  <palves@redhat.com>

* gdb.rust/modules.exp: Skip tests that rely on inferior I/O if
gdb,noinferiorio is set, and use gdb_test_stdio otherwise.
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.rust/modules.exp