+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.
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",
+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
@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
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;
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;
}
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. */
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);
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);
+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
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 ""