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:
Bruno Larsen 2022-07-20 16:44:37 -03:00
parent 9db78678c7
commit 8fa9bc6a03
2 changed files with 5 additions and 13 deletions

View File

@ -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

View File

@ -4,5 +4,6 @@ extern "C"
int
solib_main (int arg)
{
return arg*arg; /* HERE */
} /* STEP */
int ans = arg*arg; /* HERE */
return ans; /* STEP */
}