This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[review] [gdb/testsuite] Fix solib-list.exp test-case for exec with debug-info
- From: "Tom de Vries (Code Review)" <gerrit at gnutoolchain-gerrit dot osci dot io>
- To: gdb-patches at sourceware dot org
- Date: Mon, 3 Feb 2020 04:33:56 -0500
- Subject: [review] [gdb/testsuite] Fix solib-list.exp test-case for exec with debug-info
- Auto-submitted: auto-generated
- References: <gerrit.1580722436000.Ic134eb0b8c72d4a25f6076e811da1b53ddaa4213@gnutoolchain-gerrit.osci.io>
- Reply-to: tdevries at suse dot de, gdb-patches at sourceware dot org
Change URL: https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/761
......................................................................
[gdb/testsuite] Fix solib-list.exp test-case for exec with debug-info
Since commit a2fedca99c "Implement 'set/show exec-file-mismatch'.", I see the
following regression on openSUSE Leap 15.1:
...
FAIL: gdb.server/solib-list.exp: non-stop 0: target remote (got interactive prompt)
FAIL: gdb.server/solib-list.exp: non-stop 1: target remote (got interactive prompt)
...
The first FAIL in more detail:
...
(gdb) PASS: gdb.server/solib-list.exp: non-stop 0: file binfile
target remote localhost:2346
Remote debugging using localhost:2346
warning: Mismatch between current exec-file /data/gdb_versions/devel/build/\
gdb/testsuite/outputs/gdb.server/solib-list/solib-list
and automatically determined exec-file /lib64/ld-2.26.so
exec-file-mismatch handling is currently "ask"
Load new symbol table from "/lib64/ld-2.26.so"? (y or n) n
warning: loading /lib64/ld-2.26.so Not confirmed.
Reading /lib64/ld-linux-x86-64.so.2 from remote target...
warning: File transfers from remote targets can be slow. \
Use "set sysroot" to access files locally instead.
Reading /lib64/ld-linux-x86-64.so.2 from remote target...
Reading symbols from target:/lib64/ld-linux-x86-64.so.2...
Reading /lib64/ld-2.26.so-2.26-lp151.18.7.x86_64.debug from remote target...
Reading /lib64/.debug/ld-2.26.so-2.26-lp151.18.7.x86_64.debug from remote target...
Reading /data/gdb_versions/devel/install/lib64/debug//lib64/\
ld-2.26.so-2.26-lp151.18.7.x86_64.debug from remote target...
Reading /data/gdb_versions/devel/install/lib64/debug/lib64/\
/ld-2.26.so-2.26-lp151.18.7.x86_64.debug from remote target...
Reading target:/data/gdb_versions/devel/install/lib64/debug/lib64/\
/ld-2.26.so-2.26-lp151.18.7.x86_64.debug from remote target...
(No debugging symbols found in target:/lib64/ld-linux-x86-64.so.2)
0x00007ffff7dd7ea0 in ?? ()
(gdb) FAIL: gdb.server/solib-list.exp: non-stop 0: target remote (got \
interactive prompt)
...
The commit introduces the "Load new symbol table from" question, and
gdb_test_multiple defaults to answering "no" and reporting the
"got interactive prompt" FAIL.
This FAIL is not seen on f.i. debian 10.2. The difference originates from the
fact that the solib-list executable has debug-info in the openSUSE case, while
it doesn't in the debian case.
We can prevent the failure on openSUSE by stripping the executable from debug-info:
...
+ exec strip --strip-debug ${binfile}
...
[ And likewise, we should be able to reproduce the same failure on debian by
compiling the executable with debug-info. TBC. ]
[ The difference in behaviour may be a bug in the exec-file-mismatch. TBC. ]
It seems prudent to handle the question in the test-case, which is what this
patch does, and what fixes the FAILs on openSUSE.
[ Additionally, we may want to force generation of debug-info for the executable
to make sure all distros behave the same. Alternatively, we can achieve the
same by stripping the debug-info instead. ]
Tested on x86_64-linux.
Tested on x86_64-linux with gdbserver part of the patch introducing the
test-case reverted to ensure that this still FAILs.
gdb/testsuite/ChangeLog:
2020-02-02 Tom de Vries <tdevries@suse.de>
PR testsuite/25475
* gdb.server/solib-list.exp: Handle
'Load new symbol table from "/lib64/ld-2.26.so"? (y or n)'.
Change-Id: Ic134eb0b8c72d4a25f6076e811da1b53ddaa4213
---
M gdb/testsuite/gdb.server/solib-list.exp
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/gdb/testsuite/gdb.server/solib-list.exp b/gdb/testsuite/gdb.server/solib-list.exp
index 5471734..6f077c6 100644
--- a/gdb/testsuite/gdb.server/solib-list.exp
+++ b/gdb/testsuite/gdb.server/solib-list.exp
@@ -92,10 +92,23 @@
{(Are you sure you want to change the file|Load new symbol table from ".*")\? \(y or n\) } "y"
set test "target $gdbserver_protocol"
+ set ok 0
gdb_test_multiple "target $gdbserver_protocol $gdbserver_gdbport" $test {
- -re "Remote debugging using .*\r\n$gdb_prompt " {
+ -re "Remote debugging using" {
+ set ok 1
+ exp_continue
+ }
+ -re {.*Load new symbol table from ".*"\? \(y or n\) } {
+ send_gdb "y\n" answer
+ exp_continue
+ }
+ -re ".*\r\n$gdb_prompt " {
# Do not anchor end, there may be more output in non-stop mode.
- pass $test
+ if ($ok) {
+ pass $test
+ } else {
+ fail $test
+ }
}
}
--
Gerrit-Project: binutils-gdb
Gerrit-Branch: master
Gerrit-Change-Id: Ic134eb0b8c72d4a25f6076e811da1b53ddaa4213
Gerrit-Change-Number: 761
Gerrit-PatchSet: 1
Gerrit-Owner: Tom de Vries <tdevries@suse.de>
Gerrit-MessageType: newchange