public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Gary Benson <gbenson@redhat.com>
To: gdb-patches@sourceware.org
Subject: [PATCH 7/7] Access executable from remote system when first inferior appears
Date: Wed, 01 Apr 2015 11:39:00 -0000	[thread overview]
Message-ID: <1427887341-31819-8-git-send-email-gbenson@redhat.com> (raw)
In-Reply-To: <1427887341-31819-1-git-send-email-gbenson@redhat.com>

This commit modifies remote_add_inferior to take an extra argument
try_open_exec.  If this is nonzero, remote_add_inferior will attempt
to open this inferior's executable as the main executable if no main
executable is open already.  Callers are updated appropriately.

One testcase required updating as a result of this commit.  The test
checked that GDB's "info files" command does not crash if no main
executable is open, and relied on GDB's inability to access the main
executable over the remote protocol.  The test was updated to inhibit
this new behavior.

gdb/ChangeLog:

	* remote.c (remote_add_inferior): New argument try_open_exec.
	If nonzero, attempt to open the inferior's executable file as
	the main executable if no main executable is open already.
	All callers updated.

gdb/testsuite/ChangeLog:

	* gdb.server/server-exec-info.exp: Inhibit GDB from accessing
	the main executable over the remote protocol.
---
 gdb/ChangeLog                                 |    7 +++++++
 gdb/remote.c                                  |   18 +++++++++++++-----
 gdb/testsuite/ChangeLog                       |    5 +++++
 gdb/testsuite/gdb.server/server-exec-info.exp |    1 +
 4 files changed, 26 insertions(+), 5 deletions(-)

diff --git a/gdb/remote.c b/gdb/remote.c
index a307e68..642bde1 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -1516,10 +1516,13 @@ remote_query_attached (int pid)
    inferior.  If ATTACHED is 1, then we had just attached to this
    inferior.  If it is 0, then we just created this inferior.  If it
    is -1, then try querying the remote stub to find out if it had
-   attached to the inferior or not.  */
+   attached to the inferior or not.  If TRY_OPEN_EXEC is true then
+   attempt to open this inferior's executable as the main executable
+   if no main executable is open already.  */
 
 static struct inferior *
-remote_add_inferior (int fake_pid_p, int pid, int attached)
+remote_add_inferior (int fake_pid_p, int pid, int attached,
+		     int try_open_exec)
 {
   struct inferior *inf;
 
@@ -1553,6 +1556,11 @@ remote_add_inferior (int fake_pid_p, int pid, int attached)
   inf->attach_flag = attached;
   inf->fake_pid_p = fake_pid_p;
 
+  /* If no main executable is currently open then attempt to
+     open the file that was executed to create this inferior.  */
+  if (try_open_exec && !fake_pid_p && get_exec_file (0) == NULL)
+    exec_file_locate_attach (pid, 1);
+
   return inf;
 }
 
@@ -1643,7 +1651,7 @@ remote_notice_new_inferior (ptid_t currthread, int running)
 	  int fake_pid_p = !remote_multi_process_p (rs);
 
 	  inf = remote_add_inferior (fake_pid_p,
-				     ptid_get_pid (currthread), -1);
+				     ptid_get_pid (currthread), -1, 1);
 	}
 
       /* This is really a new thread.  Add it.  */
@@ -3413,7 +3421,7 @@ add_current_inferior_and_thread (char *wait_status)
       fake_pid_p = 1;
     }
 
-  remote_add_inferior (fake_pid_p, ptid_get_pid (inferior_ptid), -1);
+  remote_add_inferior (fake_pid_p, ptid_get_pid (inferior_ptid), -1, 1);
 
   /* Add the main thread.  */
   add_thread_silent (inferior_ptid);
@@ -4539,7 +4547,7 @@ extended_remote_attach (struct target_ops *target, const char *args,
 	     target_pid_to_str (pid_to_ptid (pid)));
     }
 
-  set_current_inferior (remote_add_inferior (0, pid, 1));
+  set_current_inferior (remote_add_inferior (0, pid, 1, 0));
 
   inferior_ptid = pid_to_ptid (pid);
 
diff --git a/gdb/testsuite/gdb.server/server-exec-info.exp b/gdb/testsuite/gdb.server/server-exec-info.exp
index ca5f5ca..c12554a 100644
--- a/gdb/testsuite/gdb.server/server-exec-info.exp
+++ b/gdb/testsuite/gdb.server/server-exec-info.exp
@@ -27,6 +27,7 @@ if [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile}] {
     return -1
 }
 
