mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-02-11 13:02:10 +08:00
gdb/testsuite: Update gdb.base/so-impl-ld.exp
gdb.base/so-impl-ld.exp was setup assuming that the compiler would add epilogue information and that GDB would stop in the } line. This would make clang tests fail like so: step^M solib_main (arg=10000) at ../../../common/git-repos/binutils-gdb/gdb/testsuite/gdb.base/solib1.c:7^M 7|__ return arg*arg;|__|___/* HERE */^M (gdb) PASS: gdb.base/so-impl-ld.exp: step into solib call next^M main () at ../../../common/git-repos/binutils-gdb/gdb/testsuite/gdb.base/so-impl-ld.c:22^M 22|_ return 0;^M (gdb) FAIL: gdb.base/so-impl-ld.exp: step in solib call next^M 0x00007ffff7cef560 in __libc_start_call_main () from /lib64/libc.so.6^M (gdb) FAIL: gdb.base/so-impl-ld.exp: step out of solib call This patch changes it so solib_main has 2 lines where GDB can stop regardless of compiler choices, and updates the exp file to generically deal with unknown number of steps until leaving that function.
This commit is contained in:
parent
9db78678c7
commit
8fa9bc6a03
@ -56,21 +56,12 @@ gdb_test "step" "solib_main .arg=10000. at.*${libfile}.c:${decimal}.* HERE .*" \
|
||||
|
||||
# Verify that we can step within the shlib call.
|
||||
#
|
||||
gdb_test "next" "${decimal}\[ \t\]*\}.* STEP .*" "step in solib call"
|
||||
gdb_test "next" "${decimal}\[ \t\]*return ans;.* STEP .*" "step in solib call"
|
||||
|
||||
# Verify that we can step out of the shlib call, and back out into
|
||||
# the caller.
|
||||
#
|
||||
gdb_test_multiple "next" "step out of solib call" {
|
||||
-re "0x\[0-9a-f\]*\[ \t\]*9\[ \t\]*.*$gdb_prompt $" {
|
||||
gdb_test "next" \
|
||||
"main .. at.*so-impl-ld.c:22.*" \
|
||||
"step out of solib call"
|
||||
}
|
||||
-re "main .. at.*so-impl-ld.c:22.*$gdb_prompt $" {
|
||||
pass "step out of solib call"
|
||||
}
|
||||
}
|
||||
gdb_step_until ".*main .. at.*return 0;.*" "step out of solib call"
|
||||
|
||||
gdb_exit
|
||||
return 0
|
||||
|
@ -4,5 +4,6 @@ extern "C"
|
||||
int
|
||||
solib_main (int arg)
|
||||
{
|
||||
return arg*arg; /* HERE */
|
||||
} /* STEP */
|
||||
int ans = arg*arg; /* HERE */
|
||||
return ans; /* STEP */
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user