diff options
-rw-r--r-- | gdb/ChangeLog | 9 | ||||
-rw-r--r-- | gdb/NEWS | 6 | ||||
-rw-r--r-- | gdb/doc/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/doc/gdb.texinfo | 13 | ||||
-rw-r--r-- | gdb/remote.c | 18 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.server/server-exec-info.exp | 1 |
7 files changed, 49 insertions, 9 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 8f4c86a..4478d81 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,14 @@ 2015-04-17 Gary Benson <gbenson@redhat.com> + * 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. + * NEWS: Mention that GDB now supports automatic location and + retrieval of executable + files from remote targets. + +2015-04-17 Gary Benson <gbenson@redhat.com> + * target.h (TARGET_OBJECT_EXEC_FILE): New enum value. * remote.c (PACKET_qXfer_exec_file): Likewise. (remote_protocol_features): Register the @@ -36,6 +36,12 @@ the operating system) when starting processes remotely, and when attaching to already-running local or remote processes. +* GDB now supports automatic location and retrieval of executable + files from remote targets. Remote debugging can now be initiated + using only a "target remote" or "target extended-remote" command + (no "set sysroot" or "file" commands are required). See "New remote + packets" below. + * Python Scripting ** gdb.Objfile objects have a new attribute "username", diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog index 1bb7f41..2335bc1 100644 --- a/gdb/doc/ChangeLog +++ b/gdb/doc/ChangeLog @@ -1,5 +1,11 @@ 2015-04-17 Gary Benson <gbenson@redhat.com> + * gdb.texinfo (Connecting to a Remote Target): Mention that + GDB can access program files from remote targets that support + qXfer:exec-file:read and Host I/O packets. + +2015-04-17 Gary Benson <gbenson@redhat.com> + * gdb.texinfo (Remote Configuration): Document the "set/show remote pid-to-exec-file-packet" command. (General Query Packets): Document the qXfer:exec-file:read diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index 964f9c4..0410702 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -18952,10 +18952,15 @@ configuration of @value{GDBN}; use @code{help target} to list them. @node Connecting @section Connecting to a Remote Target -On the @value{GDBN} host machine, you will need an unstripped copy of -your program, since @value{GDBN} needs symbol and debugging information. -Start up @value{GDBN} as usual, using the name of the local copy of your -program as the first argument. +@value{GDBN} needs an unstripped copy of your program to access symbol +and debugging information. Some remote targets (@pxref{qXfer +executable filename read}, and @pxref{Host I/O Packets}) allow +@value{GDBN} to access program files over the same connection used to +communicate with @value{GDBN}. With such a target, if the remote +program is unstripped, the only command you need is @code{target +remote}. Otherwise, start up @value{GDBN} using the name of the local +unstripped copy of your program as the first argument, or use the +@code{file} command. @cindex @code{target remote} @value{GDBN} can communicate with the target over a serial line, or diff --git a/gdb/remote.c b/gdb/remote.c index a4b82e8..3b2325f 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/ChangeLog b/gdb/testsuite/ChangeLog index 2000dbe..500a774 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2015-04-17 Gary Benson <gbenson@redhat.com> + + * gdb.server/server-exec-info.exp: Inhibit GDB from accessing + the main executable over the remote protocol. + 2015-04-16 Pedro Alves <palves@redhat.com> * boards/native-extended-gdbserver.exp (mi_gdb_start): Don't start 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 "" |