GDBserver: Pass process_info pointer to target_kill

We start from a process_info pointer, pass down process->pid, and
then the target_kill implementations need to find the process from the
pid again.  Pass the process_info pointer down directly instead.

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

	* linux-low.c (linux_kill): Change parameter to process_info
	pointer instead of pid.  Adjust.
	* lynx-low.c (lynx_kill): Likewise.
	* nto-low.c (nto_kill): Likewise.
	* spu-low.c (spu_kill): Likewise.
	* win32-low.c (win32_kill): Likewise.
	* server.c (handle_v_kill, kill_inferior_callback)
	(detach_or_kill_for_exit): Adjust.
	* target.c (kill_inferior): Change parameter to process_info
	pointer instead of pid.  Adjust.
	* target.h (struct target_ops) <kill>: Change parameter to
	process_info pointer instead of pid.  Adjust all implementations
	and callers.
	(kill_inferior): Likewise.
This commit is contained in:
Pedro Alves 2018-07-13 10:28:47 +01:00
parent ef2ddb33bd
commit a780ef4f27
9 changed files with 43 additions and 40 deletions

View file

@ -3080,7 +3080,10 @@ handle_v_kill (char *own_buf)
pid = strtol (p, NULL, 16);
else
pid = signal_pid;
if (pid != 0 && kill_inferior (pid) == 0)
process_info *proc = find_process_pid (pid);
if (proc != nullptr && kill_inferior (proc) == 0)
{
cs.last_status.kind = TARGET_WAITKIND_SIGNALLED;
cs.last_status.value.sig = GDB_SIGNAL_KILL;
@ -3481,10 +3484,8 @@ gdbserver_show_disableable (FILE *stream)
static void
kill_inferior_callback (process_info *process)
{
int pid = process->pid;
kill_inferior (pid);
discard_queued_stop_replies (ptid_t (pid));
kill_inferior (process);
discard_queued_stop_replies (ptid_t (process->pid));
}
/* Call this when exiting gdbserver with possible inferiors that need
@ -3528,7 +3529,7 @@ detach_or_kill_for_exit (void)
if (process->attached)
detach_inferior (process);
else
kill_inferior (pid);
kill_inferior (process);
discard_queued_stop_replies (ptid_t (pid));
});