32#include "gdbsupport/gdb_obstack.h"
38 N_(
"BSD user-level threads"),
39 N_(
"BSD user-level threads")
49 void close ()
override;
57 void resume (ptid_t,
int,
enum gdb_signal)
override;
121#define BSD_UTHREAD_PTHREAD_MAGIC 0xd09ba115
132 error (_(
"Bad magic"));
136#define BSD_UTHREAD_PS_RUNNING 0
137#define BSD_UTHREAD_PS_DEAD 18
271 "/usr/lib/libc_r.so",
272 "/usr/lib/libpthread.so",
319 CORE_ADDR addr = ptid.tid ();
320 CORE_ADDR active_addr;
321 scoped_restore save_inferior_ptid = make_scoped_restore (&
inferior_ptid);
336 if (addr != 0 && addr != active_addr)
350 CORE_ADDR addr = ptid.tid ();
351 CORE_ADDR active_addr;
352 scoped_restore save_inferior_ptid = make_scoped_restore (&
inferior_ptid);
359 if (addr != 0 && addr != active_addr)
375 target_wait_flags options)
406 ptid = ptid_t (ptid.pid (), 0, addr);
436 CORE_ADDR addr = ptid.tid ();
465 ptid_t ptid = ptid_t (
pid, 0, addr);
517 CORE_ADDR addr =
info->ptid.tid ();
535 if (ptid.tid () != 0)
536 return string_printf (
"process %d, thread 0x%s",
538 phex_nz (ptid.tid (), sizeof (ULONGEST)));
struct gdbarch * target_gdbarch(void)
static const char *const bsd_uthread_state[]
static void bsd_uthread_inferior_created(inferior *inf)
static void bsd_uthread_solib_loaded(struct so_list *so)
static void bsd_uthread_solib_unloaded(program_space *pspace, so_list *so)
static void bsd_uthread_deactivate(void)
void _initialize_bsd_uthread()
void bsd_uthread_set_collect_uthread(struct gdbarch *gdbarch, void(*collect_uthread)(const struct regcache *, int, CORE_ADDR))
static const char * bsd_uthread_solib_name
static void bsd_uthread_check_magic(CORE_ADDR addr)
static CORE_ADDR bsd_uthread_thread_list_addr
static int bsd_uthread_thread_state_offset
#define BSD_UTHREAD_PTHREAD_MAGIC
#define BSD_UTHREAD_PS_DEAD
static const char *const bsd_uthread_solib_names[]
static CORE_ADDR bsd_uthread_thread_run_addr
static int bsd_uthread_thread_next_offset
static int bsd_uthread_lookup_offset(const char *name, struct objfile *objfile)
static CORE_ADDR bsd_uthread_lookup_address(const char *name, struct objfile *objfile)
static int bsd_uthread_active
static const target_info bsd_uthread_target_info
static const registry< gdbarch >::key< struct bsd_uthread_ops > bsd_uthread_data
static struct bsd_uthread_ops * get_bsd_uthread(struct gdbarch *gdbarch)
static CORE_ADDR bsd_uthread_read_memory_address(CORE_ADDR addr)
static int bsd_uthread_thread_ctx_offset
static int bsd_uthread_activate(struct objfile *objfile)
static bsd_uthread_target bsd_uthread_ops
void bsd_uthread_set_supply_uthread(struct gdbarch *gdbarch, void(*supply_uthread)(struct regcache *, int, CORE_ADDR))
int unpush_target(struct target_ops *t)
void push_target(struct target_ops *t)
thread_info * find_thread(ptid_t ptid)
CORE_ADDR read_memory_typed_address(CORE_ADDR addr, struct type *type)
ULONGEST read_memory_unsigned_integer(CORE_ADDR memaddr, int len, enum bfd_endian byte_order)
static ULONGEST extract_unsigned_integer(gdb::array_view< const gdb_byte > buf, enum bfd_endian byte_order)
enum bfd_endian gdbarch_byte_order(struct gdbarch *gdbarch)
struct thread_info * add_thread(process_stratum_target *targ, ptid_t ptid)
void thread_change_ptid(process_stratum_target *targ, ptid_t old_ptid, ptid_t new_ptid)
bool in_thread_list(process_stratum_target *targ, ptid_t ptid)
const struct builtin_type * builtin_type(struct gdbarch *gdbarch)
mach_port_t mach_port_t name mach_port_t mach_port_t name kern_return_t int int rusage_t pid_t pid
mach_port_t mach_port_t name mach_port_t mach_port_t name kern_return_t int status
struct inferior * current_inferior(void)
struct bound_minimal_symbol lookup_minimal_symbol(const char *name, const char *sfile, struct objfile *objf)
observable< struct so_list * > solib_loaded
observable< inferior * > inferior_created
observable< struct program_space *, struct so_list * > solib_unloaded
static process_stratum_target * as_process_stratum_target(target_ops *target)
bool solib_read_symbols(struct so_list *so, symfile_add_flags flags)
CORE_ADDR value_address() const
struct minimal_symbol * minsym
void(* collect_uthread)(const struct regcache *, int, CORE_ADDR)
void(* supply_uthread)(struct regcache *, int, CORE_ADDR)
void update_thread_list() override
ptid_t wait(ptid_t, struct target_waitstatus *, target_wait_flags) override
void store_registers(struct regcache *, int) override
bool thread_alive(ptid_t ptid) override
void fetch_registers(struct regcache *, int) override
void resume(ptid_t, int, enum gdb_signal) override
const char * extra_thread_info(struct thread_info *) override
const target_info & info() const override
std::string pid_to_str(ptid_t) override
void mourn_inferior() override
strata stratum() const override
struct type * builtin_data_ptr
char so_original_name[SO_NAME_MAX_PATH_SIZE]
virtual ptid_t wait(ptid_t, struct target_waitstatus *, target_wait_flags options) TARGET_DEFAULT_FUNC(default_target_wait)
virtual void fetch_registers(struct regcache *, int) TARGET_DEFAULT_IGNORE()
target_ops * beneath() const
virtual void store_registers(struct regcache *, int) TARGET_DEFAULT_NORETURN(noprocess())
virtual void resume(ptid_t, int TARGET_DEBUG_PRINTER(target_debug_print_step), enum gdb_signal) TARGET_DEFAULT_NORETURN(noprocess())
virtual void mourn_inferior() TARGET_DEFAULT_FUNC(default_mourn_inferior)
virtual bool thread_alive(ptid_t ptid) TARGET_DEFAULT_RETURN(false)
std::string normal_pid_to_str(ptid_t ptid)
int target_read_memory(CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
@ TARGET_WAITKIND_SIGNALLED