This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Fix testing gdb.rust/modules.exp against gdbserver


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=ea04e54ca8b935b01155c3d40381d879dd6ba683

commit ea04e54ca8b935b01155c3d40381d879dd6ba683
Author: Pedro Alves <palves@redhat.com>
Date:   Thu Nov 16 18:07:41 2017 +0000

    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.

Diff:
---
 gdb/testsuite/ChangeLog            |  5 +++++
 gdb/testsuite/gdb.rust/modules.exp | 18 ++++++++++--------
 2 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index a3dcd26..bfee9ec 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,5 +1,10 @@
 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.
+
+2017-11-16  Pedro Alves  <palves@redhat.com>
+
 	* gdb.server/reconnect-ctrl-c.c: New file.
 	* gdb.server/reconnect-ctrl-c.exp: New file.
 
diff --git a/gdb/testsuite/gdb.rust/modules.exp b/gdb/testsuite/gdb.rust/modules.exp
index a2a5804..eda981d 100644
--- a/gdb/testsuite/gdb.rust/modules.exp
+++ b/gdb/testsuite/gdb.rust/modules.exp
@@ -35,16 +35,18 @@ if {![runto ${srcfile}:$line]} {
 # https://github.com/rust-lang/rust/issues/33121
 # gdb_test "call f2()" "lambda f2"
 
-gdb_test "call f3()" "mod1::inner::innest::f3"
-gdb_test "call self::f2()" "mod1::inner::innest::f2"
-gdb_test "call self::super::f2()" "mod1::inner::f2"
-gdb_test "call super::f2()" "mod1::inner::f2"
-gdb_test "call self::super::super::f2()" "mod1::f2"
-gdb_test "call super::super::f2()" "mod1::f2"
-gdb_test "call ::f2()" "::f2"
+if ![target_info exists gdb,noinferiorio] {
+    gdb_test_stdio "call f3()" "mod1::inner::innest::f3"
+    gdb_test_stdio "call self::f2()" "mod1::inner::innest::f2"
+    gdb_test_stdio "call self::super::f2()" "mod1::inner::f2"
+    gdb_test_stdio "call super::f2()" "mod1::inner::f2"
+    gdb_test_stdio "call self::super::super::f2()" "mod1::f2"
+    gdb_test_stdio "call super::super::f2()" "mod1::f2"
+    gdb_test_stdio "call ::f2()" "::f2"
+    gdb_test_stdio "call extern modules::mod1::f2()" "mod1::f2"
+}
 gdb_test "call super::super::super::f2()" \
     "Too many super:: uses from 'modules::mod1::inner::innest'"
-gdb_test "call extern modules::mod1::f2()" "mod1::f2"
 
 gdb_test_sequence "ptype ::Generic::<::Generic<::Type> >" "" {
     "type = struct modules::Generic<modules::Generic<modules::Type>> \\("


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]