diff --git a/gdb/testsuite/gdb.base/sss-bp-on-user-bp.c b/gdb/testsuite/gdb.base/sss-bp-on-user-bp.c index ff820517ff..edc2e8c1d2 100644 --- a/gdb/testsuite/gdb.base/sss-bp-on-user-bp.c +++ b/gdb/testsuite/gdb.base/sss-bp-on-user-bp.c @@ -21,10 +21,10 @@ int main (void) { - /* Assume writes to integers compile to a single instruction. */ volatile int i = 0; i = 1; /* set foo break here */ - i = 2; /* set bar break here */ + i = 2; + return 0; } diff --git a/gdb/testsuite/gdb.base/sss-bp-on-user-bp.exp b/gdb/testsuite/gdb.base/sss-bp-on-user-bp.exp index 2a12ad6f6f..0b39fc1bbd 100644 --- a/gdb/testsuite/gdb.base/sss-bp-on-user-bp.exp +++ b/gdb/testsuite/gdb.base/sss-bp-on-user-bp.exp @@ -32,7 +32,21 @@ if ![runto_main] then { gdb_breakpoint [gdb_get_line_number "set foo break here"] gdb_continue_to_breakpoint "first breakpoint" ".* set foo break here .*" -gdb_breakpoint [gdb_get_line_number "set bar break here"] +# Get the address of the next instruction and set a breakpoint there. +set next_insn_addr "" +set test "disassemble main" +gdb_test_multiple $test $test { + -re ".*=> $hex <\\+$decimal>:\[^\r\n\]+\r\n ($hex) .*$gdb_prompt $" { + set next_insn_addr $expect_out(1,string) + pass $test + } +} + +if { $next_insn_addr == "" } { + return -1 +} + +gdb_test "b *$next_insn_addr" "Breakpoint .*" # So that GDB doesn't try to remove the regular breakpoint when the # step finishes. @@ -43,9 +57,9 @@ gdb_test_no_output "set breakpoint always-inserted on" # remove it. But, a regular breakpoint is planted there already, and # with always-inserted on, should remain planted when the step # finishes. -gdb_test "si" "Breakpoint .* bar break .*" +gdb_test "si" "Breakpoint .*" # If the breakpoint is still correctly inserted, then this jump should # re-trigger it. Otherwise, GDB will lose control and the program # will exit. See PR breakpoints/17000. -gdb_test "jump *\$pc" "Breakpoint .* bar break .*" +gdb_test "jump *\$pc" "Breakpoint .*"