aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.opt
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2021-01-26 10:00:39 +0100
committerTom de Vries <tdevries@suse.de>2021-01-26 10:00:39 +0100
commitd0021af39c41d8f76e596f9c923cd41955fc050b (patch)
tree65f837aed990f039ce6bea24a76cdffccb2e384d /gdb/testsuite/gdb.opt
parent01a01e0ab319db4b2e2a8d5cfc14269df558ff7d (diff)
downloadgdb-d0021af39c41d8f76e596f9c923cd41955fc050b.zip
gdb-d0021af39c41d8f76e596f9c923cd41955fc050b.tar.gz
gdb-d0021af39c41d8f76e596f9c923cd41955fc050b.tar.bz2
[gdb/testsuite] Fix gdb.opt/solib-intra-step.exp with -m32
When running test-case gdb.opt/solib-intra-step.exp with target board unix/-m32, we run into: ... (gdb) step^M __x86.get_pc_thunk.bx () at ../sysdeps/i386/crti.S:66^M 66 ../sysdeps/i386/crti.S: No such file or directory.^M (gdb) FAIL: gdb.opt/solib-intra-step.exp: first-hit (optimized) ... The thunk is a helper function for PIC, and given that we have line info for it, we step into. Fix this by allowing the step into the thunk, and stepping out of it. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2021-01-26 Tom de Vries <tdevries@suse.de> * gdb.opt/solib-intra-step.exp: Handle stepping into thunk.
Diffstat (limited to 'gdb/testsuite/gdb.opt')
-rw-r--r--gdb/testsuite/gdb.opt/solib-intra-step.exp55
1 files changed, 38 insertions, 17 deletions
diff --git a/gdb/testsuite/gdb.opt/solib-intra-step.exp b/gdb/testsuite/gdb.opt/solib-intra-step.exp
index 14b34ea..ad19895 100644
--- a/gdb/testsuite/gdb.opt/solib-intra-step.exp
+++ b/gdb/testsuite/gdb.opt/solib-intra-step.exp
@@ -48,33 +48,54 @@ if ![runto_main] then {
}
set test "first-hit"
+set state 0
gdb_test_multiple "step" $test {
- -re " first-hit .*\r\n$gdb_prompt $" {
- pass $test
+ -re -wrap " first-hit .*" {
+ gdb_assert { $state != -1 } $test
}
- -re " first-retry .*\r\n$gdb_prompt $" {
- gdb_test "step" " first-hit .*" "first-hit (optimized)"
+ -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 " second-hit .*\r\n$gdb_prompt $" {
- pass $test
+ -re -wrap " second-hit .*" {
+ gdb_assert { $state != -1 } $test
}
- -re " first-retry .*\r\n$gdb_prompt $" {
- set test "second-hit (optimized 1)"
- gdb_test_multiple "step" $test {
- -re " second-hit .*\r\n$gdb_prompt $" {
- pass $test
- }
- -re " first-hit .*\r\n$gdb_prompt $" {
- gdb_test "step" " second-hit .*" "second-hit (optimized 2)"
- }
+ -re -wrap " second-retry .*" {
+ if { $state != 0 } {
+ set state -1
+ } else {
+ set state 1
}
+ send_gdb "step\n"
+ exp_continue
}
- -re " second-retry .*\r\n$gdb_prompt $" {
- gdb_test "step" " second-hit .*" "second-hit (optimized 3)"
+ -re -wrap "get_pc_thunk.*" {
+ if { $state != 1 } {
+ set state -1
+ } else {
+ set state 2
+ }
+ send_gdb "step\n"
+ exp_continue
}
}