Phase 1 of the ptid_t changes.

This commit is contained in:
Kevin Buettner
2001-05-04 04:15:33 +00:00
parent b1af961c84
commit 39f770628a
132 changed files with 2660 additions and 2053 deletions

View File

@@ -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 *) &registers[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;
}