* gdb_proc_service.h (struct ps_prochandle): Replace pid_t field
authorPedro Alves <palves@redhat.com>
Fri, 27 Feb 2009 20:34:41 +0000 (20:34 +0000)
committerPedro Alves <palves@redhat.com>
Fri, 27 Feb 2009 20:34:41 +0000 (20:34 +0000)
with a ptid_t field.
* linux-thread-db.c (thread_get_info_callback): Build the ptid
using the pid stored in proc_handle.ptid.
(thread_from_lwp, thread_db_attach_lwp, enable_thread_event)
(check_for_thread_db, thread_db_detach, check_event)
(thread_db_mourn_inferior, find_new_threads_callback)
(thread_db_find_new_threads_1): Adjust.
* proc-service.c (ps_xfer_memory, ps_lgetregs, ps_lsetregs)
(ps_lgetfpregs, ps_lsetfpregs, ps_getpid): Adjust.

gdb/ChangeLog
gdb/gdb_proc_service.h
gdb/linux-thread-db.c
gdb/proc-service.c

index 15c98f911c8b7a9bdbc6fade0bab20d939d83ac6..4d537be3cd049a732e9037560c87e599e3a50311 100644 (file)
@@ -1,3 +1,16 @@
+2009-02-27  Pedro Alves  <pedro@codesourcery.com>
+
+       * gdb_proc_service.h (struct ps_prochandle): Replace pid_t field
+       with a ptid_t field.
+       * linux-thread-db.c (thread_get_info_callback): Build the ptid
+       using the pid stored in proc_handle.ptid.
+       (thread_from_lwp, thread_db_attach_lwp, enable_thread_event)
+       (check_for_thread_db, thread_db_detach, check_event)
+       (thread_db_mourn_inferior, find_new_threads_callback)
+       (thread_db_find_new_threads_1): Adjust.
+       * proc-service.c (ps_xfer_memory, ps_lgetregs, ps_lsetregs)
+       (ps_lgetfpregs, ps_lsetfpregs, ps_getpid): Adjust.
+
 2009-02-27  Phil Muldoon  <pmuldoon@redhat.com>
 
        * valprint.c (read_string): Rework clean-up logic. Use
index 7495a4bab703392b7df397247499dafdc5594248..de62c9db89713e0873a44d6818d25a1c2ef7f052 100644 (file)
@@ -75,8 +75,8 @@ typedef prfpregset_t gdb_prfpregset_t;
 /* Structure that identifies the target process.  */
 struct ps_prochandle
 {
-  /* The process id is all we need.  */
-  pid_t pid;
+  /* The LWP we use for memory reads.  */
+  ptid_t ptid;
 };
 
 #endif /* gdb_proc_service.h */
index 52818231bab87e3fc140d308430d2f795c0e9434..22f50ccf93c926cf1d4174a353d7a120ae8606f3 100644 (file)
@@ -265,7 +265,7 @@ thread_get_info_callback (const td_thrhandle_t *thp, void *infop)
           thread_db_err_str (err));
 
   /* Fill the cache.  */
-  thread_ptid = ptid_build (GET_PID (inferior_ptid), ti.ti_lid, 0);
+  thread_ptid = ptid_build (GET_PID (proc_handle.ptid), ti.ti_lid, 0);
   thread_info = find_thread_pid (thread_ptid);
 
   /* In the case of a zombie thread, don't continue.  We don't want to
@@ -309,7 +309,7 @@ thread_from_lwp (ptid_t ptid)
   gdb_assert (GET_LWP (ptid) != 0);
 
   /* Access an lwp we know is stopped.  */
