From: Pedro Alves <palves@redhat.com>
To: Simon Marchi <simon.marchi@ericsson.com>, gdb-patches@sourceware.org
Subject: [pushed] Fix gdb.server/solib-list.exp regression
Date: Fri, 08 Apr 2016 18:45:00 -0000 [thread overview]
Message-ID: <5707FC33.1010302@redhat.com> (raw)
In-Reply-To: <5707F2C7.3070909@ericsson.com>
On 04/08/2016 07:04 PM, Simon Marchi wrote:
> but it didn't work out of the box. I'll come back to it soon.
Hopefully it won't be something too hard.
> But in the mean time,
> I think you can push your patch, which makes it work for you locally.
Alright, pushed as below. Thanks again for the review, Simon.
From 096be756aa7f10f1c757e4dcc216bf0076a194ea Mon Sep 17 00:00:00 2001
From: Pedro Alves <palves@redhat.com>
Date: Thu, 7 Apr 2016 23:36:50 +0100
Subject: [PATCH] Fix gdb.server/solib-list.exp regression
Commit 7817ea46148d (Improve gdb_remote_download, remove gdb_download)
caused:
FAIL: gdb.server/solib-list.exp: non-stop 0: target extended-remote (timeout)
FAIL: gdb.server/solib-list.exp: non-stop 0: continue (the program is no longer running)
FAIL: gdb.server/solib-list.exp: non-stop 0: p libvar
FAIL: gdb.server/solib-list.exp: non-stop 1: target extended-remote (timeout)
FAIL: gdb.server/solib-list.exp: non-stop 1: continue (the program is no longer running)
FAIL: gdb.server/solib-list.exp: non-stop 1: p libvar
gdb.log shows:
system interpreter is: /lib64/ld-linux-x86-64.so.2
...
spawn ../gdbserver/gdbserver --once :2347 /home/pedro/brno/pedro/gdb/mygit/build/gdb/testsuite/outputs/gdb.server/solib-list/ld-linux-x86-64.so.2 /home/pedro/brno/pedro/gdb/mygit/build/gdb/testsuite/outputs/gdb.server/solib-list/solib-list
Process /home/pedro/brno/pedro/gdb/mygit/build/gdb/testsuite/outputs/gdb.server/solib-list/ld-linux-x86-64.so.2 created; pid = 18637
Cannot exec /home/pedro/brno/pedro/gdb/mygit/build/gdb/testsuite/outputs/gdb.server/solib-list/ld-linux-x86-64.so.2: No such file or directory.
...
The test copied the interpreter to the outputs directory, however
ld-linux-x86-64.so.2 is a relative symlink that when copied points
nowhere:
$ ls -l testsuite/outputs/gdb.server/solib-list/
total 52
-rwxrwxr-x. 1 pedro pedro 13450 Apr 7 10:52 gdb.log
-rw-rw-r--. 1 pedro pedro 1512 Apr 7 10:52 gdb.sum
lrwxrwxrwx. 1 pedro pedro 10 Apr 7 11:39 ld-linux-x86-64.so.2 -> ld-2.22.so
-rwxrwxr-x. 1 pedro pedro 9464 Apr 7 11:39 solib-list
-rw-rw-r--. 1 pedro pedro 3472 Apr 7 11:39 solib-list-lib.c.o
-rw-rw-r--. 1 pedro pedro 2760 Apr 7 11:39 solib-list.o
-rwxrwxr-x. 1 pedro pedro 9232 Apr 7 11:39 solib-list.so
The copying comes from gdbserver_spawn ->
gdbserver_download_current_prog -> gdb_remote_download.
There's actually no need to download the interpreter to the target -
it's part of the target system/environment. So fix this by making the
test just not use gdb_load (and gdb_file_cmd as consequence) at all,
and instead pass the interpreter filename to gdbserver as an argument.
gdb/testsuite/ChangeLog:
2016-04-08 Pedro Alves <palves@redhat.com>
* gdb.server/solib-list.exp: Don't use gdb_load. Instead pass the
interpreter filename as argument to gdbserver_spawn.
* lib/gdbserver-support.exp (gdbserver_download_current_prog):
Return empty if $last_loaded_file does not exist.
---
gdb/testsuite/ChangeLog | 7 +++++++
gdb/testsuite/gdb.server/solib-list.exp | 9 ++++++---
gdb/testsuite/lib/gdbserver-support.exp | 4 ++++
3 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 3c9f20c..2ecc1e0 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2016-04-08 Pedro Alves <palves@redhat.com>
+
+ * gdb.server/solib-list.exp: Don't use gdb_load. Instead pass the
+ interpreter filename as argument to gdbserver_spawn.
+ * lib/gdbserver-support.exp (gdbserver_download_current_prog):
+ Return empty if $last_loaded_file does not exist.
+
2016-04-08 Jan Kratochvil <jan.kratochvil@redhat.com>
Fix compatibility with gcc-4.8.5-4.el7.x86_64.
diff --git a/gdb/testsuite/gdb.server/solib-list.exp b/gdb/testsuite/gdb.server/solib-list.exp
index fcd6d25..9d5cdcc 100644
--- a/gdb/testsuite/gdb.server/solib-list.exp
+++ b/gdb/testsuite/gdb.server/solib-list.exp
@@ -57,7 +57,6 @@ foreach nonstop { 0 1 } { with_test_prefix "non-stop $nonstop" {
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
- gdb_load ${interp_system}
gdb_load_shlibs ${binfile}
gdb_load_shlibs ${binlibfile}
@@ -72,8 +71,12 @@ foreach nonstop { 0 1 } { with_test_prefix "non-stop $nonstop" {
# But GDB having symbols from the main executable it would try to use
# displaced-stepping buffer at unmapped that time address _start.
gdb_test "set displaced-stepping off"
-
- set res [gdbserver_spawn ${binfile}]
+
+ # Note we pass ${interp_system}, the program gdbserver spawns, as
+ # argument here, instead of using gdb_load, because we don't want
+ # to download the interpreter to the target (it's already there)
+ # or to the test output directory.
+ set res [gdbserver_spawn "${interp_system} ${binfile}"]
set gdbserver_protocol [lindex $res 0]
set gdbserver_gdbport [lindex $res 1]
diff --git a/gdb/testsuite/lib/gdbserver-support.exp b/gdb/testsuite/lib/gdbserver-support.exp
index 67a8333..951afe5 100644
--- a/gdb/testsuite/lib/gdbserver-support.exp
+++ b/gdb/testsuite/lib/gdbserver-support.exp
@@ -155,6 +155,10 @@ proc gdbserver_download_current_prog { } {
global gdbserver_server_exec
global last_loaded_file
+ if { ![info exists last_loaded_file] } {
+ return ""
+ }
+
set host_exec $last_loaded_file
# If we already downloaded a file to the target, see if we can reuse it.
--
2.5.5
next prev parent reply other threads:[~2016-04-08 18:45 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1460027557-20679-1-git-send-email-palves@redhat.com>
2016-04-07 20:33 ` [PATCH] " Simon Marchi
2016-04-07 23:07 ` Pedro Alves
2016-04-08 18:05 ` Simon Marchi
2016-04-08 18:45 ` Pedro Alves [this message]
2016-04-08 22:20 ` [pushed] " Simon Marchi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5707FC33.1010302@redhat.com \
--to=palves@redhat.com \
--cc=gdb-patches@sourceware.org \
--cc=simon.marchi@ericsson.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox