gdb/
authorJan Kratochvil <jan.kratochvil@redhat.com>
Sat, 3 Mar 2012 14:21:04 +0000 (14:21 +0000)
committerJan Kratochvil <jan.kratochvil@redhat.com>
Sat, 3 Mar 2012 14:21:04 +0000 (14:21 +0000)
* breakpoint.c (set_condition_evaluation_mode): Set
CONDITION_EVALUATION_MODE unconditionally.

gdb/testsuite/
Implement testsuite workaround for PR breakpoints/13781.
* gdb.cp/mb-templates.exp: New loop with variable $workaround.
(set breakpoint condition-evaluation host): New conditional command.

gdb/ChangeLog
gdb/breakpoint.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.cp/mb-templates.exp

index 87b7bda..c74db5b 100644 (file)
@@ -1,3 +1,8 @@
+2012-03-03  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+       * breakpoint.c (set_condition_evaluation_mode): Set
+       CONDITION_EVALUATION_MODE unconditionally.
+
 2012-03-03  Yao Qi  <yao@codesourcery.com>
 
        * common/agent.c (agent_look_up_symbols): Add one parameter 'arg'.
index 3decd92..5388a4e 100644 (file)
@@ -761,6 +761,10 @@ set_condition_evaluation_mode (char *args, int from_tty,
   new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
   old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
 
+  /* Flip the switch.  Flip it even if OLD_MODE == NEW_MODE as one of the
+     settings was "auto".  */
+  condition_evaluation_mode = condition_evaluation_mode_1;
+
   /* Only update the mode if the user picked a different one.  */
   if (new_mode != old_mode)
     {
@@ -772,9 +776,6 @@ set_condition_evaluation_mode (char *args, int from_tty,
         "target" -> "host": Remove all the conditions from the target.
       */
 
-      /* Flip the switch.  */
-      condition_evaluation_mode = condition_evaluation_mode_1;
-
       if (new_mode == condition_evaluation_target)
        {
          /* Mark everything modified and synch conditions with the
index cc39a9a..9df06dd 100644 (file)
@@ -1,5 +1,11 @@
 2012-03-03  Jan Kratochvil  <jan.kratochvil@redhat.com>
 
+       Implement testsuite workaround for PR breakpoints/13781.
+       * gdb.cp/mb-templates.exp: New loop with variable $workaround.
+       (set breakpoint condition-evaluation host): New conditional command.
+
+2012-03-03  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
        Code cleanup.
        * gdb.cp/mb-templates.exp: New variables executable.  Use it for
        binfile.  use clean_restart.  Replace gdb_expect by gdb_test_multiple.
index d386c02..e909543 100644 (file)
@@ -38,24 +38,35 @@ if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {deb
      return -1
 }
 
-clean_restart ${executable}
+# If GDB crashes try it again workarounding PR breakpoints/13781.
 
-set bp_location [gdb_get_line_number "set breakpoint here"]
+foreach workaround [list "" " (workaround)"] {
+    clean_restart ${executable}
 
-# Set a breakpoint with multiple locations
-# and a condition.
+    if {${workaround} != ""} {
+       gdb_test_no_output "set breakpoint condition-evaluation host"
+    }
 
-gdb_test "break $srcfile:$bp_location if i==1" \
-    "Breakpoint.*at.*: $srcfile:$bp_location. \\(2 locations\\).*" \
-    "initial condition: set breakpoint"
+    set bp_location [gdb_get_line_number "set breakpoint here"]
 
-gdb_run_cmd
+    # Set a breakpoint with multiple locations
+    # and a condition.
 
-set test "initial condition: run to breakpoint"
-gdb_test_multiple "" $test {
-    -re "Breakpoint \[0-9\]+,.*foo<int> \\(i=1\\).*$gdb_prompt $" {
-       pass $test
-       break
+    gdb_test "break $srcfile:$bp_location if i==1" \
+       "Breakpoint.*at.*: $srcfile:$bp_location. \\(2 locations\\).*" \
+       "initial condition: set breakpoint$workaround"
+
+    gdb_run_cmd
+
+    if {${workaround} == "" && [is_remote target]} {
+       setup_kfail breakpoints/13781 "*-*-*"
+    }
+    set test "initial condition: run to breakpoint$workaround"
+    gdb_test_multiple "" $test {
+       -re "Breakpoint \[0-9\]+,.*foo<int> \\(i=1\\).*$gdb_prompt $" {
+           pass $test
+           break
+       }
     }
 }