Make gdb.mi/mi-dprintf.exp use $inferior_spawn_id
authorPedro Alves <palves@redhat.com>
Wed, 29 Jul 2015 10:09:45 +0000 (11:09 +0100)
committerPedro Alves <palves@redhat.com>
Wed, 29 Jul 2015 10:09:45 +0000 (11:09 +0100)
gdb/testsuite/ChangeLog:
2015-07-29  Pedro Alves  <palves@redhat.com>

* gdb.mi/mi-dprintf.exp (mi_expect_dprintf): New procedure,
factore out from mi_continue_dprintf.  For call-style dprintfs,
expect dprintf output out of $inferior_spawn_id.
(mi_continue_dprintf): Use mi_expect_dprintf.
* gdb.mi/mi-dprintf.c: Include "../lib/unbuffer_output.c".
(main): Call gdb_unbuffer_output.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.mi/mi-dprintf.exp

index 6eeb98037eba7a9ea3b47e1d8862e56b13a0fbd9..9b4bf6bc6c0b06ffe02136d9ab3f2cbae23cb29a 100644 (file)
@@ -1,3 +1,12 @@
+2015-07-29  Pedro Alves  <palves@redhat.com>
+
+       * gdb.mi/mi-dprintf.exp (mi_expect_dprintf): New procedure,
+       factore out from mi_continue_dprintf.  For call-style dprintfs,
+       expect dprintf output out of $inferior_spawn_id.
+       (mi_continue_dprintf): Use mi_expect_dprintf.
+       * gdb.mi/mi-dprintf.c: Include "../lib/unbuffer_output.c".
+       (main): Call gdb_unbuffer_output.
+
 2015-07-29  Pedro Alves  <palves@redhat.com>
 
        * lib/mi-support.exp (mi_inferior_spawn_id): Delete.
index ea198bdf904be2a8c12e047320fcc6379cf6131b..c2057244ed324f36759e64633bdb27b7da444c3c 100644 (file)
@@ -72,45 +72,47 @@ mi_gdb_test "[incr i]-break-info" \
 
 mi_gdb_test "-break-insert $bp_location1" ".*" "mi insert breakpoint bp_location1"
 
-proc mi_continue_dprintf {args} {
-    with_test_prefix $args {
-       global mi_gdb_prompt
+# Helper for mi_continue_dprintf.
+
+proc mi_expect_dprintf {args where msg} {
+    global mi_gdb_prompt
+    global inferior_spawn_id gdb_spawn_id
+
+    if { $args == "call" || $args == "fprintf" } {
+       set foobarbazqux "\"foobarbazqux\""
+       set sid $inferior_spawn_id
+    } else {
+       set foobarbazqux "\\\\\"foobarbazqux\\\\\""
+       set sid $gdb_spawn_id
+    }
 
-       if { $args == "call" || $args == "fprintf" } {
-           set foobarbazqux "\"foobarbazqux\""
-       } else {
-           set foobarbazqux "\\\\\"foobarbazqux\\\\\""
+    # Don't expect the prompt here to avoid a race with mi_expect_stop
+    # in case $inferior_spawn_id != $gdb_spawn_id.  Otherwise, in that
+    # case, we could see the gdb prompt before the inferior output.
+    gdb_expect {
+       -i $sid
+       -re ".*$foobarbazqux $where" {
+           pass $msg
        }
+       eof {
+           fail "$msg (eof)"
+       }
+       timeout {
+           fail "$msg (timeout)"
+       }
+    }
+    mi_expect_stop ".*" ".*" ".*" ".*" ".*" "" "$msg stop"
+}
 
-       mi_run_cmd
+proc mi_continue_dprintf {args} {
+    with_test_prefix $args {
        set msg "mi 1st dprintf"
-       gdb_expect {
-            -re ".*$foobarbazqux At foo entry.*arg=1234, g=1234" {
-               pass $msg
-           }
-           -re ".*$mi_gdb_prompt$" {
-               fail $msg
-           }
-            timeout {
-               fail $msg
-            }
-       }
-       mi_expect_stop ".*" ".*" ".*" ".*" ".*" "" "$msg stop"
+       mi_run_cmd
+       mi_expect_dprintf $args "At foo entry.*arg=1234, g=1234" $msg
 
        set msg "mi 2nd dprintf"
        mi_send_resuming_command "exec-continue" "$msg continue"
-       gdb_expect {
-            -re ".*$foobarbazqux At foo entry.*arg=1235, g=2222" {
-               pass $msg
-           }
-           -re ".*$mi_gdb_prompt$" {
-               fail $msg
-           }
-            timeout {
-               fail $msg
-            }
-       }
-       mi_expect_stop ".*" ".*" ".*" ".*" ".*" "" "$msg 2nd stop"
+       mi_expect_dprintf $args "At foo entry.*arg=1235, g=2222" $msg
     }
 }