GDB: Work around D;PID handling bug in older GDBservers (PR gdb/23377)

This commit adds a GDB workaround for the GDBserver bug exposed by
commit f2ffa92bbc ("gdb: Eliminate the 'stop_pc' global"), so that
newer GDBs can continue working with older GDBservers.

gdb/ChangeLog:
2018-07-11  Pedro Alves  <palves@redhat.com>

	PR gdb/23377
	* remote.c (remote_target::remote_detach_pid): Call
	set_current_process.
This commit is contained in:
Pedro Alves 2018-07-11 23:31:44 +01:00
parent 31445d1036
commit 4c7333b308
2 changed files with 14 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2018-07-11 Pedro Alves <palves@redhat.com>
PR gdb/23377
* remote.c (remote_target::remote_detach_pid): Call
set_current_process.
2018-07-11 Pedro Alves <palves@redhat.com>
* h8300-tdep.c (h8300_gdbarch_init): Remove

View File

@ -5661,6 +5661,14 @@ remote_target::remote_detach_pid (int pid)
{
struct remote_state *rs = get_remote_state ();
/* This should not be necessary, but the handling for D;PID in
GDBserver versions prior to 8.2 incorrectly assumes that the
selected process points to the same process we're detaching,
leading to misbehavior (and possibly GDBserver crashing) when it
does not. Since it's easy and cheap, work around it by forcing
GDBserver to select GDB's current process. */
set_general_process ();
if (remote_multi_process_p (rs))
xsnprintf (rs->buf, get_remote_packet_size (), "D;%x", pid);
else