aboutsummaryrefslogtreecommitdiff
path: root/gdb/sol-thread.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/sol-thread.c')
-rw-r--r--gdb/sol-thread.c49
1 files changed, 38 insertions, 11 deletions
diff --git a/gdb/sol-thread.c b/gdb/sol-thread.c
index 6c9ec45..68cde8a 100644
--- a/gdb/sol-thread.c
+++ b/gdb/sol-thread.c
@@ -119,12 +119,16 @@ static void sol_core_close PARAMS ((int quitting));
static void init_sol_thread_ops PARAMS ((void));
static void init_sol_core_ops PARAMS ((void));
-#define THREAD_FLAG 0x80000000
-#define is_thread(ARG) (((ARG) & THREAD_FLAG) != 0)
-#define is_lwp(ARG) (((ARG) & THREAD_FLAG) == 0)
-#define GET_LWP(LWP_ID) (TIDGET(LWP_ID))
-#define GET_THREAD(THREAD_ID) (((THREAD_ID) >> 16) & 0x7fff)
-#define BUILD_LWP(LWP_ID, PID) ((LWP_ID) << 16 | (PID))
+/* Default definitions: These must be defined in tm.h
+ if they are to be shared with a process module such as procfs. */
+
+#define THREAD_FLAG 0x80000000
+#define is_thread(ARG) (((ARG) & THREAD_FLAG) != 0)
+#define is_lwp(ARG) (((ARG) & THREAD_FLAG) == 0)
+#define GET_LWP(PID) TIDGET (PID)
+#define GET_THREAD(PID) (((PID) >> 16) & 0x7fff)
+#define BUILD_LWP(TID, PID) ((TID) << 16 | (PID))
+
#define BUILD_THREAD(THREAD_ID, PID) (THREAD_FLAG | BUILD_LWP (THREAD_ID, PID))
/* Pointers to routines from lithread_db resolved by dlopen() */
@@ -492,6 +496,7 @@ sol_thread_detach (args, from_tty)
char *args;
int from_tty;
{
+ inferior_pid = PIDGET (main_ph.pid);
unpush_target (&sol_thread_ops);
procfs_ops.to_detach (args, from_tty);
}
@@ -987,30 +992,40 @@ typedef size_t gdb_ps_size_t;
by the time we call anything in thread_db, these routines need to do
nothing. */
+/* Process stop */
+
ps_err_e
ps_pstop (gdb_ps_prochandle_t ph)
{
return PS_OK;
}
+/* Process continue */
+
ps_err_e
ps_pcontinue (gdb_ps_prochandle_t ph)
{
return PS_OK;
}
+/* LWP stop */
+
ps_err_e
ps_lstop (gdb_ps_prochandle_t ph, lwpid_t lwpid)
{
return PS_OK;
}
+/* LWP continue */
+
ps_err_e
ps_lcontinue (gdb_ps_prochandle_t ph, lwpid_t lwpid)
{
return PS_OK;
}
+/* Looks up the symbol LD_SYMBOL_NAME in the debugger's symbol table. */
+
ps_err_e
ps_pglobal_lookup (gdb_ps_prochandle_t ph, const char *ld_object_name,
const char *ld_symbol_name, paddr_t * ld_symbol_addr)
@@ -1071,6 +1086,8 @@ rw_common (int dowrite, const struct ps_prochandle *ph, paddr_t addr,
return PS_OK;
}
+/* Copies SIZE bytes from target process .data segment to debugger memory. */
+
ps_err_e
ps_pdread (gdb_ps_prochandle_t ph, paddr_t addr,
gdb_ps_read_buf_t buf, gdb_ps_size_t size)
@@ -1078,6 +1095,8 @@ ps_pdread (gdb_ps_prochandle_t ph, paddr_t addr,
return rw_common (0, ph, addr, buf, size);
}
+/* Copies SIZE bytes from debugger memory .data segment to target process. */
+
ps_err_e
ps_pdwrite (gdb_ps_prochandle_t ph, paddr_t addr,
gdb_ps_write_buf_t buf, gdb_ps_size_t size)
@@ -1085,6 +1104,8 @@ ps_pdwrite (gdb_ps_prochandle_t ph, paddr_t addr,
return rw_common (1, ph, addr, (char *) buf, size);
}
+/* Copies SIZE bytes from target process .text segment to debugger memory. */
+
ps_err_e
ps_ptread (gdb_ps_prochandle_t ph, paddr_t addr,
gdb_ps_read_buf_t buf, gdb_ps_size_t size)
@@ -1092,6 +1113,8 @@ ps_ptread (gdb_ps_prochandle_t ph, paddr_t addr,
return rw_common (0, ph, addr, buf, size);
}
+/* Copies SIZE bytes from debugger memory .text segment to target process. */
+
ps_err_e
ps_ptwrite (gdb_ps_prochandle_t ph, paddr_t addr,
gdb_ps_write_buf_t buf, gdb_ps_size_t size)
@@ -1099,7 +1122,7 @@ ps_ptwrite (gdb_ps_prochandle_t ph, paddr_t addr,
return rw_common (1, ph, addr, (char *) buf, size);
}
-/* Get integer regs */
+/* Get integer regs for LWP */
ps_err_e
ps_lgetregs (gdb_ps_prochandle_t ph, lwpid_t lwpid,
@@ -1122,7 +1145,7 @@ ps_lgetregs (gdb_ps_prochandle_t ph, lwpid_t lwpid,
return PS_OK;
}
-/* Set integer regs */
+/* Set integer regs for LWP */
ps_err_e
ps_lsetregs (gdb_ps_prochandle_t ph, lwpid_t lwpid,
@@ -1145,6 +1168,8 @@ ps_lsetregs (gdb_ps_prochandle_t ph, lwpid_t lwpid,
return PS_OK;
}
+/* Log a message (sends to gdb_stderr). */
+
void
ps_plog (const char *fmt,...)
{
@@ -1229,7 +1254,7 @@ ps_lsetxregs (gdb_ps_prochandle_t ph, lwpid_t lwpid, caddr_t xregset)
return PS_OK;
}
-/* Get floating-point regs. */
+/* Get floating-point regs for LWP */
ps_err_e
ps_lgetfpregs (gdb_ps_prochandle_t ph, lwpid_t lwpid,
@@ -1252,7 +1277,7 @@ ps_lgetfpregs (gdb_ps_prochandle_t ph, lwpid_t lwpid,
return PS_OK;
}
-/* Set floating-point regs. */
+/* Set floating-point regs for LWP */
ps_err_e
ps_lsetfpregs (gdb_ps_prochandle_t ph, lwpid_t lwpid,
@@ -1286,6 +1311,8 @@ ps_lsetfpregs (gdb_ps_prochandle_t ph, lwpid_t lwpid,
static int nldt_allocated = 0;
static struct ssd *ldt_bufp = NULL;
+/* Reads the local descriptor table of a LWP. */
+
ps_err_e
ps_lgetLDT (gdb_ps_prochandle_t ph, lwpid_t lwpid,
struct ssd *pldt)
@@ -1391,7 +1418,7 @@ sol_find_new_threads_callback (th, ignored)
return 0;
}
-void
+static void
sol_find_new_threads ()
{
/* don't do anything if init failed to resolve the libthread_db library */