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] Make mi-break.exp always expect breakpoint commands output on the main UI


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

commit ef274d26b57336b3baa5bb0ae93b49178bc45631
Author: Pedro Alves <palves@redhat.com>
Date:   Tue Jun 21 01:11:56 2016 +0100

    Make mi-break.exp always expect breakpoint commands output on the main UI
    
    mi-break.exp regresses when tested with MI running on a secondary UI,
    with RUNTESTFLAGS="FORCE_SEPARATE_MI_TTY=1".
    
    The problem is simply that the test sets a breakpoint, and attaches
    "print" commands to the breakpoint.  Since breakpoint commands always
    run with the main UI as current UI, the breakpoint command's output
    goes to the main UI.  So we need to tweak the test to expect it there.
    
    gdb/testsuite/ChangeLog:
    2016-06-21  Pedro Alves  <palves@redhat.com>
    
    	* gdb.mi/mi-break.exp (test_breakpoint_commands): Always expect
    	breakpoint command's output on the main UI.
    	(test_break): New procedure, factored out from calls in the top
    	level.
    	(top level): Use foreach_with_prefix to test MI as main UI and as
    	separate UI.

Diff:
---
 gdb/testsuite/ChangeLog           |  9 +++++
 gdb/testsuite/gdb.mi/mi-break.exp | 69 +++++++++++++++++++++++++++------------
 2 files changed, 57 insertions(+), 21 deletions(-)

diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 7e1e9b0..ee27566 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,5 +1,14 @@
 2016-06-21  Pedro Alves  <palves@redhat.com>
 
+	* gdb.mi/mi-break.exp (test_breakpoint_commands): Always expect
+	breakpoint command's output on the main UI.
+	(test_break): New procedure, factored out from calls in the top
+	level.
+	(top level): Use foreach_with_prefix to test MI as main UI and as
+	separate UI.
+
+2016-06-21  Pedro Alves  <palves@redhat.com>
+
 	* gdb.mi/mi-watch.exp (test_watchpoint_creation_and_listing)
 	(test_awatch_creation_and_listing)
 	(test_rwatch_creation_and_listing, test_watchpoint_triggering):
diff --git a/gdb/testsuite/gdb.mi/mi-break.exp b/gdb/testsuite/gdb.mi/mi-break.exp
index 85f328d..00293d7 100644
--- a/gdb/testsuite/gdb.mi/mi-break.exp
+++ b/gdb/testsuite/gdb.mi/mi-break.exp
@@ -23,11 +23,6 @@
 load_lib mi-support.exp
 set MIFLAGS "-i=mi"
 
-gdb_exit
-if [mi_gdb_start] {
-    continue
-}
-
 standard_testfile basics.c
 
 if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
@@ -35,10 +30,6 @@ if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {deb
      return -1
 }
 
-mi_delete_breakpoints
-mi_gdb_reinitialize_dir $srcdir/$subdir
-mi_gdb_load ${binfile}
-
 # Locate line numbers in basics.c.
 set line_callee4_head  [gdb_get_line_number "callee4 ("]
 set line_callee4_body  [expr $line_callee4_head + 2]
@@ -292,9 +283,25 @@ proc test_breakpoint_commands {} {
 
     mi_send_resuming_command "exec-continue" "breakpoint commands: continue"
 
-    set test "intermediate stop and continue"
+
+    # The breakpoint command's output is always sent to the main UI,
+    # even when testing with MI running on a secondary UI.
+    global gdb_main_spawn_id
+
+    set test "intermediate stop and continue, bp commands"
     gdb_expect {
-        -re ".*\\\$1 = 0.*\\\$10 = 9.*\\*running" {
+	-i $gdb_main_spawn_id
+	-re ".*\\\$1 = 0.*\\\$10 = 9" {
+	    pass $test
+	}
+	timeout {
+	    fail $test
+	}
+    }
+
+    set test "intermediate stop and continue, mi running"
+    gdb_expect {
+        -re "\\*running" {
 	    pass $test
 	}
         timeout {
@@ -385,20 +392,40 @@ proc test_explicit_breakpoints {} {
 	".*Source filename requires function, label, or line offset.*"
 }
 
-test_tbreak_creation_and_listing
-test_rbreak_creation_and_listing
+proc test_break {mi_mode} {
+    global srcdir subdir binfile
+
+    mi_gdb_exit
+
+    if {$mi_mode == "separate"} {
+	set start_ops "separate-mi-tty"
+    } else {
+	set start_ops ""
+    }
+    if [mi_gdb_start $start_ops] {
+	return
+    }
+
+    mi_delete_breakpoints
+    mi_gdb_reinitialize_dir $srcdir/$subdir
+    mi_gdb_load ${binfile}
 
-test_ignore_count
+    test_tbreak_creation_and_listing
+    test_rbreak_creation_and_listing
 
-test_error
+    test_ignore_count
 
-test_disabled_creation
+    test_error
 
-test_breakpoint_commands
+    test_disabled_creation
 
-test_abreak_creation
+    test_breakpoint_commands
 
-test_explicit_breakpoints
+    test_abreak_creation
 
-mi_gdb_exit
-return 0
+    test_explicit_breakpoints
+}
+
+foreach_with_prefix mi-mode {"main" "separate"} {
+    test_break ${mi-mode}
+}


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