* 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.
This commit is contained in:
Jan Kratochvil
2012-03-03 14:21:04 +00:00
parent a06715f8dd
commit abf1152ad7
4 changed files with 39 additions and 16 deletions

View 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> 2012-03-03 Yao Qi <yao@codesourcery.com>
* common/agent.c (agent_look_up_symbols): Add one parameter 'arg'. * common/agent.c (agent_look_up_symbols): Add one parameter 'arg'.

View File

@ -761,6 +761,10 @@ set_condition_evaluation_mode (char *args, int from_tty,
new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1); new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
old_mode = translate_condition_evaluation_mode (condition_evaluation_mode); 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. */ /* Only update the mode if the user picked a different one. */
if (new_mode != old_mode) 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. "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) if (new_mode == condition_evaluation_target)
{ {
/* Mark everything modified and synch conditions with the /* Mark everything modified and synch conditions with the

View File

@ -1,3 +1,9 @@
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> 2012-03-03 Jan Kratochvil <jan.kratochvil@redhat.com>
Code cleanup. Code cleanup.

View File

@ -38,24 +38,35 @@ if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {deb
return -1 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 if {${workaround} != ""} {
# and a condition. gdb_test_no_output "set breakpoint condition-evaluation host"
}
gdb_test "break $srcfile:$bp_location if i==1" \ set bp_location [gdb_get_line_number "set breakpoint here"]
"Breakpoint.*at.*: $srcfile:$bp_location. \\(2 locations\\).*" \
"initial condition: set breakpoint"
gdb_run_cmd # Set a breakpoint with multiple locations
# and a condition.
set test "initial condition: run to breakpoint" gdb_test "break $srcfile:$bp_location if i==1" \
gdb_test_multiple "" $test { "Breakpoint.*at.*: $srcfile:$bp_location. \\(2 locations\\).*" \
-re "Breakpoint \[0-9\]+,.*foo<int> \\(i=1\\).*$gdb_prompt $" { "initial condition: set breakpoint$workaround"
pass $test
break 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
}
} }
} }