When running test-case gdb.opt/solib-intra-step.exp with target board
unix/-m32 and gcc-10, I run into:
...
(gdb) step^M
__x86.get_pc_thunk.bx () at ../sysdeps/i386/crti.S:68^M
68 ../sysdeps/i386/crti.S: No such file or directory.^M
(gdb) step^M
shlib_second (dummy=0) at solib-intra-step-lib.c:23^M
23 abort (); /* second-hit */^M
(gdb) FAIL: gdb.opt/solib-intra-step.exp: second-hit
...
The problem is that the test-case expects to step past the retry line,
which is optional.
Fix this by removing the state tracking logic from the gdb_test_multiples. It
makes the test more difficult to understand, and doesn't specifically test for
faulty gdb behaviour.
Tested on x86_64-linux.
gdb/testsuite/ChangeLog:
2021-01-29 Tom de Vries <tdevries@suse.de>
* gdb.opt/solib-intra-step.exp: Remove state tracking logic.
+2021-01-29 Tom de Vries <tdevries@suse.de>
+
+ * gdb.opt/solib-intra-step.exp: Remove state tracking logic.
+
2021-01-28 Tom de Vries <tdevries@suse.de>
* gdb.arch/i386-gnu-cfi.exp: Capture the position of function gate
}
set test "first-hit"
-set state 0
gdb_test_multiple "step" $test {
-re -wrap " first-hit .*" {
- gdb_assert { $state != -1 } $test
+ pass $gdb_test_name
}
-re -wrap " first-retry .*" {
- if { $state != 0 } {
- set state -1
- } else {
- set state 1
- }
send_gdb "step\n"
exp_continue
}
-re -wrap "get_pc_thunk.*" {
- if { $state != 1 } {
- set state -1
- } else {
- set state 2
- }
send_gdb "step\n"
exp_continue
}
}
set test "second-hit"
-set state 0
gdb_test_multiple "step" $test {
-re -wrap " second-hit .*" {
- gdb_assert { $state != -1 } $test
+ pass $gdb_test_name
}
-re -wrap " second-retry .*" {
- if { $state != 0 } {
- set state -1
- } else {
- set state 1
- }
send_gdb "step\n"
exp_continue
}
-re -wrap "get_pc_thunk.*" {
- if { $state != 1 } {
- set state -1
- } else {
- set state 2
- }
send_gdb "step\n"
exp_continue
}