/* On Linux, threads are implemented as pseudo-processes, in which
case we may be tracing more than one process at a time. In that
- case, inferior_pid will contain the main process ID and the
- individual thread (process) ID mashed together. These macros are
- used to separate them out. These definitions should be overridden
- if thread support is included. */
-
-#if !defined (PIDGET) /* Default definition for PIDGET/TIDGET. */
-#define PIDGET(PID) PID
-#define TIDGET(PID) 0
-#endif
+ case, inferior_ptid will contain the main process ID and the
+ individual thread (process) ID. get_thread_id () is used to
+ get the thread id if it's available, and the process id otherwise. */
int
-get_thread_id (int inferior_pid)
+get_thread_id (ptid_t ptid)
{
- int tid = TIDGET (inferior_pid);
- if (0 == tid) tid = inferior_pid;
+ int tid = TIDGET (ptid);
+ if (0 == tid)
+ tid = PIDGET (ptid);
return tid;
}
-#define GET_THREAD_ID(PID) get_thread_id ((PID));
+#define GET_THREAD_ID(PTID) get_thread_id ((PTID));
static void
fetch_nwfpe_single (unsigned int fn, FPA11 * fpa11)
FPA11 fp;
/* Get the thread id for the ptrace call. */
- tid = GET_THREAD_ID (inferior_pid);
+ tid = GET_THREAD_ID (inferior_ptid);
/* Read the floating point state. */
ret = ptrace (PT_GETFPREGS, tid, 0, &fp);
FPA11 fp;
/* Get the thread id for the ptrace call. */
- tid = GET_THREAD_ID (inferior_pid);
+ tid = GET_THREAD_ID (inferior_ptid);
/* Read the floating point state. */
ret = ptrace (PT_GETFPREGS, tid, 0, &fp);
FPA11 fp;
/* Get the thread id for the ptrace call. */
- tid = GET_THREAD_ID (inferior_pid);
+ tid = GET_THREAD_ID (inferior_ptid);
/* Read the floating point state. */
ret = ptrace (PT_GETFPREGS, tid, 0, &fp);
FPA11 fp;
/* Get the thread id for the ptrace call. */
- tid = GET_THREAD_ID (inferior_pid);
+ tid = GET_THREAD_ID (inferior_ptid);
/* Read the floating point state. */
ret = ptrace (PT_GETFPREGS, tid, 0, &fp);
fetch_register (int regno)
{
int ret, tid;
- struct pt_regs regs;
+ elf_gregset_t regs;
/* Get the thread id for the ptrace call. */
- tid = GET_THREAD_ID (inferior_pid);
+ tid = GET_THREAD_ID (inferior_ptid);
ret = ptrace (PTRACE_GETREGS, tid, 0, ®s);
if (ret < 0)
}
if (regno >= A1_REGNUM && regno < PC_REGNUM)
- supply_register (regno, (char *) ®s.uregs[regno]);
+ supply_register (regno, (char *) ®s[regno]);
if (PS_REGNUM == regno)
{
if (arm_apcs_32)
- supply_register (PS_REGNUM, (char *) ®s.uregs[CPSR_REGNUM]);
+ supply_register (PS_REGNUM, (char *) ®s[CPSR_REGNUM]);
else
- supply_register (PS_REGNUM, (char *) ®s.uregs[PC_REGNUM]);
+ supply_register (PS_REGNUM, (char *) ®s[PC_REGNUM]);
}
if (PC_REGNUM == regno)
{
- regs.uregs[PC_REGNUM] = ADDR_BITS_REMOVE (regs.uregs[PC_REGNUM]);
- supply_register (PC_REGNUM, (char *) ®s.uregs[PC_REGNUM]);
+ regs[PC_REGNUM] = ADDR_BITS_REMOVE (regs[PC_REGNUM]);
+ supply_register (PC_REGNUM, (char *) ®s[PC_REGNUM]);
}
}
fetch_regs (void)
{
int ret, regno, tid;
- struct pt_regs regs;
+ elf_gregset_t regs;
/* Get the thread id for the ptrace call. */
- tid = GET_THREAD_ID (inferior_pid);
+ tid = GET_THREAD_ID (inferior_ptid);
ret = ptrace (PTRACE_GETREGS, tid, 0, ®s);
if (ret < 0)
}
for (regno = A1_REGNUM; regno < PC_REGNUM; regno++)
- supply_register (regno, (char *) ®s.uregs[regno]);
+ supply_register (regno, (char *) ®s[regno]);
if (arm_apcs_32)
- supply_register (PS_REGNUM, (char *) ®s.uregs[CPSR_REGNUM]);
+ supply_register (PS_REGNUM, (char *) ®s[CPSR_REGNUM]);
else
- supply_register (PS_REGNUM, (char *) ®s.uregs[PC_REGNUM]);
+ supply_register (PS_REGNUM, (char *) ®s[PC_REGNUM]);
- regs.uregs[PC_REGNUM] = ADDR_BITS_REMOVE (regs.uregs[PC_REGNUM]);
- supply_register (PC_REGNUM, (char *) ®s.uregs[PC_REGNUM]);
+ regs[PC_REGNUM] = ADDR_BITS_REMOVE (regs[PC_REGNUM]);
+ supply_register (PC_REGNUM, (char *) ®s[PC_REGNUM]);
}
/* Store all general registers of the process from the values in
store_register (int regno)
{
int ret, tid;
- struct pt_regs regs;
+ elf_gregset_t regs;
if (!register_valid[regno])
return;
/* Get the thread id for the ptrace call. */
- tid = GET_THREAD_ID (inferior_pid);
+ tid = GET_THREAD_ID (inferior_ptid);
/* Get the general registers from the process. */
ret = ptrace (PTRACE_GETREGS, tid, 0, ®s);
}
if (regno >= A1_REGNUM && regno <= PC_REGNUM)
- read_register_gen (regno, (char *) ®s.uregs[regno]);
+ read_register_gen (regno, (char *) ®s[regno]);
ret = ptrace (PTRACE_SETREGS, tid, 0, ®s);
if (ret < 0)
store_regs (void)
{
int ret, regno, tid;
- struct pt_regs regs;
+ elf_gregset_t regs;
/* Get the thread id for the ptrace call. */
- tid = GET_THREAD_ID (inferior_pid);
+ tid = GET_THREAD_ID (inferior_ptid);
/* Fetch the general registers. */
ret = ptrace (PTRACE_GETREGS, tid, 0, ®s);
for (regno = A1_REGNUM; regno <= PC_REGNUM; regno++)
{
if (register_valid[regno])
- read_register_gen (regno, (char *) ®s.uregs[regno]);
+ read_register_gen (regno, (char *) ®s[regno]);
}
ret = ptrace (PTRACE_SETREGS, tid, 0, ®s);
{
int regnum;
for (regnum = A1_REGNUM; regnum <= PC_REGNUM; regnum++)
- if (register_valid[regnum])
- read_register_gen (regnum, (char *) &(*gregsetp)[regnum]);
+ read_register_gen (regnum, (char *) &(*gregsetp)[regnum]);
}
else if (regno >= A1_REGNUM && regno <= PC_REGNUM)
- {
- if (register_valid[regno])
- read_register_gen (regno, (char *) &(*gregsetp)[regno]);
- }
+ read_register_gen (regno, (char *) &(*gregsetp)[regno]);
if (PS_REGNUM == regno || -1 == regno)
{
- if (register_valid[regno] || -1 == regno)
- {
- if (arm_apcs_32)
- read_register_gen (PS_REGNUM, (char *) &(*gregsetp)[CPSR_REGNUM]);
- else
- read_register_gen (PC_REGNUM, (char *) &(*gregsetp)[PC_REGNUM]);
- }
+ if (arm_apcs_32)
+ read_register_gen (PS_REGNUM, (char *) &(*gregsetp)[CPSR_REGNUM]);
+ else
+ read_register_gen (PC_REGNUM, (char *) &(*gregsetp)[PC_REGNUM]);
}
-
}
/* Fill GDB's register array with the general-purpose register values
}
/* Store fpsr. */
- if (register_valid[FPS_REGNUM])
- if (FPS_REGNUM == regno || -1 == regno)
- read_register_gen (FPS_REGNUM, (char *) &fp->fpsr);
+ if (FPS_REGNUM == regno || -1 == regno)
+ read_register_gen (FPS_REGNUM, (char *) &fp->fpsr);
}
/* Fill GDB's register array with the floating-point register values