Index: gdb/sol-thread.c |
diff --git a/gdb/sol-thread.c b/gdb/sol-thread.c |
index 3577b5affd0fa833fdb634221fbdb6039fe17011..b480b58df682127f835061618dc431736c08e00b 100644 |
--- a/gdb/sol-thread.c |
+++ b/gdb/sol-thread.c |
@@ -1,6 +1,6 @@ |
/* Solaris threads debugging interface. |
- Copyright (C) 1996-2005, 2007-2012 Free Software Foundation, Inc. |
+ Copyright (C) 1996-2013 Free Software Foundation, Inc. |
This file is part of GDB. |
@@ -56,7 +56,7 @@ |
#include "target.h" |
#include "inferior.h" |
#include <fcntl.h> |
-#include "gdb_stat.h" |
+#include <sys/stat.h> |
#include <dlfcn.h> |
#include "gdbcmd.h" |
#include "gdbcore.h" |
@@ -64,7 +64,7 @@ |
#include "solib.h" |
#include "symfile.h" |
#include "observer.h" |
-#include "gdb_string.h" |
+#include <string.h> |
#include "procfs.h" |
struct target_ops sol_thread_ops; |
@@ -96,16 +96,6 @@ static void init_sol_thread_ops (void); |
/* Default definitions: These must be defined in tm.h if they are to |
be shared with a process module such as procfs. */ |
-#define GET_PID(ptid) ptid_get_pid (ptid) |
-#define GET_LWP(ptid) ptid_get_lwp (ptid) |
-#define GET_THREAD(ptid) ptid_get_tid (ptid) |
- |
-#define is_lwp(ptid) (GET_LWP (ptid) != 0) |
-#define is_thread(ptid) (GET_THREAD (ptid) != 0) |
- |
-#define BUILD_LWP(lwp, pid) ptid_build (pid, lwp, 0) |
-#define BUILD_THREAD(tid, pid) ptid_build (pid, 0, tid) |
- |
/* Pointers to routines from libthread_db resolved by dlopen(). */ |
static void (*p_td_log)(const int on_off); |
@@ -196,7 +186,8 @@ td_err_string (td_err_e errcode) |
if (td_err_table[i].num == errcode) |
return td_err_table[i].str; |
- sprintf (buf, "Unknown libthread_db error code: %d", errcode); |
+ xsnprintf (buf, sizeof (buf), "Unknown libthread_db error code: %d", |
+ errcode); |
return buf; |
} |
@@ -227,7 +218,8 @@ td_state_string (td_thr_state_e statecode) |
if (td_thr_state_table[i].num == statecode) |
return td_thr_state_table[i].str; |
- sprintf (buf, "Unknown libthread_db state code: %d", statecode); |
+ xsnprintf (buf, sizeof (buf), "Unknown libthread_db state code: %d", |
+ statecode); |
return buf; |
} |
@@ -246,12 +238,12 @@ thread_to_lwp (ptid_t thread_id, int default_lwp) |
td_thrhandle_t th; |
td_err_e val; |
- if (is_lwp (thread_id)) |
+ if (ptid_lwp_p (thread_id)) |
return thread_id; /* It's already an LWP ID. */ |
/* It's a thread. Convert to LWP. */ |
- val = p_td_ta_map_id2thr (main_ta, GET_THREAD (thread_id), &th); |
+ val = p_td_ta_map_id2thr (main_ta, ptid_get_tid (thread_id), &th); |
if (val == TD_NOTHR) |
return pid_to_ptid (-1); /* Thread must have terminated. */ |
else if (val != TD_OK) |
@@ -271,7 +263,7 @@ thread_to_lwp (ptid_t thread_id, int default_lwp) |
td_state_string (ti.ti_state)); |
} |
- return BUILD_LWP (ti.ti_lid, PIDGET (thread_id)); |
+ return ptid_build (ptid_get_pid (thread_id), ti.ti_lid, 0); |
} |
/* Convert an LWP ID into a POSIX or Solaris thread ID. If LWP_ID |
@@ -286,7 +278,7 @@ lwp_to_thread (ptid_t lwp) |
td_thrhandle_t th; |
td_err_e val; |
- if (is_thread (lwp)) |
+ if (ptid_tid_p (lwp)) |
return lwp; /* It's already a thread ID. */ |
/* It's an LWP. Convert it to a thread ID. */ |
@@ -294,7 +286,7 @@ lwp_to_thread (ptid_t lwp) |
if (!target_thread_alive (lwp)) |
return pid_to_ptid (-1); /* Must be a defunct LPW. */ |
- val = p_td_ta_map_lwp2thr (main_ta, GET_LWP (lwp), &th); |
+ val = p_td_ta_map_lwp2thr (main_ta, ptid_get_lwp (lwp), &th); |
if (val == TD_NOTHR) |
return pid_to_ptid (-1); /* Thread must have terminated. */ |
else if (val != TD_OK) |
@@ -312,7 +304,7 @@ lwp_to_thread (ptid_t lwp) |
else if (val != TD_OK) |
error (_("lwp_to_thread: td_thr_get_info: %s."), td_err_string (val)); |
- return BUILD_THREAD (ti.ti_tid, PIDGET (lwp)); |
+ return ptid_build (ptid_get_pid (lwp), 0 , ti.ti_tid); |
} |
@@ -328,12 +320,12 @@ lwp_to_thread (ptid_t lwp) |
program was started via the normal ptrace (PTRACE_TRACEME). */ |
static void |
-sol_thread_detach (struct target_ops *ops, char *args, int from_tty) |
+sol_thread_detach (struct target_ops *ops, const char *args, int from_tty) |
{ |
struct target_ops *beneath = find_target_beneath (ops); |
sol_thread_active = 0; |
- inferior_ptid = pid_to_ptid (PIDGET (main_ph.ptid)); |
+ inferior_ptid = pid_to_ptid (ptid_get_pid (main_ph.ptid)); |
unpush_target (ops); |
beneath->to_detach (beneath, args, from_tty); |
} |
@@ -352,20 +344,20 @@ sol_thread_resume (struct target_ops *ops, |
old_chain = save_inferior_ptid (); |
- inferior_ptid = thread_to_lwp (inferior_ptid, PIDGET (main_ph.ptid)); |
- if (PIDGET (inferior_ptid) == -1) |
+ inferior_ptid = thread_to_lwp (inferior_ptid, ptid_get_pid (main_ph.ptid)); |
+ if (ptid_get_pid (inferior_ptid) == -1) |
inferior_ptid = procfs_first_available (); |
- if (PIDGET (ptid) != -1) |
+ if (ptid_get_pid (ptid) != -1) |
{ |
ptid_t save_ptid = ptid; |
ptid = thread_to_lwp (ptid, -2); |
- if (PIDGET (ptid) == -2) /* Inactive thread. */ |
+ if (ptid_get_pid (ptid) == -2) /* Inactive thread. */ |
error (_("This version of Solaris can't start inactive threads.")); |
- if (info_verbose && PIDGET (ptid) == -1) |
+ if (info_verbose && ptid_get_pid (ptid) == -1) |
warning (_("Specified thread %ld seems to have terminated"), |
- GET_THREAD (save_ptid)); |
+ ptid_get_tid (save_ptid)); |
} |
beneath->to_resume (beneath, ptid, step, signo); |
@@ -388,20 +380,20 @@ sol_thread_wait (struct target_ops *ops, |
save_ptid = inferior_ptid; |
old_chain = save_inferior_ptid (); |
- inferior_ptid = thread_to_lwp (inferior_ptid, PIDGET (main_ph.ptid)); |
- if (PIDGET (inferior_ptid) == -1) |
+ inferior_ptid = thread_to_lwp (inferior_ptid, ptid_get_pid (main_ph.ptid)); |
+ if (ptid_get_pid (inferior_ptid) == -1) |
inferior_ptid = procfs_first_available (); |
- if (PIDGET (ptid) != -1) |
+ if (ptid_get_pid (ptid) != -1) |
{ |
ptid_t save_ptid = ptid; |
ptid = thread_to_lwp (ptid, -2); |
- if (PIDGET (ptid) == -2) /* Inactive thread. */ |
+ if (ptid_get_pid (ptid) == -2) /* Inactive thread. */ |
error (_("This version of Solaris can't start inactive threads.")); |
- if (info_verbose && PIDGET (ptid) == -1) |
+ if (info_verbose && ptid_get_pid (ptid) == -1) |
warning (_("Specified thread %ld seems to have terminated"), |
- GET_THREAD (save_ptid)); |
+ ptid_get_tid (save_ptid)); |
} |
rtnval = beneath->to_wait (beneath, ptid, ourstatus, options); |
@@ -410,11 +402,11 @@ sol_thread_wait (struct target_ops *ops, |
{ |
/* Map the LWP of interest back to the appropriate thread ID. */ |
rtnval = lwp_to_thread (rtnval); |
- if (PIDGET (rtnval) == -1) |
+ if (ptid_get_pid (rtnval) == -1) |
rtnval = save_ptid; |
/* See if we have a new thread. */ |
- if (is_thread (rtnval) |
+ if (ptid_tid_p (rtnval) |
&& !ptid_equal (rtnval, save_ptid) |
&& (!in_thread_list (rtnval) |
|| is_exited (rtnval))) |
@@ -443,12 +435,7 @@ sol_thread_fetch_registers (struct target_ops *ops, |
gdb_fpregset_t *fpregset_p = &fpregset; |
struct target_ops *beneath = find_target_beneath (ops); |
-#if 0 |
- int xregsize; |
- caddr_t xregset; |
-#endif |
- |
- if (!is_thread (inferior_ptid)) |
+ if (!ptid_tid_p (inferior_ptid)) |
{ |
/* It's an LWP; pass the request on to the layer beneath. */ |
beneath->to_fetch_registers (beneath, regcache, regnum); |
@@ -456,7 +443,7 @@ sol_thread_fetch_registers (struct target_ops *ops, |
} |
/* Solaris thread: convert INFERIOR_PTID into a td_thrhandle_t. */ |
- thread = GET_THREAD (inferior_ptid); |
+ thread = ptid_get_tid (inferior_ptid); |
if (thread == 0) |
error (_("sol_thread_fetch_registers: thread == 0")); |
@@ -488,23 +475,6 @@ sol_thread_fetch_registers (struct target_ops *ops, |
supply_gregset (regcache, (const gdb_gregset_t *) gregset_p); |
supply_fpregset (regcache, (const gdb_fpregset_t *) fpregset_p); |
- |
-#if 0 |
- /* FIXME: libthread_db doesn't seem to handle this right. */ |
- val = td_thr_getxregsize (&thandle, &xregsize); |
- if (val != TD_OK && val != TD_NOXREGS) |
- error (_("sol_thread_fetch_registers: td_thr_getxregsize %s"), |
- td_err_string (val)); |
- |
- if (val == TD_OK) |
- { |
- xregset = alloca (xregsize); |
- val = td_thr_getxregs (&thandle, xregset); |
- if (val != TD_OK) |
- error (_("sol_thread_fetch_registers: td_thr_getxregs %s"), |
- td_err_string (val)); |
- } |
-#endif |
} |
static void |
@@ -516,12 +486,8 @@ sol_thread_store_registers (struct target_ops *ops, |
td_err_e val; |
prgregset_t gregset; |
prfpregset_t fpregset; |
-#if 0 |
- int xregsize; |
- caddr_t xregset; |
-#endif |
- if (!is_thread (inferior_ptid)) |
+ if (!ptid_tid_p (inferior_ptid)) |
{ |
struct target_ops *beneath = find_target_beneath (ops); |
@@ -531,7 +497,7 @@ sol_thread_store_registers (struct target_ops *ops, |
} |
/* Solaris thread: convert INFERIOR_PTID into a td_thrhandle_t. */ |
- thread = GET_THREAD (inferior_ptid); |
+ thread = ptid_get_tid (inferior_ptid); |
val = p_td_ta_map_id2thr (main_ta, thread, &thandle); |
if (val != TD_OK) |
@@ -557,23 +523,6 @@ sol_thread_store_registers (struct target_ops *ops, |
/* Restore new register value. */ |
regcache_raw_supply (regcache, regnum, old_value); |
- |
-#if 0 |
- /* FIXME: libthread_db doesn't seem to handle this right. */ |
- val = td_thr_getxregsize (&thandle, &xregsize); |
- if (val != TD_OK && val != TD_NOXREGS) |
- error (_("sol_thread_store_registers: td_thr_getxregsize %s"), |
- td_err_string (val)); |
- |
- if (val == TD_OK) |
- { |
- xregset = alloca (xregsize); |
- val = td_thr_getxregs (&thandle, xregset); |
- if (val != TD_OK) |
- error (_("sol_thread_store_registers: td_thr_getxregs %s"), |
- td_err_string (val)); |
- } |
-#endif |
} |
fill_gregset (regcache, (gdb_gregset_t *) &gregset, regnum); |
@@ -587,17 +536,6 @@ sol_thread_store_registers (struct target_ops *ops, |
if (val != TD_OK) |
error (_("sol_thread_store_registers: td_thr_setfpregs %s"), |
td_err_string (val)); |
- |
-#if 0 |
- /* FIXME: libthread_db doesn't seem to handle this right. */ |
- val = td_thr_getxregsize (&thandle, &xregsize); |
- if (val != TD_OK && val != TD_NOXREGS) |
- error (_("sol_thread_store_registers: td_thr_getxregsize %s"), |
- td_err_string (val)); |
- |
- /* ??? Should probably do something about writing the xregs here, |
- but what are they? */ |
-#endif |
} |
/* Perform partial transfers on OBJECT. See target_read_partial and |
@@ -616,7 +554,7 @@ sol_thread_xfer_partial (struct target_ops *ops, enum target_object object, |
old_chain = save_inferior_ptid (); |
- if (is_thread (inferior_ptid) || !target_thread_alive (inferior_ptid)) |
+ if (ptid_tid_p (inferior_ptid) || !target_thread_alive (inferior_ptid)) |
{ |
/* It's either a thread or an LWP that isn't alive. Any live |
LWP will do so use the first available. |
@@ -677,7 +615,7 @@ check_for_thread_db (void) |
main_ph.ptid = inferior_ptid; /* Save for xfer_memory. */ |
ptid = lwp_to_thread (inferior_ptid); |
- if (PIDGET (ptid) != -1) |
+ if (ptid_get_pid (ptid) != -1) |
inferior_ptid = ptid; |
target_find_new_threads (); |
@@ -722,14 +660,14 @@ sol_thread_mourn_inferior (struct target_ops *ops) |
static int |
sol_thread_alive (struct target_ops *ops, ptid_t ptid) |
{ |
- if (is_thread (ptid)) |
+ if (ptid_tid_p (ptid)) |
{ |
/* It's a (user-level) thread. */ |
td_err_e val; |
td_thrhandle_t th; |
int pid; |
- pid = GET_THREAD (ptid); |
+ pid = ptid_get_tid (ptid); |
if ((val = p_td_ta_map_id2thr (main_ta, pid, &th)) != TD_OK) |
return 0; /* Thread not found. */ |
if ((val = p_td_thr_validate (&th)) != TD_OK) |
@@ -834,14 +772,14 @@ ps_pglobal_lookup (gdb_ps_prochandle_t ph, const char *ld_object_name, |
static ps_err_e |
rw_common (int dowrite, const struct ps_prochandle *ph, gdb_ps_addr_t addr, |
- char *buf, int size) |
+ gdb_byte *buf, int size) |
{ |
int ret; |
struct cleanup *old_chain; |
old_chain = save_inferior_ptid (); |
- if (is_thread (inferior_ptid) || !target_thread_alive (inferior_ptid)) |
+ if (ptid_tid_p (inferior_ptid) || !target_thread_alive (inferior_ptid)) |
{ |
/* It's either a thread or an LWP that isn't alive. Any live |
LWP will do so use the first available. |
@@ -859,9 +797,9 @@ rw_common (int dowrite, const struct ps_prochandle *ph, gdb_ps_addr_t addr, |
#endif |
if (dowrite) |
- ret = target_write_memory (addr, buf, size); |
+ ret = target_write_memory (addr, (gdb_byte *) buf, size); |
else |
- ret = target_read_memory (addr, buf, size); |
+ ret = target_read_memory (addr, (gdb_byte *) buf, size); |
do_cleanups (old_chain); |
@@ -883,7 +821,7 @@ ps_err_e |
ps_pdwrite (gdb_ps_prochandle_t ph, gdb_ps_addr_t addr, |
gdb_ps_write_buf_t buf, gdb_ps_size_t size) |
{ |
- return rw_common (1, ph, addr, (char *) buf, size); |
+ return rw_common (1, ph, addr, (gdb_byte *) buf, size); |
} |
/* Copies SIZE bytes from target process .text segment to debugger memory. */ |
@@ -901,7 +839,7 @@ ps_err_e |
ps_ptwrite (gdb_ps_prochandle_t ph, gdb_ps_addr_t addr, |
gdb_ps_write_buf_t buf, gdb_ps_size_t size) |
{ |
- return rw_common (1, ph, addr, (char *) buf, size); |
+ return rw_common (1, ph, addr, (gdb_byte *) buf, size); |
} |
/* Get general-purpose registers for LWP. */ |
@@ -914,8 +852,8 @@ ps_lgetregs (gdb_ps_prochandle_t ph, lwpid_t lwpid, prgregset_t gregset) |
old_chain = save_inferior_ptid (); |
- inferior_ptid = BUILD_LWP (lwpid, PIDGET (inferior_ptid)); |
- regcache = get_thread_arch_regcache (inferior_ptid, target_gdbarch); |
+ inferior_ptid = ptid_build (ptid_get_pid (inferior_ptid), lwpid, 0); |
+ regcache = get_thread_arch_regcache (inferior_ptid, target_gdbarch ()); |
target_fetch_registers (regcache, -1); |
fill_gregset (regcache, (gdb_gregset_t *) gregset, -1); |
@@ -936,8 +874,8 @@ ps_lsetregs (gdb_ps_prochandle_t ph, lwpid_t lwpid, |
old_chain = save_inferior_ptid (); |
- inferior_ptid = BUILD_LWP (lwpid, PIDGET (inferior_ptid)); |
- regcache = get_thread_arch_regcache (inferior_ptid, target_gdbarch); |
+ inferior_ptid = ptid_build (ptid_get_pid (inferior_ptid), lwpid, 0); |
+ regcache = get_thread_arch_regcache (inferior_ptid, target_gdbarch ()); |
supply_gregset (regcache, (const gdb_gregset_t *) gregset); |
target_store_registers (regcache, -1); |
@@ -964,26 +902,6 @@ ps_plog (const char *fmt, ...) |
ps_err_e |
ps_lgetxregsize (gdb_ps_prochandle_t ph, lwpid_t lwpid, int *xregsize) |
{ |
-#if 0 |
- int lwp_fd; |
- int regsize; |
- ps_err_e val; |
- |
- val = get_lwp_fd (ph, lwpid, &lwp_fd); |
- if (val != PS_OK) |
- return val; |
- |
- if (ioctl (lwp_fd, PIOCGXREGSIZE, ®size)) |
- { |
- if (errno == EINVAL) |
- return PS_NOFREGS; /* XXX Wrong code, but this is the closest |
- thing in proc_service.h */ |
- |
- print_sys_errmsg ("ps_lgetxregsize (): PIOCGXREGSIZE", errno); |
- return PS_ERR; |
- } |
-#endif |
- |
return PS_OK; |
} |
@@ -992,21 +910,6 @@ ps_lgetxregsize (gdb_ps_prochandle_t ph, lwpid_t lwpid, int *xregsize) |
ps_err_e |
ps_lgetxregs (gdb_ps_prochandle_t ph, lwpid_t lwpid, caddr_t xregset) |
{ |
-#if 0 |
- int lwp_fd; |
- ps_err_e val; |
- |
- val = get_lwp_fd (ph, lwpid, &lwp_fd); |
- if (val != PS_OK) |
- return val; |
- |
- if (ioctl (lwp_fd, PIOCGXREG, xregset)) |
- { |
- print_sys_errmsg ("ps_lgetxregs (): PIOCGXREG", errno); |
- return PS_ERR; |
- } |
-#endif |
- |
return PS_OK; |
} |
@@ -1015,21 +918,6 @@ ps_lgetxregs (gdb_ps_prochandle_t ph, lwpid_t lwpid, caddr_t xregset) |
ps_err_e |
ps_lsetxregs (gdb_ps_prochandle_t ph, lwpid_t lwpid, caddr_t xregset) |
{ |
-#if 0 |
- int lwp_fd; |
- ps_err_e val; |
- |
- val = get_lwp_fd (ph, lwpid, &lwp_fd); |
- if (val != PS_OK) |
- return val; |
- |
- if (ioctl (lwp_fd, PIOCSXREG, xregset)) |
- { |
- print_sys_errmsg ("ps_lsetxregs (): PIOCSXREG", errno); |
- return PS_ERR; |
- } |
-#endif |
- |
return PS_OK; |
} |
@@ -1044,8 +932,8 @@ ps_lgetfpregs (gdb_ps_prochandle_t ph, lwpid_t lwpid, |
old_chain = save_inferior_ptid (); |
- inferior_ptid = BUILD_LWP (lwpid, PIDGET (inferior_ptid)); |
- regcache = get_thread_arch_regcache (inferior_ptid, target_gdbarch); |
+ inferior_ptid = ptid_build (ptid_get_pid (inferior_ptid), lwpid, 0); |
+ regcache = get_thread_arch_regcache (inferior_ptid, target_gdbarch ()); |
target_fetch_registers (regcache, -1); |
fill_fpregset (regcache, (gdb_fpregset_t *) fpregset, -1); |
@@ -1066,8 +954,8 @@ ps_lsetfpregs (gdb_ps_prochandle_t ph, lwpid_t lwpid, |
old_chain = save_inferior_ptid (); |
- inferior_ptid = BUILD_LWP (lwpid, PIDGET (inferior_ptid)); |
- regcache = get_thread_arch_regcache (inferior_ptid, target_gdbarch); |
+ inferior_ptid = ptid_build (ptid_get_pid (inferior_ptid), lwpid, 0); |
+ regcache = get_thread_arch_regcache (inferior_ptid, target_gdbarch ()); |
supply_fpregset (regcache, (const gdb_fpregset_t *) fpregset); |
target_store_registers (regcache, -1); |
@@ -1108,16 +996,16 @@ ps_lgetLDT (gdb_ps_prochandle_t ph, lwpid_t lwpid, |
struct ssd *pldt) |
{ |
/* NOTE: only used on Solaris, therefore OK to refer to procfs.c. */ |
- extern struct ssd *procfs_find_LDT_entry (ptid_t); |
struct ssd *ret; |
/* FIXME: can't I get the process ID from the prochandle or |
something? */ |
- if (PIDGET (inferior_ptid) <= 0 || lwpid <= 0) |
+ if (ptid_get_pid (inferior_ptid) <= 0 || lwpid <= 0) |
return PS_BADLID; |
- ret = procfs_find_LDT_entry (BUILD_LWP (lwpid, PIDGET (inferior_ptid))); |
+ ret = procfs_find_LDT_entry (ptid_build (ptid_get_pid (inferior_ptid), |
+ lwpid, 0)); |
if (ret) |
{ |
memcpy (pldt, ret, sizeof (struct ssd)); |
@@ -1137,24 +1025,26 @@ solaris_pid_to_str (struct target_ops *ops, ptid_t ptid) |
{ |
static char buf[100]; |
- if (is_thread (ptid)) |
+ if (ptid_tid_p (ptid)) |
{ |
ptid_t lwp; |
lwp = thread_to_lwp (ptid, -2); |
- if (PIDGET (lwp) == -1) |
- sprintf (buf, "Thread %ld (defunct)", GET_THREAD (ptid)); |
- else if (PIDGET (lwp) != -2) |
- sprintf (buf, "Thread %ld (LWP %ld)", |
- GET_THREAD (ptid), GET_LWP (lwp)); |
+ if (ptid_get_pid (lwp) == -1) |
+ xsnprintf (buf, sizeof (buf), "Thread %ld (defunct)", |
+ ptid_get_tid (ptid)); |
+ else if (ptid_get_pid (lwp) != -2) |
+ xsnprintf (buf, sizeof (buf), "Thread %ld (LWP %ld)", |
+ ptid_get_tid (ptid), ptid_get_lwp (lwp)); |
else |
- sprintf (buf, "Thread %ld ", GET_THREAD (ptid)); |
+ xsnprintf (buf, sizeof (buf), "Thread %ld ", |
+ ptid_get_tid (ptid)); |
} |
- else if (GET_LWP (ptid) != 0) |
- sprintf (buf, "LWP %ld ", GET_LWP (ptid)); |
+ else if (ptid_get_lwp (ptid) != 0) |
+ xsnprintf (buf, sizeof (buf), "LWP %ld ", ptid_get_lwp (ptid)); |
else |
- sprintf (buf, "process %d ", PIDGET (ptid)); |
+ xsnprintf (buf, sizeof (buf), "process %d ", ptid_get_pid (ptid)); |
return buf; |
} |
@@ -1174,7 +1064,7 @@ sol_find_new_threads_callback (const td_thrhandle_t *th, void *ignored) |
if (retval != TD_OK) |
return -1; |
- ptid = BUILD_THREAD (ti.ti_tid, PIDGET (inferior_ptid)); |
+ ptid = ptid_build (ptid_get_pid (inferior_ptid), 0, ti.ti_tid); |
if (!in_thread_list (ptid) || is_exited (ptid)) |
add_thread (ptid); |
@@ -1241,32 +1131,28 @@ info_cb (const td_thrhandle_t *th, void *s) |
/* Print thr_create start function. */ |
if (ti.ti_startfunc != 0) |
{ |
- struct minimal_symbol *msym; |
- msym = lookup_minimal_symbol_by_pc (ti.ti_startfunc); |
- if (msym) |
- printf_filtered (" startfunc: %s\n", |
- SYMBOL_PRINT_NAME (msym)); |
- else |
- printf_filtered (" startfunc: %s\n", |
- paddress (target_gdbarch, ti.ti_startfunc)); |
+ const struct bound_minimal_symbol msym |
+ = lookup_minimal_symbol_by_pc (ti.ti_startfunc); |
+ |
+ printf_filtered (" startfunc=%s", |
+ msym.minsym |
+ ? SYMBOL_PRINT_NAME (msym.minsym) |
+ : paddress (target_gdbarch (), ti.ti_startfunc)); |
} |
/* If thread is asleep, print function that went to sleep. */ |
if (ti.ti_state == TD_THR_SLEEP) |
{ |
- struct minimal_symbol *msym; |
- msym = lookup_minimal_symbol_by_pc (ti.ti_pc); |
- if (msym) |
- printf_filtered (" - Sleep func: %s\n", |
- SYMBOL_PRINT_NAME (msym)); |
- else |
- printf_filtered (" - Sleep func: %s\n", |
- paddress (target_gdbarch, ti.ti_startfunc)); |
+ const struct bound_minimal_symbol msym |
+ = lookup_minimal_symbol_by_pc (ti.ti_pc); |
+ |
+ printf_filtered (" sleepfunc=%s", |
+ msym.minsym |
+ ? SYMBOL_PRINT_NAME (msym.minsym) |
+ : paddress (target_gdbarch (), ti.ti_pc)); |
} |
- /* Wrap up line, if necessary. */ |
- if (ti.ti_state != TD_THR_SLEEP && ti.ti_startfunc == 0) |
- printf_filtered ("\n"); /* don't you hate counting newlines? */ |
+ printf_filtered ("\n"); |
} |
else |
warning (_("info sol-thread: failed to get info for thread.")); |
@@ -1382,7 +1268,7 @@ _initialize_sol_thread (void) |
resolve (td_thr_getgregs); |
resolve (td_thr_setgregs); |
- add_target (&sol_thread_ops); |
+ complete_target_initialization (&sol_thread_ops); |
add_cmd ("sol-threads", class_maintenance, info_solthreads, |
_("Show info on Solaris user threads."), &maintenanceinfolist); |