+gdb_test_no_output "set remote pid-to-exec-file-packet off"
 gdb_test "file" ".*" "file" \
 	 {Discard symbol table from `.*'\? \(y or n\) } "y"
 gdbserver_run ""
-- 
1.7.1

  parent reply	other threads:[~2015-04-01 11:39 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-01 11:22 [PATCH 0/7] Do not require "file" commands for remote targets Gary Benson
2015-04-01 11:22 ` [PATCH 2/7] Introduce exec_file_find Gary Benson
2015-04-01 11:22 ` [PATCH 3/7] Use gdb_sysroot for main executable on attach Gary Benson
2015-04-01 14:53   ` Eli Zaretskii
2015-04-15 12:45     ` Gary Benson
2015-04-15 10:43   ` Pedro Alves
2015-04-01 11:22 ` [PATCH 1/7] Introduce exec_file_locate_attach Gary Benson
2015-04-01 11:27 ` [PATCH 4/7] Introduce linux_pid_to_exec_file Gary Benson
2015-04-06 16:41   ` Doug Evans
2015-04-07  9:07     ` Gary Benson
2015-04-08  3:15       ` Doug Evans
2015-04-08  8:06         ` Gary Benson
2015-04-15  9:37   ` Pedro Alves
2015-04-15 13:14     ` [PATCH 4/7 v2] Introduce linux_proc_pid_to_exec_file Gary Benson
2015-04-15 16:01       ` Pedro Alves
2015-04-01 11:29 ` [PATCH 5/7] Implement remote_pid_to_exec_file using qXfer:exec-file:read Gary Benson
2015-04-01 14:55   ` Eli Zaretskii
2015-04-06 17:00     ` Doug Evans
2015-04-06 17:21       ` Eli Zaretskii
2015-04-06 21:57         ` Doug Evans
2015-04-07  6:09           ` Eli Zaretskii
2015-04-07  9:08         ` Gary Benson
2015-04-08  1:57           ` Doug Evans
2015-04-08  6:00             ` Eli Zaretskii
2015-04-01 11:30 ` [PATCH 6/7] Implement qXfer:exec-file:read in gdbserver Gary Benson
2015-04-06 17:11   ` Doug Evans
2015-04-07  9:19     ` Gary Benson
2015-04-17 23:43   ` Possible regression on gdb.base/attach.exp when using native-extended-gdbserver (was: Re: [PATCH 6/7] Implement qXfer:exec-file:read in gdbserver) Sergio Durigan Junior
2015-04-20  9:13     ` Gary Benson
2015-04-20 10:41     ` [OB PATCH] Fix three test failures with extended remote targets Gary Benson
2015-04-01 11:39 ` Gary Benson [this message]
2015-04-15 10:24   ` [PATCH 7/7] Access executable from remote system when first inferior appears Pedro Alves
2015-04-15 13:56     ` Gary Benson
2015-04-15 14:06       ` Gary Benson
2015-04-15 16:15         ` Pedro Alves
2015-04-15 16:09       ` Pedro Alves
2015-04-16  8:23         ` Gary Benson
2015-04-15 16:13       ` Pedro Alves
2015-04-16  9:30         ` Gary Benson
2015-04-16  9:53           ` Pedro Alves
2015-04-16 11:47             ` Gary Benson
2015-04-16 15:06             ` Eli Zaretskii
2015-04-16 15:23               ` Pedro Alves
2015-04-16 15:05           ` Eli Zaretskii
2015-04-16 19:34             ` Gary Benson
2015-04-15 16:21       ` Eli Zaretskii
2015-04-15 10:47 ` [PATCH 0/7] Do not require "file" commands for remote targets Pedro Alves
2015-04-15 12:02   ` Gary Benson
2015-04-15 12:16     ` Pedro Alves
2015-04-15 14:16   ` Gary Benson
2015-04-15 16:20     ` Pedro Alves
2015-04-17  9:01       ` Gary Benson

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=1427887341-31819-8-git-send-email-gbenson@redhat.com \
    --to=gbenson@redhat.com \
    --cc=gdb-patches@sourceware.org \
    /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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).