This is the mail archive of the gdb-patches@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]

RE: [patch] MI ignores conditions for pending breakpoints


 
> I think as long as it exercises the bug -- fails before the patch and
> passes after -- and is reasonably clean, then it is fine.
> 
> Coding in the name of the library, etc, is also fine; there are some
> tools in the test suite to make this a bit less fragile, namely using
> variables in place of file names and using gdb_get_line_number.

I updated to a better test based on what you said.  The test now
makes sure the breakpoint is skipped when it should and hits
when it should.

Ok?

Thanks!


2012-07-25  Marc Khouzam  <marc.khouzam@ericsson.com>

	* gdb.mi/mi-pending.c: New method to set a second pending
	breakpoint.
	* gdb.mi/mi-pending.exp: Set a pending breakpoint with a
	condition.

### Eclipse Workspace Patch 1.0
#P src
Index: gdb/testsuite/gdb.mi/mi-pending.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-pending.exp,v
retrieving revision 1.16
diff -u -r1.16 mi-pending.exp
--- gdb/testsuite/gdb.mi/mi-pending.exp 10 Jul 2012 15:32:51 -0000      1.16
+++ gdb/testsuite/gdb.mi/mi-pending.exp 25 Jul 2012 17:39:48 -0000
@@ -24,8 +24,9 @@
     return 0
 }
 
-standard_testfile mi-pending.c mi-pendshr.c
-set lib_sl [standard_output_file mi-pendshr.sl]
+set libfile "mi-pendshr"
+standard_testfile mi-pending.c $libfile.c
+set lib_sl [standard_output_file $libfile.sl]
 
 set lib_opts  debug
 set exec_opts [list debug shlib=$lib_sl]
@@ -48,12 +49,29 @@
 mi_gdb_load ${binfile}
 mi_load_shlibs $lib_sl
 
-# Set pending breakpoint via MI
+# Set pending breakpoint via MI.
 mi_gdb_test "-break-insert -f pendfunc1" \
     ".*\\^done,bkpt=\{number=\"1\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"<PENDING>\",pending=\"pendfunc1\",times=\"0\",original-location=\"pendfunc1\"\}"\
     "MI pending breakpoint on pendfunc1"
 
+# Set pending breakpoint with a condition via MI.
+mi_gdb_test "-break-insert -f -c x==4 ${libfile}.c:pendfunc2" \
+    ".*\\^done,bkpt=\{number=\"2\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"<PENDING>\",pending=\"${libfile}.c:pendfunc2\",cond=\"x==4\",times=\"0\",original-location=\"${libfile}.c:pendfunc2\"\}"\
+    "MI pending breakpoint on ${libfile}.c:pendfunc2 if x==4"
+
 mi_run_cmd
 mi_expect_stop "breakpoint-hit" "pendfunc1" ".*" ".*" ".*" \
     { "" "disp=\"keep\"" } \
     "Run till MI pending breakpoint on pendfunc1"
+
+mi_send_resuming_command "exec-continue" "continuing execution to skip conditional bp"
+# We should not stop on the conditional breakpoint yet, but we stop on the original bp. 
+mi_expect_stop "breakpoint-hit" "pendfunc1" ".*" ".*" ".*" \
+    { "" "disp=\"keep\"" } \
+    "Run till MI pending breakpoint on pendfunc1 a second time"
+
+mi_send_resuming_command "exec-continue" "continuing execution to conditional bp"
+# Now we should stop on the conditional breakpoint.
+mi_expect_stop "breakpoint-hit" "pendfunc2" ".*" ".*" ".*" \
+    { "" "disp=\"keep\"" } \
+    "Run till MI pending breakpoint on pendfunc2 with x==4"
Index: gdb/testsuite/gdb.mi/mi-pendshr.c
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-pendshr.c,v
retrieving revision 1.7
diff -u -r1.7 mi-pendshr.c
--- gdb/testsuite/gdb.mi/mi-pendshr.c   4 Jan 2012 08:17:54 -0000       1.7
+++ gdb/testsuite/gdb.mi/mi-pendshr.c   25 Jul 2012 17:39:48 -0000
@@ -23,7 +23,13 @@
   printf ("in pendfunc1, x is %d\n", x);
 }
 
+void pendfunc2 (int x)
+{
+  printf ("in pendfunc2, x is %d\n", x);
+}
+
 void pendfunc (int x)
 {
   pendfunc1 (x);
+  pendfunc2 (x);
 }


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