53 #include <sys/types.h> 54 #include <sys/ptrace.h> 57 #include <sys/pthdebug.h> 59 #if !HAVE_DECL_GETTHRDS 60 extern int getthrds (pid_t,
struct thrdsinfo64 *,
int, tid_t *,
int);
67 #ifndef PTHDB_VERSION_3 68 #define pthdb_tid_t tid_t 73 #define PD_TID(ptid) (pd_active && ptid_get_tid (ptid) != 0) 82 #define PDC_SUCCESS PTHDB_SUCCESS 83 #define PDC_FAILURE PTHDB_CALLBACK 134 static int pdc_read_data (pthdb_user_t,
void *, pthdb_addr_t,
size_t);
135 static int pdc_write_data (pthdb_user_t,
void *, pthdb_addr_t,
size_t);
137 unsigned long long flags,
138 pthdb_context_t *context);
140 unsigned long long flags,
141 pthdb_context_t *context);
142 static int pdc_alloc (pthdb_user_t,
size_t,
void **);
143 static int pdc_realloc (pthdb_user_t,
void *,
size_t,
void **);
172 case PTHDB_SUCCESS:
return "SUCCESS";
173 case PTHDB_NOSYS:
return "NOSYS";
174 case PTHDB_NOTSUP:
return "NOTSUP";
175 case PTHDB_BAD_VERSION:
return "BAD_VERSION";
176 case PTHDB_BAD_USER:
return "BAD_USER";
177 case PTHDB_BAD_SESSION:
return "BAD_SESSION";
178 case PTHDB_BAD_MODE:
return "BAD_MODE";
179 case PTHDB_BAD_FLAGS:
return "BAD_FLAGS";
180 case PTHDB_BAD_CALLBACK:
return "BAD_CALLBACK";
181 case PTHDB_BAD_POINTER:
return "BAD_POINTER";
182 case PTHDB_BAD_CMD:
return "BAD_CMD";
183 case PTHDB_BAD_PTHREAD:
return "BAD_PTHREAD";
184 case PTHDB_BAD_ATTR:
return "BAD_ATTR";
185 case PTHDB_BAD_MUTEX:
return "BAD_MUTEX";
186 case PTHDB_BAD_MUTEXATTR:
return "BAD_MUTEXATTR";
187 case PTHDB_BAD_COND:
return "BAD_COND";
188 case PTHDB_BAD_CONDATTR:
return "BAD_CONDATTR";
189 case PTHDB_BAD_RWLOCK:
return "BAD_RWLOCK";
190 case PTHDB_BAD_RWLOCKATTR:
return "BAD_RWLOCKATTR";
191 case PTHDB_BAD_KEY:
return "BAD_KEY";
192 case PTHDB_BAD_PTID:
return "BAD_PTID";
193 case PTHDB_BAD_TID:
return "BAD_TID";
194 case PTHDB_CALLBACK:
return "CALLBACK";
195 case PTHDB_CONTEXT:
return "CONTEXT";
196 case PTHDB_HELD:
return "HELD";
197 case PTHDB_NOT_HELD:
return "NOT_HELD";
198 case PTHDB_MEMORY:
return "MEMORY";
199 case PTHDB_NOT_PTHREADED:
return "NOT_PTHREADED";
200 case PTHDB_SYMBOL:
return "SYMBOL";
201 case PTHDB_NOT_AVAIL:
return "NOT_AVAIL";
202 case PTHDB_INTERNAL:
return "INTERNAL";
203 default:
return "UNKNOWN";
214 if (ret == 0 && !errno)
227 if (ret == -1 && errno == EPERM)
231 "ptrace (%d, %d) = %d (errno = %d)\n",
232 req,
id, ret, errno);
233 return ret == -1 ? 0 : 1;
237 error (
_(
"aix-thread: ptrace (%d, %d) returned %d (errno = %d %s)"),
247 # define ptracex(request, pid, addr, data, buf) \ 248 ptrace64 (request, pid, addr, data, buf) 255 return ptrace_check (req,
id, ptracex (req,
id, addr, data, buf));
263 # define ptrace(request, pid, addr, data, buf) \ 264 ptrace64 (request, pid, addr, data, buf) 265 # define addr_ptr long long 267 # define addr_ptr int * 275 ptrace (req,
id, addr, data, buf));
303 "pdc_symbol_addrs (user = %ld, symbols = 0x%lx, count = %d)\n",
304 user, (
long) symbols, count);
306 for (i = 0; i < count; i++)
308 name = symbols[i].name;
311 " symbols[%d].name = \"%s\"\n", i,
name);
344 unsigned long long flags,
345 pthdb_context_t *context)
356 struct ptxsprs sprs64;
357 struct ptsprs sprs32;
364 if (
flags & PTHDB_FLAG_GPRS)
369 (
unsigned long) gprs64, 0, NULL))
370 memset (gprs64, 0,
sizeof (gprs64));
371 memcpy (context->gpr, gprs64,
sizeof(gprs64));
375 if (!
ptrace32 (PTT_READ_GPRS,
tid, (uintptr_t) gprs32, 0, NULL))
376 memset (gprs32, 0,
sizeof (gprs32));
377 memcpy (context->gpr, gprs32,
sizeof(gprs32));
382 if (
flags & PTHDB_FLAG_FPRS)
384 if (!
ptrace32 (PTT_READ_FPRS,
tid, (uintptr_t) fprs, 0, NULL))
385 memset (fprs, 0,
sizeof (fprs));
386 memcpy (context->fpr, fprs,
sizeof(fprs));
390 if (
flags & PTHDB_FLAG_SPRS)
395 (
unsigned long) &sprs64, 0, NULL))
396 memset (&sprs64, 0,
sizeof (sprs64));
397 memcpy (&context->msr, &sprs64,
sizeof(sprs64));
401 if (!
ptrace32 (PTT_READ_SPRS,
tid, (uintptr_t) &sprs32, 0, NULL))
402 memset (&sprs32, 0,
sizeof (sprs32));
403 memcpy (&context->msr, &sprs32,
sizeof(sprs32));
416 unsigned long long flags,
417 pthdb_context_t *context)
430 if (
flags & PTHDB_FLAG_GPRS)
434 (
unsigned long) context->gpr, 0, NULL);
436 ptrace32 (PTT_WRITE_GPRS,
tid, (uintptr_t) context->gpr, 0, NULL);
440 if (
flags & PTHDB_FLAG_FPRS)
442 ptrace32 (PTT_WRITE_FPRS,
tid, (uintptr_t) context->fpr, 0, NULL);
446 if (
flags & PTHDB_FLAG_SPRS)
451 (
unsigned long) &context->msr, 0, NULL);
455 ptrace32 (PTT_WRITE_SPRS,
tid, (uintptr_t) &context->msr, 0, NULL);
465 pthdb_addr_t addr,
size_t len)
471 "pdc_read_data (user = %ld, buf = 0x%lx, addr = %s, len = %ld)\n",
487 pthdb_addr_t addr,
size_t len)
493 "pdc_write_data (user = %ld, buf = 0x%lx, addr = %s, len = %ld)\n",
513 "pdc_alloc (user = %ld, len = %ld, bufp = 0x%lx)\n",
514 user, len, (
long) bufp);
518 " malloc returned 0x%lx\n", (
long) *bufp);
531 pdc_realloc (pthdb_user_t user,
void *buf,
size_t len,
void **bufp)
535 "pdc_realloc (user = %ld, buf = 0x%lx, len = %ld, bufp = 0x%lx)\n",
536 user, (
long) buf, len, (
long) bufp);
540 " realloc returned 0x%lx\n", (
long) *bufp);
552 "pdc_free (user = %ld, buf = 0x%lx)\n", user,
573 return _(
"sleeping");
579 return _(
"finished");
589 pcmp (
const void *p1v,
const void *p2v)
655 gcmp (
const void *t1v,
const void *t2v)
669 struct thrdsinfo64 thrinf;
676 sizeof (thrinf), &ktid, 1) != 1)
679 if (thrinf.ti_cursig == SIGTRAP)
680 return thrinf.ti_tid;
704 int pcount, psize, pi, gcount, gi;
707 pthdb_pthread_t pdtid;
717 for (cmd = PTHDB_LIST_FIRST;; cmd = PTHDB_LIST_NEXT)
720 if (
status != PTHDB_SUCCESS || pdtid == PTHDB_INVALID_PTHREAD)
724 if (
status != PTHDB_SUCCESS || pthid == PTHDB_INVALID_PTID)
731 psize *
sizeof *pbuf);
738 for (pi = 0; pi < pcount; pi++)
741 if (
status != PTHDB_SUCCESS)
742 tid = PTHDB_INVALID_TID;
746 qsort (pbuf, pcount,
sizeof *pbuf,
pcmp);
754 qsort (gbuf, gcount,
sizeof *gbuf,
gcmp);
759 for (pi = gi = 0; pi < pcount || gi < gcount;)
766 else if (gi == gcount)
782 gptid = gbuf[gi]->
ptid;
786 cmp_result =
ptid_cmp (pptid, gptid);
797 else if (cmp_result > 0)
807 thread->
priv.reset (priv);
847 if (
status != PTHDB_SUCCESS)
880 if (
status != PTHDB_SUCCESS)
922 if ((
status != PTHDB_SUCCESS
923 &&
status != PTHDB_NOT_PTHREADED) || !stub_name)
997 ptid_t ptid,
int step,
enum gdb_signal sig)
1014 error (
_(
"aix-thread resume: unknown pthread %ld"),
1020 if (
tid[0] == PTHDB_INVALID_TID)
1021 error (
_(
"aix-thread resume: no tid for pthread %ld"),
1058 &&
status->value.sig == GDB_SIGNAL_TRAP)
1081 (
char *) (vals + regno));
1134 uint64_t iar, uint64_t msr, uint32_t cr,
1135 uint64_t lr, uint64_t ctr, uint32_t xer,
1158 uint32_t iar, uint32_t msr, uint32_t cr,
1159 uint32_t lr, uint32_t ctr, uint32_t xer,
1190 pthdb_context_t ctx;
1194 "fetch_regs_user_thread %lx\n", (
long) pdtid);
1196 if (
status != PTHDB_SUCCESS)
1197 error (
_(
"aix-thread: fetch_registers: pthdb_pthread_context returned %s"),
1217 ctx.xer, ctx.fpscr);
1220 ctx.xer, ctx.fpscr);
1247 struct ptxsprs sprs64;
1248 struct ptsprs sprs32;
1253 "fetch_regs_kernel_thread tid=%lx regno=%d arch64=%d\n",
1264 (
unsigned long) gprs64, 0, NULL))
1265 memset (gprs64, 0,
sizeof (gprs64));
1270 if (!
ptrace32 (PTT_READ_GPRS,
tid, (uintptr_t) gprs32, 0, NULL))
1271 memset (gprs32, 0,
sizeof (gprs32));
1284 if (!
ptrace32 (PTT_READ_FPRS,
tid, (uintptr_t) fprs, 0, NULL))
1285 memset (fprs, 0,
sizeof (fprs));
1296 (
unsigned long) &sprs64, 0, NULL))
1297 memset (&sprs64, 0,
sizeof (sprs64));
1299 sprs64.pt_cr, sprs64.pt_lr, sprs64.pt_ctr,
1300 sprs64.pt_xer, sprs64.pt_fpscr);
1306 if (!
ptrace32 (PTT_READ_SPRS,
tid, (uintptr_t) &sprs32, 0, NULL))
1307 memset (&sprs32, 0,
sizeof (sprs32));
1309 sprs32.pt_lr, sprs32.pt_ctr, sprs32.pt_xer,
1314 (
char *) &sprs32.pt_mq);
1338 if (
tid == PTHDB_INVALID_TID)
1398 uint64_t *iar, uint64_t *msr, uint32_t *cr,
1399 uint64_t *lr, uint64_t *ctr, uint32_t *xer,
1434 uint32_t *iar, uint32_t *msr, uint32_t *cr,
1435 uint32_t *lr, uint32_t *ctr, uint32_t *xer,
1479 pthdb_context_t ctx;
1486 "store_regs_user_thread %lx\n", (
long) pdtid);
1491 if (
status != PTHDB_SUCCESS)
1492 error (
_(
"aix-thread: store_registers: pthdb_pthread_context returned %s"),
1523 &ctx.xer, &ctx.fpscr);
1529 uint32_t tmp_iar, tmp_msr, tmp_cr, tmp_lr, tmp_ctr, tmp_xer,
1533 &tmp_xer, &tmp_fpscr);
1551 ctx.fpscr = tmp_fpscr;
1555 if (
status != PTHDB_SUCCESS)
1556 error (
_(
"aix-thread: store_registers: " 1557 "pthdb_pthread_setcontext returned %s"),
1578 struct ptxsprs sprs64;
1579 struct ptsprs sprs32;
1584 "store_regs_kernel_thread tid=%lx regno=%d\n",
1595 ptrace64aix (PTT_READ_GPRS,
tid, (
unsigned long) gprs64, 0, NULL);
1597 ptrace64aix (PTT_WRITE_GPRS,
tid, (
unsigned long) gprs64, 0, NULL);
1602 ptrace32 (PTT_READ_GPRS,
tid, (uintptr_t) gprs32, 0, NULL);
1604 ptrace32 (PTT_WRITE_GPRS,
tid, (uintptr_t) gprs32, 0, NULL);
1616 ptrace32 (PTT_READ_FPRS,
tid, (uintptr_t) fprs, 0, NULL);
1618 ptrace32 (PTT_WRITE_FPRS,
tid, (uintptr_t) fprs, 0, NULL);
1629 (
unsigned long) &sprs64, 0, NULL);
1631 &sprs64.pt_cr, &sprs64.pt_lr, &sprs64.pt_ctr,
1632 &sprs64.pt_xer, &sprs64.pt_fpscr);
1634 (
unsigned long) &sprs64, 0, NULL);
1644 uint32_t tmp_iar, tmp_msr, tmp_cr, tmp_lr, tmp_ctr, tmp_xer,
1650 ptrace32 (PTT_READ_SPRS,
tid, (uintptr_t) &sprs32, 0, NULL);
1653 &tmp_ctr, &tmp_xer, &tmp_fpscr);
1655 sprs32.pt_iar = tmp_iar;
1656 sprs32.pt_msr = tmp_msr;
1657 sprs32.pt_cr = tmp_cr;
1658 sprs32.pt_lr = tmp_lr;
1659 sprs32.pt_ctr = tmp_ctr;
1660 sprs32.pt_xer = tmp_xer;
1661 sprs32.pt_fpscr = tmp_fpscr;
1669 ptrace32 (PTT_WRITE_SPRS,
tid, (uintptr_t) &sprs32, 0, NULL);
1693 if (
tid == PTHDB_INVALID_TID)
1704 const char *annex,
gdb_byte *readbuf,
1713 writebuf,
offset, len, xfered_len);
1748 static char *ret = NULL;
1770 pthdb_pthread_t pdtid;
1772 pthdb_state_t state;
1773 pthdb_suspendstate_t suspendstate;
1774 pthdb_detachstate_t detachstate;
1776 static char *ret = NULL;
1784 pdtid = priv->
pdtid;
1787 if (
tid != PTHDB_INVALID_TID)
1792 if (
status != PTHDB_SUCCESS)
1798 if (
status == PTHDB_SUCCESS && suspendstate == PSS_SUSPENDED)
1800 buf.
printf (
_(
", suspended"));
1804 if (
status == PTHDB_SUCCESS && detachstate == PDS_DETACHED)
1808 pthdb_pthread_cancelpend (
pd_session, pdtid, &cancelpend);
1809 if (
status == PTHDB_SUCCESS && cancelpend)
1811 buf.
printf (
_(
", cancel pending"));
1817 ret = xstrdup (buf.
c_str ());
1869 _(
"Set debugging of AIX thread module."),
1870 _(
"Show debugging of AIX thread module."),
1871 _(
"Enables debugging output (used to debug GDB)."),
static void fill_fprs(const struct regcache *regcache, double *vals)
struct gdbarch * target_gdbarch(void)
char * hex_string(LONGEST num)
static void pd_disable(void)
static constexpr ptid_t tid
struct thread_info * add_thread(ptid_t ptid)
struct thread_info * find_thread_ptid(ptid_t ptid)
static int ptid_cmp(ptid_t ptid1, ptid_t ptid2)
int getthrds(pid_t, struct thrdsinfo64 *, int, tid_t *, int)
int target_write_memory(CORE_ADDR memaddr, const gdb_byte *myaddr, ssize_t len)
int ptid_get_pid(const ptid_t &ptid)
struct regcache * get_thread_regcache(ptid_t ptid)
void delete_thread(ptid_t)
static void aix_thread_detach(struct target_ops *ops, const char *args, int from_tty)
static pthdb_callbacks_t pd_callbacks
#define BMSYMBOL_VALUE_ADDRESS(symbol)
void push_target(struct target_ops *t)
struct thread_info * add_thread_with_info(ptid_t ptid, struct private_thread_info *)
ptid_t regcache_get_ptid(const struct regcache *regcache)
int unpush_target(struct target_ops *t)
static CORE_ADDR pd_brk_addr
static int pdc_read_data(pthdb_user_t, void *, pthdb_addr_t, size_t)
void * memset(T *s, int c, size_t n)=delete
static enum target_xfer_status aix_thread_xfer_partial(struct target_ops *ops, enum target_object object, const char *annex, gdb_byte *readbuf, const gdb_byte *writebuf, ULONGEST offset, ULONGEST len, ULONGEST *xfered_len)
static const char * aix_thread_extra_thread_info(struct target_ops *self, struct thread_info *thread)
static void aix_thread_fetch_registers(struct target_ops *ops, struct regcache *regcache, int regno)
void _initialize_aix_thread(void)
const char *(* to_pid_to_str)(struct target_ops *, ptid_t) TARGET_DEFAULT_FUNC(default_pid_to_str)
static int giter_accum(struct thread_info *thread, void *bufp)
static void store_regs_kernel_thread(const struct regcache *regcache, int regno, pthdb_tid_t tid)
void write(const char *buf, long length_buf) override
static int pdc_alloc(pthdb_user_t, size_t, void **)
struct breakpoint * create_thread_event_breakpoint(struct gdbarch *gdbarch, CORE_ADDR address)
static void pd_enable(void)
static void supply_fprs(struct regcache *regcache, double *vals)
static int giter_count(struct thread_info *thread, void *countp)
struct gdbarch_tdep * gdbarch_tdep(struct gdbarch *gdbarch)
ptid_t ptid_build(int pid, long lwp, long tid)
scoped_restore_tmpl< T > make_scoped_restore(T *var)
mach_port_t kern_return_t mach_port_t msgports mach_port_t kern_return_t pid_t pid mach_port_t kern_return_t mach_port_t task mach_port_t kern_return_t int flags
struct observer * observer_attach_inferior_created(observer_inferior_created_ftype *f)
int in_thread_list(ptid_t ptid)
struct thread_info * iterate_over_threads(thread_callback_func, void *)
static int pdc_write_regs(pthdb_user_t user, pthdb_tid_t tid, unsigned long long flags, pthdb_context_t *context)
static aix_thread_info * get_aix_thread_info(thread_info *thread)
static int iter_tid(struct thread_info *thread, void *tidp)
CORE_ADDR gdbarch_decr_pc_after_break(struct gdbarch *gdbarch)
static int pdc_write_data(pthdb_user_t, void *, pthdb_addr_t, size_t)
static void pid_to_prc(ptid_t *ptidp)
static void store_regs_user_thread(const struct regcache *regcache, pthdb_pthread_t pdtid)
void complete_target_initialization(struct target_ops *t)
static pthdb_session_t pd_session
long ptid_get_tid(const ptid_t &ptid)
static char * state2str(pthdb_state_t state)
void fprintf_unfiltered(struct ui_file *stream, const char *format,...)
void(* to_resume)(struct target_ops *, ptid_t, int TARGET_DEBUG_PRINTER(target_debug_print_step), enum gdb_signal) TARGET_DEFAULT_NORETURN(noprocess())
static void supply_sprs32(struct regcache *regcache, uint32_t iar, uint32_t msr, uint32_t cr, uint32_t lr, uint32_t ctr, uint32_t xer, uint32_t fpscr)
static void supply_gprs64(struct regcache *regcache, uint64_t *vals)
ptid_t pid_to_ptid(int pid)
static void fill_sprs64(const struct regcache *regcache, uint64_t *iar, uint64_t *msr, uint32_t *cr, uint64_t *lr, uint64_t *ctr, uint32_t *xer, uint32_t *fpscr)
static int pcmp(const void *p1v, const void *p2v)
int gdb_signal_to_host(enum gdb_signal)
static pthdb_tid_t get_signaled_thread(void)
static void sync_threadlists(void)
mach_port_t mach_port_t name mach_port_t mach_port_t name kern_return_t int status
static const char * aix_thread_pid_to_str(struct target_ops *ops, ptid_t ptid)
static int pdc_symbol_addrs(pthdb_user_t, pthdb_symbol_t *, int)
static void new_objfile(struct objfile *objfile)
static void aix_thread_mourn_inferior(struct target_ops *ops)
enum target_xfer_status(* to_xfer_partial)(struct target_ops *ops, enum target_object object, const char *annex, gdb_byte *readbuf, const gdb_byte *writebuf, ULONGEST offset, ULONGEST len, ULONGEST *xfered_len) TARGET_DEFAULT_RETURN(TARGET_XFER_E_IO)
struct target_ops * find_target_beneath(struct target_ops *t)
char * xstrprintf(const char *format,...)
static ptid_t aix_thread_wait(struct target_ops *ops, ptid_t ptid, struct target_waitstatus *status, int options)
struct cmd_list_element * setdebuglist
void(* to_detach)(struct target_ops *ops, const char *, int) TARGET_DEFAULT_IGNORE()
long ptid_get_lwp(const ptid_t &ptid)
static int pdc_realloc(pthdb_user_t, void *, size_t, void **)
static int aix_thread_thread_alive(struct target_ops *ops, ptid_t ptid)
static ptid_t aix_thread_get_ada_task_ptid(struct target_ops *self, long lwp, long thread)
static void supply_sprs64(struct regcache *regcache, uint64_t iar, uint64_t msr, uint32_t cr, uint64_t lr, uint64_t ctr, uint32_t xer, uint32_t fpscr)
PTR xrealloc(PTR ptr, size_t size)
static void fill_gprs64(const struct regcache *regcache, uint64_t *vals)
void printf(const char *,...) ATTRIBUTE_PRINTF(2
void(* to_fetch_registers)(struct target_ops *, struct regcache *, int) TARGET_DEFAULT_IGNORE()
void(* to_mourn_inferior)(struct target_ops *) TARGET_DEFAULT_FUNC(default_mourn_inferior)
const char *(* to_extra_thread_info)(struct target_ops *, struct thread_info *) TARGET_DEFAULT_RETURN(NULL)
enum register_status regcache_register_status(const struct regcache *regcache, int regnum)
std::unique_ptr< private_thread_info > priv
static const char * pd_status2str(int status)
const char * c_str() const
int target_read_memory(CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
CORE_ADDR regcache_read_pc(struct regcache *regcache)
struct minimal_symbol * minsym
char * safe_strerror(int)
static void fill_sprs32(const struct regcache *regcache, uint32_t *iar, uint32_t *msr, uint32_t *cr, uint32_t *lr, uint32_t *ctr, uint32_t *xer, uint32_t *fpscr)
void add_setshow_boolean_cmd(const char *name, enum command_class theclass, int *var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_const_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
static void init_aix_thread_ops(void)
static constexpr ptid_t lwp
static int gcmp(const void *t1v, const void *t2v)
static int ptrace32(int req, int id, addr_ptr addr, int data, int *buf)
static void fill_gprs32(const struct regcache *regcache, uint32_t *vals)
static void supply_reg32(struct regcache *regcache, int regno, uint32_t val)
void regcache_raw_supply(struct regcache *regcache, int regnum, const void *buf)
const char * to_shortname
unsigned long long ULONGEST
static int ptrace64aix(int req, int id, long long addr, int data, int *buf)
int register_size(struct gdbarch *gdbarch, int regnum)
struct observer * observer_attach_new_objfile(observer_new_objfile_ftype *f)
static void aix_thread_inferior_created(struct target_ops *ops, int from_tty)
static struct target_ops aix_thread_ops
static int pdc_read_regs(pthdb_user_t user, pthdb_tid_t tid, unsigned long long flags, pthdb_context_t *context)
static void aix_thread_resume(struct target_ops *ops, ptid_t ptid, int step, enum gdb_signal sig)
void regcache_raw_collect(const struct regcache *regcache, int regnum, void *buf)
struct cmd_list_element * showdebuglist
int gdbarch_pc_regnum(struct gdbarch *gdbarch)
int(* to_thread_alive)(struct target_ops *, ptid_t ptid) TARGET_DEFAULT_RETURN(0)
static void fetch_regs_user_thread(struct regcache *regcache, pthdb_pthread_t pdtid)
static void pd_deactivate(void)
static void aix_thread_store_registers(struct target_ops *ops, struct regcache *regcache, int regno)
static ptid_t pd_activate(int set_infpid)
static int ptrace_check(int req, int id, int ret)
static int special_register_p(struct gdbarch *gdbarch, int regno)
void(* to_store_registers)(struct target_ops *, struct regcache *, int) TARGET_DEFAULT_NORETURN(noprocess())
struct bound_minimal_symbol lookup_minimal_symbol(const char *name, const char *sfile, struct objfile *objf)
int ppc_floating_point_unit_p(struct gdbarch *gdbarch)
ptid_t(* to_wait)(struct target_ops *, ptid_t, struct target_waitstatus *, int TARGET_DEBUG_PRINTER(target_debug_print_options)) TARGET_DEFAULT_FUNC(default_target_wait)
ptid_t(* to_get_ada_task_ptid)(struct target_ops *, long lwp, long thread) TARGET_DEFAULT_FUNC(default_get_ada_task_ptid)
void error(const char *fmt,...)
static ptid_t pd_update(int set_infpid)
struct target_ops * beneath
static int debug_aix_thread
static int pdc_dealloc(pthdb_user_t, void *)
static void fetch_regs_kernel_thread(struct regcache *regcache, int regno, pthdb_tid_t tid)