forked from Imagelibrary/binutils-gdb
Phase 1 of the ptid_t changes.
This commit is contained in:
@@ -287,8 +287,8 @@ fetch_inferior_registers (int regno)
|
||||
int i;
|
||||
|
||||
errno = 0;
|
||||
retval = ptrace (PTRACE_GETREGS, inferior_pid, (PTRACE_ARG3_TYPE) & ec,
|
||||
0);
|
||||
retval = ptrace (PTRACE_GETREGS, PIDGET (inferior_ptid),
|
||||
(PTRACE_ARG3_TYPE) & ec, 0);
|
||||
if (errno)
|
||||
perror_with_name ("ptrace(PTRACE_GETREGS)");
|
||||
|
||||
@@ -340,8 +340,8 @@ fetch_inferior_registers (int regno)
|
||||
int i;
|
||||
|
||||
errno = 0;
|
||||
retval = ptrace (PTRACE_GETFPREGS, inferior_pid, (PTRACE_ARG3_TYPE) & fc,
|
||||
0);
|
||||
retval = ptrace (PTRACE_GETFPREGS, PIDGET (inferior_ptid),
|
||||
(PTRACE_ARG3_TYPE) & fc, 0);
|
||||
if (errno)
|
||||
perror_with_name ("ptrace(PTRACE_GETFPREGS)");
|
||||
|
||||
@@ -396,8 +396,8 @@ store_inferior_registers (int regno)
|
||||
8 * REGISTER_RAW_SIZE (O0_REGNUM));
|
||||
|
||||
errno = 0;
|
||||
retval = ptrace (PTRACE_SETREGS, inferior_pid, (PTRACE_ARG3_TYPE) & ec,
|
||||
0);
|
||||
retval = ptrace (PTRACE_SETREGS, PIDGET (inferior_ptid),
|
||||
(PTRACE_ARG3_TYPE) & ec, 0);
|
||||
if (errno)
|
||||
perror_with_name ("ptrace(PTRACE_SETREGS)");
|
||||
}
|
||||
@@ -444,8 +444,8 @@ store_inferior_registers (int regno)
|
||||
|
||||
/* We read fcontext first so that we can get good values for fq_t... */
|
||||
errno = 0;
|
||||
retval = ptrace (PTRACE_GETFPREGS, inferior_pid, (PTRACE_ARG3_TYPE) & fc,
|
||||
0);
|
||||
retval = ptrace (PTRACE_GETFPREGS, PIDGET (inferior_ptid),
|
||||
(PTRACE_ARG3_TYPE) & fc, 0);
|
||||
if (errno)
|
||||
perror_with_name ("ptrace(PTRACE_GETFPREGS)");
|
||||
|
||||
@@ -455,8 +455,8 @@ store_inferior_registers (int regno)
|
||||
fc.fsr = read_register (FPS_REGNUM);
|
||||
|
||||
errno = 0;
|
||||
retval = ptrace (PTRACE_SETFPREGS, inferior_pid, (PTRACE_ARG3_TYPE) & fc,
|
||||
0);
|
||||
retval = ptrace (PTRACE_SETFPREGS, PIDGET (inferior_ptid),
|
||||
(PTRACE_ARG3_TYPE) & fc, 0);
|
||||
if (errno)
|
||||
perror_with_name ("ptrace(PTRACE_SETFPREGS)");
|
||||
}
|
||||
@@ -508,7 +508,7 @@ fetch_inferior_registers (int regno)
|
||||
else
|
||||
reglo = reghi = regno;
|
||||
|
||||
ecp = registers_addr (inferior_pid);
|
||||
ecp = registers_addr (PIDGET (inferior_ptid));
|
||||
|
||||
for (regno = reglo; regno <= reghi; regno++)
|
||||
{
|
||||
@@ -524,7 +524,7 @@ fetch_inferior_registers (int regno)
|
||||
unsigned int reg;
|
||||
|
||||
errno = 0;
|
||||
reg = ptrace (ptrace_fun, inferior_pid,
|
||||
reg = ptrace (ptrace_fun, PIDGET (inferior_ptid),
|
||||
(PTRACE_ARG3_TYPE) (ecp + regmap[regno] + i), 0);
|
||||
if (errno)
|
||||
perror_with_name ("ptrace(PTRACE_PEEKUSP)");
|
||||
@@ -559,7 +559,7 @@ store_inferior_registers (int regno)
|
||||
else
|
||||
reglo = reghi = regno;
|
||||
|
||||
ecp = registers_addr (inferior_pid);
|
||||
ecp = registers_addr (PIDGET (inferior_ptid));
|
||||
|
||||
for (regno = reglo; regno <= reghi; regno++)
|
||||
{
|
||||
@@ -579,7 +579,7 @@ store_inferior_registers (int regno)
|
||||
reg = *(unsigned int *) ®isters[REGISTER_BYTE (regno) + i];
|
||||
|
||||
errno = 0;
|
||||
ptrace (ptrace_fun, inferior_pid,
|
||||
ptrace (ptrace_fun, PIDGET (inferior_ptid),
|
||||
(PTRACE_ARG3_TYPE) (ecp + regmap[regno] + i), reg);
|
||||
if (errno)
|
||||
perror_with_name ("ptrace(PTRACE_POKEUSP)");
|
||||
@@ -591,12 +591,13 @@ store_inferior_registers (int regno)
|
||||
/* Wait for child to do something. Return pid of child, or -1 in case
|
||||
of error; store status through argument pointer OURSTATUS. */
|
||||
|
||||
int
|
||||
child_wait (int pid, struct target_waitstatus *ourstatus)
|
||||
ptid_t
|
||||
child_wait (ptid_t ptid, struct target_waitstatus *ourstatus)
|
||||
{
|
||||
int save_errno;
|
||||
int thread;
|
||||
union wait status;
|
||||
int pid;
|
||||
|
||||
while (1)
|
||||
{
|
||||
@@ -622,7 +623,7 @@ child_wait (int pid, struct target_waitstatus *ourstatus)
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (pid != PIDGET (inferior_pid)) /* Some other process?!? */
|
||||
if (pid != PIDGET (inferior_ptid)) /* Some other process?!? */
|
||||
continue;
|
||||
|
||||
thread = status.w_tid; /* Get thread id from status */
|
||||
@@ -630,26 +631,27 @@ child_wait (int pid, struct target_waitstatus *ourstatus)
|
||||
/* Initial thread value can only be acquired via wait, so we have to
|
||||
resort to this hack. */
|
||||
|
||||
if (TIDGET (inferior_pid) == 0 && thread != 0)
|
||||
if (TIDGET (inferior_ptid) == 0 && thread != 0)
|
||||
{
|
||||
inferior_pid = BUILDPID (inferior_pid, thread);
|
||||
add_thread (inferior_pid);
|
||||
inferior_ptid = MERGEPID (PIDGET (inferior_ptid), thread);
|
||||
add_thread (inferior_ptid);
|
||||
}
|
||||
|
||||
pid = BUILDPID (pid, thread);
|
||||
ptid = BUILDPID (pid, thread);
|
||||
|
||||
/* We've become a single threaded process again. */
|
||||
if (thread == 0)
|
||||
inferior_pid = pid;
|
||||
inferior_ptid = ptid;
|
||||
|
||||
/* Check for thread creation. */
|
||||
if (WIFSTOPPED (status)
|
||||
&& WSTOPSIG (status) == SIGTRAP
|
||||
&& !in_thread_list (pid))
|
||||
&& !in_thread_list (ptid))
|
||||
{
|
||||
int realsig;
|
||||
|
||||
realsig = ptrace (PTRACE_GETTRACESIG, pid, (PTRACE_ARG3_TYPE) 0, 0);
|
||||
realsig = ptrace (PTRACE_GETTRACESIG, PIDGET (ptid),
|
||||
(PTRACE_ARG3_TYPE) 0, 0);
|
||||
|
||||
if (realsig == SIGNEWTHREAD)
|
||||
{
|
||||
@@ -657,7 +659,7 @@ child_wait (int pid, struct target_waitstatus *ourstatus)
|
||||
realsig -- the code in wait_for_inferior expects SIGTRAP. */
|
||||
ourstatus->kind = TARGET_WAITKIND_SPURIOUS;
|
||||
ourstatus->value.sig = TARGET_SIGNAL_0;
|
||||
return pid;
|
||||
return ptid;
|
||||
}
|
||||
else
|
||||
error ("Signal for unknown thread was not SIGNEWTHREAD");
|
||||
@@ -666,15 +668,16 @@ child_wait (int pid, struct target_waitstatus *ourstatus)
|
||||
/* Check for thread termination. */
|
||||
else if (WIFSTOPPED (status)
|
||||
&& WSTOPSIG (status) == SIGTRAP
|
||||
&& in_thread_list (pid))
|
||||
&& in_thread_list (ptid))
|
||||
{
|
||||
int realsig;
|
||||
|
||||
realsig = ptrace (PTRACE_GETTRACESIG, pid, (PTRACE_ARG3_TYPE) 0, 0);
|
||||
realsig = ptrace (PTRACE_GETTRACESIG, PIDGET (ptid),
|
||||
(PTRACE_ARG3_TYPE) 0, 0);
|
||||
|
||||
if (realsig == SIGTHREADEXIT)
|
||||
{
|
||||
ptrace (PTRACE_CONT, PIDGET (pid), (PTRACE_ARG3_TYPE) 0, 0);
|
||||
ptrace (PTRACE_CONT, PIDGET (ptid), (PTRACE_ARG3_TYPE) 0, 0);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
@@ -705,14 +708,16 @@ child_wait (int pid, struct target_waitstatus *ourstatus)
|
||||
store_waitstatus (ourstatus, status.w_status);
|
||||
#endif
|
||||
|
||||
return pid;
|
||||
return ptid;
|
||||
}
|
||||
}
|
||||
|
||||
/* Return nonzero if the given thread is still alive. */
|
||||
int
|
||||
child_thread_alive (int pid)
|
||||
child_thread_alive (ptid_t ptid)
|
||||
{
|
||||
int pid = PIDGET (ptid);
|
||||
|
||||
/* Arggh. Apparently pthread_kill only works for threads within
|
||||
the process that calls pthread_kill.
|
||||
|
||||
@@ -730,9 +735,10 @@ child_thread_alive (int pid)
|
||||
If SIGNAL is nonzero, give it that signal. */
|
||||
|
||||
void
|
||||
child_resume (int pid, int step, enum target_signal signal)
|
||||
child_resume (ptid_t ptid, int step, enum target_signal signal)
|
||||
{
|
||||
int func;
|
||||
int pid = PIDGET (ptid);
|
||||
|
||||
errno = 0;
|
||||
|
||||
@@ -740,7 +746,7 @@ child_resume (int pid, int step, enum target_signal signal)
|
||||
we only want to step/continue a single thread. */
|
||||
if (pid == -1)
|
||||
{
|
||||
pid = inferior_pid;
|
||||
pid = PIDGET (inferior_ptid);
|
||||
func = step ? PTRACE_SINGLESTEP : PTRACE_CONT;
|
||||
}
|
||||
else
|
||||
@@ -766,11 +772,11 @@ child_resume (int pid, int step, enum target_signal signal)
|
||||
buffer. */
|
||||
|
||||
char *
|
||||
child_pid_to_str (int pid)
|
||||
child_pid_to_str (ptid_t ptid)
|
||||
{
|
||||
static char buf[40];
|
||||
|
||||
sprintf (buf, "process %d thread %d", PIDGET (pid), TIDGET (pid));
|
||||
sprintf (buf, "process %d thread %d", PIDGET (ptid), TIDGET (ptid));
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user