-  proc_handle.pid = GET_LWP (ptid);
+  proc_handle.ptid = ptid;
   err = td_ta_map_lwp2thr_p (thread_agent, GET_LWP (ptid), &th);
   if (err != TD_OK)
     error (_("Cannot find user-level thread for LWP %ld: %s"),
@@ -352,7 +352,7 @@ thread_db_attach_lwp (ptid_t ptid)
   gdb_assert (GET_LWP (ptid) != 0);
 
   /* Access an lwp we know is stopped.  */
-  proc_handle.pid = GET_LWP (ptid);
+  proc_handle.ptid = ptid;
 
   /* If we have only looked at the first thread before libpthread was
      initialized, we may not know its thread ID yet.  Make sure we do
@@ -457,7 +457,7 @@ enable_thread_event (td_thragent_t *thread_agent, int event, CORE_ADDR *bp)
   td_err_e err;
 
   /* Access an lwp we know is stopped.  */
-  proc_handle.pid = GET_LWP (inferior_ptid);
+  proc_handle.ptid = inferior_ptid;
 
   /* Get the breakpoint address for thread EVENT.  */
   err = td_ta_event_addr_p (thread_agent, event, &notify);
@@ -637,7 +637,7 @@ check_for_thread_db (void)
     return;
 
   /* Initialize the structure that identifies the child process.  */
-  proc_handle.pid = GET_PID (inferior_ptid);
+  proc_handle.ptid = inferior_ptid;
 
   /* Now attempt to open a connection to the thread library.  */
   err = td_ta_new_p (&proc_handle, &thread_agent);
@@ -779,7 +779,7 @@ thread_db_detach (struct target_ops *ops, char *args, int from_tty)
 
   /* Forget about the child's process ID.  We shouldn't need it
      anymore.  */
-  proc_handle.pid = 0;
+  proc_handle.ptid = null_ptid;
 
   /* Detach thread_db target ops.  */
   unpush_target (&thread_db_ops);
@@ -810,7 +810,7 @@ check_event (ptid_t ptid)
     return;
 
   /* Access an lwp we know is stopped.  */
-  proc_handle.pid = GET_LWP (ptid);
+  proc_handle.ptid = ptid;
 
   /* If we have only looked at the first thread before libpthread was
      initialized, we may not know its thread ID yet.  Make sure we do
@@ -934,7 +934,7 @@ thread_db_mourn_inferior (struct target_ops *ops)
 
   /* Forget about the child's process ID.  We shouldn't need it
      anymore.  */
-  proc_handle.pid = 0;
+  proc_handle.ptid = null_ptid;
 
   target_beneath->to_mourn_inferior (target_beneath);
 
@@ -963,7 +963,7 @@ find_new_threads_callback (const td_thrhandle_t *th_p, void *data)
   if (ti.ti_state == TD_THR_UNKNOWN || ti.ti_state == TD_THR_ZOMBIE)
     return 0;                  /* A zombie -- ignore.  */
 
-  ptid = ptid_build (GET_PID (inferior_ptid), ti.ti_lid, 0);
+  ptid = ptid_build (GET_PID (proc_handle.ptid), ti.ti_lid, 0);
 
   if (ti.ti_tid == 0)
     {
@@ -1008,7 +1008,7 @@ thread_db_find_new_threads_1 (void)
     return;
 
   /* Access an lwp we know is stopped.  */
-  proc_handle.pid = GET_LWP (ptid);
+  proc_handle.ptid = ptid;
   /* Iterate over all user-space threads to discover new threads.  */
   err = td_ta_thr_iter_p (thread_agent, find_new_threads_callback, NULL,
                          TD_THR_ANY_STATE, TD_THR_LOWEST_PRIORITY,
index 425afd9b0fb13331942ae9707fd85db132e6a0ce..dc0544054f92b68c80e71ace8de7e9e728c1174f 100644 (file)
@@ -97,7 +97,7 @@ ps_xfer_memory (const struct ps_prochandle *ph, psaddr_t addr,
   int ret;
   CORE_ADDR core_addr = ps_addr_to_core_addr (addr);
 
-  inferior_ptid = pid_to_ptid (ph->pid);
+  inferior_ptid = ph->ptid;
 
   if (write)
     ret = target_write_memory (core_addr, buf, len);
@@ -257,7 +257,7 @@ ps_lgetregs (gdb_ps_prochandle_t ph, lwpid_t lwpid, prgregset_t gregset)
   struct cleanup *old_chain = save_inferior_ptid ();
   struct regcache *regcache;
 
-  inferior_ptid = BUILD_LWP (lwpid, ph->pid);
+  inferior_ptid = BUILD_LWP (lwpid, ptid_get_pid (ph->ptid));
   regcache = get_thread_regcache (inferior_ptid);
 
   target_fetch_registers (regcache, -1);
@@ -276,7 +276,7 @@ ps_lsetregs (gdb_ps_prochandle_t ph, lwpid_t lwpid, const prgregset_t gregset)
   struct cleanup *old_chain = save_inferior_ptid ();
   struct regcache *regcache;
 
-  inferior_ptid = BUILD_LWP (lwpid, ph->pid);
+  inferior_ptid = BUILD_LWP (lwpid, ptid_get_pid (ph->ptid));
   regcache = get_thread_regcache (inferior_ptid);
 
   supply_gregset (regcache, (const gdb_gregset_t *) gregset);
@@ -296,7 +296,7 @@ ps_lgetfpregs (gdb_ps_prochandle_t ph, lwpid_t lwpid,
   struct cleanup *old_chain = save_inferior_ptid ();
   struct regcache *regcache;
 
-  inferior_ptid = BUILD_LWP (lwpid, ph->pid);
+  inferior_ptid = BUILD_LWP (lwpid, ptid_get_pid (ph->ptid));
   regcache = get_thread_regcache (inferior_ptid);
 
   target_fetch_registers (regcache, -1);
@@ -316,7 +316,7 @@ ps_lsetfpregs (gdb_ps_prochandle_t ph, lwpid_t lwpid,
   struct cleanup *old_chain = save_inferior_ptid ();
   struct regcache *regcache;
 
-  inferior_ptid = BUILD_LWP (lwpid, ph->pid);
+  inferior_ptid = BUILD_LWP (lwpid, ptid_get_pid (ph->ptid));
   regcache = get_thread_regcache (inferior_ptid);
 
   supply_fpregset (regcache, (const gdb_fpregset_t *) fpregset);
@@ -332,7 +332,7 @@ ps_lsetfpregs (gdb_ps_prochandle_t ph, lwpid_t lwpid,
 pid_t
 ps_getpid (gdb_ps_prochandle_t ph)
 {
-  return ph->pid;
+  return ptid_get_pid (ph->ptid);
 }
 
 /* Provide a prototype to silence -Wmissing-prototypes.  */