* linux-nat.c (linux_nat_wait): Adjust.
authorPedro Alves <palves@redhat.com>
Fri, 6 Feb 2009 22:21:26 +0000 (22:21 +0000)
committerPedro Alves <palves@redhat.com>
Fri, 6 Feb 2009 22:21:26 +0000 (22:21 +0000)
(linux_nat_pid_to_str): Adjust.  Remove call to thread_db_init.
* linux-nat.h (thread_db_init): Delete declaration.
* linux-thread-db.c (target_beneath): Delete.
(thread_db_init): Delete.
(thread_db_detach): Use find_target_beneath.
(thread_db_wait): Adjust interface.  Use find_target_beneath.
(thread_db_mourn_inferior): Use find_target_beneath.
(thread_db_can_async_p, thread_db_is_async_p, thread_db_async)
(thread_db_async_mask): Delete.
(thread_db_pid_to_str): Adjust interface.  Use
find_target_beneath.
(thread_db_get_thread_local_address): Adjust interface.  Use
find_target_beneath.
(init_thread_db_ops): Delete references to delete functions.
* target.c (update_current_target): Don't inherit or default
to_wait.  Don't inherit to_pid_to_str and
to_get_thread_local_address.
(target_translate_tls_address): Look for a pushed target that
implements to_get_thread_local_address, and use it instead of
checking for target_get_thread_local_address_p.
(target_wait, target_pid_to_str): Reimplement as functions.
(dummy_pid_to_str): New.
(init_dummy_target): Register it.
(debug_to_wait): Delete.
* target.h (struct target_ops): Make to_wait, to_pid_to_str and
to_get_thread_local_address accept a pointer to struct target_ops.
(target_wait): Delete macro, and declare as function.
(target_pid_to_str): Likewise.
(target_get_thread_local_address)
(target_get_thread_local_address_p): Delete.
(noprocess): Add NORETURN and ATTR_NORETURN tags.
* inf-ptrace.c (inf_ptrace_wait): Adjust.
(inf_ptrace_pid_to_str): New.
(inf_ptrace_target): Use inf_ptrace_pid_to_str.
* aix-thread.c (aix_thread_wait, aix_thread_pid_to_str): Adjust.
* bsd-kvm.c (bsd_kvm_pid_to_str): Adjust.
* bsd-uthread.c (bsd_uthread_wait, bsd_uthread_pid_to_str):
Adjust.
* corelow.c (core_pid_to_str): Adjust.
* darwin-nat.c (darwin_wait, darwin_pid_to_str): Adjust.
* dec-thread.c (dec_thread_wait, dec_thread_pid_to_str): Adjust.
* gnu-nat.c (gnu_wait, gnu_pid_to_str): Adjust.
* go32-nat.c (go32_wait, go32_pid_to_str): Adjust.
* hpux-thread.c (hpux_thread_wait): Adjust.
* inf-ttrace.c (inf_ttrace_wait, inf_ttrace_pid_to_str): Adjust.
* monitor.c (monitor_wait, monitor_pid_to_str): Adjust.
* nto-procfs.c (procfs_wait, procfs_pid_to_str): Adjust.
* procfs.c (procfs_pid_to_str): Adjust.
* remote-m32r-sdi.c (m32r_wait, m32r_pid_to_str): Adjust.
* remote-mips.c (mips_wait): Adjust.
* remote-sim.c (gdbsim_wait, gdbsim_pid_to_str): Adjust.
* remote.c (remote_wait, remote_pid_to_str)
(remote_get_thread_local_address): Adjust.
* rs6000-nat.c (rs6000_wait): Adjust.
* sol-thread.c (procfs_pid_to_str): Adjust declaration.
(sol_thread_wait, solaris_pid_to_str): Adjust.
* spu-linux-nat.c (spu_child_wait): Adjust.
* windows-nat.c (windows_wait, windows_pid_to_str): Adjust.

28 files changed:
gdb/ChangeLog
gdb/aix-thread.c
gdb/bsd-kvm.c
gdb/bsd-uthread.c
gdb/corelow.c
gdb/darwin-nat.c
gdb/dec-thread.c
gdb/gnu-nat.c
gdb/go32-nat.c
gdb/hpux-thread.c
gdb/inf-ptrace.c
gdb/inf-ttrace.c
gdb/linux-nat.c
gdb/linux-nat.h
gdb/linux-thread-db.c
gdb/monitor.c
gdb/nto-procfs.c
gdb/procfs.c
gdb/remote-m32r-sdi.c
gdb/remote-mips.c
gdb/remote-sim.c
gdb/remote.c
gdb/rs6000-nat.c
gdb/sol-thread.c
gdb/spu-linux-nat.c
gdb/target.c
gdb/target.h
gdb/windows-nat.c

index 0f28a820d15123bf5d06925037982e33c04e3371..aab098d3f3679edbec605a61e44e0fcf23e72920 100644 (file)
@@ -1,3 +1,65 @@
+2009-02-06  Pedro Alves  <pedro@codesourcery.com>
+
+       * linux-nat.c (linux_nat_wait): Adjust.
+       (linux_nat_pid_to_str): Adjust.  Remove call to thread_db_init.
+       * linux-nat.h (thread_db_init): Delete declaration.
+       * linux-thread-db.c (target_beneath): Delete.
+       (thread_db_init): Delete.
+       (thread_db_detach): Use find_target_beneath.
+       (thread_db_wait): Adjust interface.  Use find_target_beneath.
+       (thread_db_mourn_inferior): Use find_target_beneath.
+       (thread_db_can_async_p, thread_db_is_async_p, thread_db_async)
+       (thread_db_async_mask): Delete.
+       (thread_db_pid_to_str): Adjust interface.  Use
+       find_target_beneath.
+       (thread_db_get_thread_local_address): Adjust interface.  Use
+       find_target_beneath.
+       (init_thread_db_ops): Delete references to delete functions.
+       * target.c (update_current_target): Don't inherit or default
+       to_wait.  Don't inherit to_pid_to_str and
+       to_get_thread_local_address.
+       (target_translate_tls_address): Look for a pushed target that
+       implements to_get_thread_local_address, and use it instead of
+       checking for target_get_thread_local_address_p.
+       (target_wait, target_pid_to_str): Reimplement as functions.
+       (dummy_pid_to_str): New.
+       (init_dummy_target): Register it.
+       (debug_to_wait): Delete.
+       * target.h (struct target_ops): Make to_wait, to_pid_to_str and
+       to_get_thread_local_address accept a pointer to struct target_ops.
+       (target_wait): Delete macro, and declare as function.
+       (target_pid_to_str): Likewise.
+       (target_get_thread_local_address)
+       (target_get_thread_local_address_p): Delete.
+       (noprocess): Add NORETURN and ATTR_NORETURN tags.
+       * inf-ptrace.c (inf_ptrace_wait): Adjust.
+       (inf_ptrace_pid_to_str): New.
+       (inf_ptrace_target): Use inf_ptrace_pid_to_str.
+       * aix-thread.c (aix_thread_wait, aix_thread_pid_to_str): Adjust.
+       * bsd-kvm.c (bsd_kvm_pid_to_str): Adjust.
+       * bsd-uthread.c (bsd_uthread_wait, bsd_uthread_pid_to_str):
+       Adjust.
+       * corelow.c (core_pid_to_str): Adjust.
+       * darwin-nat.c (darwin_wait, darwin_pid_to_str): Adjust.
+       * dec-thread.c (dec_thread_wait, dec_thread_pid_to_str): Adjust.
+       * gnu-nat.c (gnu_wait, gnu_pid_to_str): Adjust.
+       * go32-nat.c (go32_wait, go32_pid_to_str): Adjust.
+       * hpux-thread.c (hpux_thread_wait): Adjust.
+       * inf-ttrace.c (inf_ttrace_wait, inf_ttrace_pid_to_str): Adjust.
+       * monitor.c (monitor_wait, monitor_pid_to_str): Adjust.
+       * nto-procfs.c (procfs_wait, procfs_pid_to_str): Adjust.
+       * procfs.c (procfs_pid_to_str): Adjust.
+       * remote-m32r-sdi.c (m32r_wait, m32r_pid_to_str): Adjust.
+       * remote-mips.c (mips_wait): Adjust.
+       * remote-sim.c (gdbsim_wait, gdbsim_pid_to_str): Adjust.
+       * remote.c (remote_wait, remote_pid_to_str)
+       (remote_get_thread_local_address): Adjust.
+       * rs6000-nat.c (rs6000_wait): Adjust.
+       * sol-thread.c (procfs_pid_to_str): Adjust declaration.
+       (sol_thread_wait, solaris_pid_to_str): Adjust.
+       * spu-linux-nat.c (spu_child_wait): Adjust.
+       * windows-nat.c (windows_wait, windows_pid_to_str): Adjust.
+
 2009-02-06  Tom Tromey  <tromey@redhat.com>
 
        * Makefile.in (SUBDIR_PYTHON_OBS): Add python-cmd.o.
index 04570c66793e535c09073c3e67f801a4419c7d9c..051de07d15b3b716a69c476dac8d088bc98e8179 100644 (file)
@@ -997,14 +997,15 @@ aix_thread_resume (ptid_t ptid, int step, enum target_signal sig)
    thread.  */
 
 static ptid_t
-aix_thread_wait (ptid_t ptid, struct target_waitstatus *status)
+aix_thread_wait (struct target_ops *ops,
+                ptid_t ptid, struct target_waitstatus *status)
 {
   struct cleanup *cleanup = save_inferior_ptid ();
 
   pid_to_prc (&ptid);
 
   inferior_ptid = pid_to_ptid (PIDGET (inferior_ptid));
-  ptid = base_target.to_wait (ptid, status);
+  ptid = base_target.to_wait (&base_target, ptid, status);
   do_cleanups (cleanup);
 
   if (PIDGET (ptid) == -1)
@@ -1691,12 +1692,12 @@ aix_thread_thread_alive (ptid_t ptid)
    "info threads" output.  */
 
 static char *
-aix_thread_pid_to_str (ptid_t ptid)
+aix_thread_pid_to_str (struct target_ops *ops, ptid_t ptid)
 {
   static char *ret = NULL;
 
   if (!PD_TID (ptid))
-    return base_target.to_pid_to_str (ptid);
+    return base_target.to_pid_to_str (&base_target, ptid);
 
   /* Free previous return value; a new one will be allocated by
      xstrprintf().  */
index 46d6b6bed622bd8746809fb7bf3d91edd7538a8d..84ca680b6d7c328b8cb4f14ce4a41db98f2be8b2 100644 (file)
@@ -316,7 +316,7 @@ bsd_kvm_thread_alive (ptid_t ptid)
 }
 
 static char *
-bsd_kvm_pid_to_str (ptid_t ptid)
+bsd_kvm_pid_to_str (struct target_ops *ops, ptid_t ptid)
 {
   static char buf[64];
   xsnprintf (buf, sizeof buf, "<kvm>");
index 24b2e2efa93d20b5dbc10c9408ea74b1246d88e0..ecbad76782c205019f4fcdd6557d038566b8b6c7 100644 (file)
@@ -340,12 +340,14 @@ bsd_uthread_xfer_partial (struct target_ops *ops, enum target_object object,
 }
 
 static ptid_t
-bsd_uthread_wait (ptid_t ptid, struct target_waitstatus *status)
+bsd_uthread_wait (struct target_ops *ops,
+                 ptid_t ptid, struct target_waitstatus *status)
 {
   CORE_ADDR addr;
+  struct target_ops *beneath = find_target_beneath (bsd_uthread_ops_hack);
 
   /* Pass the request to the layer beneath.  */
-  ptid = find_target_beneath (bsd_uthread_ops_hack)->to_wait (ptid, status);
+  ptid = beneath->to_wait (beneath, ptid, status);
 
   /* If the process is no longer alive, there's no point in figuring
      out the thread ID.  It will fail anyway.  */
@@ -487,7 +489,7 @@ bsd_uthread_extra_thread_info (struct thread_info *info)
 }
 
 static char *
-bsd_uthread_pid_to_str (ptid_t ptid)
+bsd_uthread_pid_to_str (struct target_ops *ops, ptid_t ptid)
 {
   if (ptid_get_tid (ptid) != 0)
     {
index d8148318979cad1624ce703f331f7dddd9743f18..2d159b4df6e7be77675709be4ee93b28428ad824 100644 (file)
@@ -680,7 +680,7 @@ core_read_description (struct target_ops *target)
 }
 
 static char *
-core_pid_to_str (ptid_t ptid)
+core_pid_to_str (struct target_ops *ops, ptid_t ptid)
 {
   static char buf[64];
 
index eac05bafbe4c6d700d75a0bdbabcdd6a2f67aa2c..340ef35654c8857d6a1bc895635f13240d50f222 100644 (file)
@@ -89,8 +89,6 @@ static void darwin_stop (ptid_t);
 static void darwin_resume (ptid_t ptid, int step,
                           enum target_signal signal);
 
-static ptid_t darwin_wait (ptid_t ptid, struct target_waitstatus *status);
-
 static void darwin_mourn_inferior (struct target_ops *ops);
 
 static int darwin_lookup_task (char *args, task_t * ptask, int *ppid);
@@ -106,8 +104,6 @@ static void darwin_create_inferior (struct target_ops *ops, char *exec_file,
 
 static void darwin_files_info (struct target_ops *ops);
 
-static char *darwin_pid_to_str (ptid_t tpid);
-
 static int darwin_thread_alive (ptid_t tpid);
 
 /* Current inferior.  */
@@ -483,7 +479,8 @@ catch_exception_raise (mach_port_t port,
 }
 
 static ptid_t
-darwin_wait (ptid_t ptid, struct target_waitstatus *status)
+darwin_wait (struct target_ops *ops,
+            ptid_t ptid, struct target_waitstatus *status)
 {
   kern_return_t kret;
   mach_msg_header_t *hdr = &msgin.hdr;
@@ -1049,7 +1046,7 @@ darwin_files_info (struct target_ops *ops)
 }
 
 static char *
-darwin_pid_to_str (ptid_t ptid)
+darwin_pid_to_str (struct target_ops *ops, ptid_t ptid)
 {
   static char buf[128];
 
index 02eb56d334f337c3974e2927c67bbca5254d6255..8398e8d266a7bbb4f2104c4f1e267acb138cb777 100644 (file)
@@ -453,13 +453,14 @@ get_active_ptid (void)
 /* The "to_wait" method of the dec_thread_ops.  */
 
 static ptid_t
-dec_thread_wait (ptid_t ptid, struct target_waitstatus *status)
+dec_thread_wait (struct target_ops *ops,
+                ptid_t ptid, struct target_waitstatus *status)
 {
   ptid_t active_ptid;
 
   debug ("dec_thread_wait");
 
-  ptid = base_target.to_wait (ptid, status);
+  ptid = base_target.to_wait (&base_target, ptid, status);
 
   /* The ptid returned by the base_target is the ptid of the process.
      We need to find which thread is currently active and return its
@@ -622,12 +623,12 @@ dec_thread_thread_alive (ptid_t ptid)
 /* The "to_pid_to_str" method of the dec_thread_ops.  */
 
 static char *
-dec_thread_pid_to_str (ptid_t ptid)
+dec_thread_pid_to_str (struct target_ops *ops, ptid_t ptid)
 {
   static char *ret = NULL;
 
   if (ptid_get_tid (ptid) == 0)
-    return base_target.to_pid_to_str (ptid);
+    return base_target.to_pid_to_str (&base_target, ptid);
 
   /* Free previous return value; a new one will be allocated by
      xstrprintf().  */
index 08971cfc8c286874dfc2f09e766110d681030c9a..af0404726bc4c682c2b9b30b1454c2b5771c7e1b 100644 (file)
@@ -1433,7 +1433,8 @@ struct inf *waiting_inf;
 
 /* Wait for something to happen in the inferior, returning what in STATUS. */
 static ptid_t
-gnu_wait (ptid_t ptid, struct target_waitstatus *status)
+gnu_wait (struct target_ops *ops,
+         ptid_t ptid, struct target_waitstatus *status)
 {
   struct msg
     {
@@ -2594,7 +2595,7 @@ proc_string (struct proc *proc)
 }
 
 static char *
-gnu_pid_to_str (ptid_t ptid)
+gnu_pid_to_str (struct target_ops *ops, ptid_t ptid)
 {
   struct inf *inf = gnu_current_inf;
   int tid = ptid_get_tid (ptid);
index 230c7b7f2f1601dc66ece8e8915ee6b8979d3604..be0de4a3552f5f91678406d7bf691e2338c8925f 100644 (file)
@@ -171,8 +171,6 @@ static void go32_attach (char *args, int from_tty);
 static void go32_detach (char *args, int from_tty);
 static void go32_resume (ptid_t ptid, int step,
                          enum target_signal siggnal);
-static ptid_t go32_wait (ptid_t ptid,
-                               struct target_waitstatus *status);
 static void go32_fetch_registers (struct regcache *, int regno);
 static void store_register (const struct regcache *, int regno);
 static void go32_store_registers (struct regcache *, int regno);
@@ -347,7 +345,8 @@ go32_resume (ptid_t ptid, int step, enum target_signal siggnal)
 static char child_cwd[FILENAME_MAX];
 
 static ptid_t
-go32_wait (ptid_t ptid, struct target_waitstatus *status)
+go32_wait (struct target_ops *ops,
+          ptid_t ptid, struct target_waitstatus *status)
 {
   int i;
   unsigned char saved_opcode;
@@ -866,7 +865,7 @@ go32_thread_alive (ptid_t ptid)
 }
 
 static char *
-go32_pid_to_str (ptid_t ptid)
+go32_pid_to_str (struct target_ops *ops, ptid_t ptid)
 {
   static char buf[64];
   xsnprintf (buf, sizeof buf, "Thread <main>");
index 9184bf1534124533cace95f88e50b122b8aec4c8..1c2daa0f3f4bf612d69062b23035acd044dd3f38 100644 (file)
@@ -191,7 +191,8 @@ hpux_thread_resume (ptid_t ptid, int step, enum target_signal signo)
    to a LWP id, and vice versa on the way out.  */
 
 static ptid_t
-hpux_thread_wait (ptid_t ptid, struct target_waitstatus *ourstatus)
+hpux_thread_wait (struct target_ops *ops,
+                 ptid_t ptid, struct target_waitstatus *ourstatus)
 {
   ptid_t rtnval;
   struct cleanup *old_chain;
@@ -203,7 +204,8 @@ hpux_thread_wait (ptid_t ptid, struct target_waitstatus *ourstatus)
   if (!ptid_equal (ptid, minus_one_ptid))
     ptid = main_ptid;
 
-  rtnval = deprecated_child_ops.to_wait (ptid, ourstatus);
+  rtnval = deprecated_child_ops.to_wait (&deprecated_child_ops,
+                                        ptid, ourstatus);
 
   rtnval = find_active_thread ();
 
index 76cbecc291a934b3940acd51dcddccdb5c8178f9..06792007cdfc941b191ccc0c53e650759345be05 100644 (file)
@@ -385,7 +385,8 @@ inf_ptrace_resume (ptid_t ptid, int step, enum target_signal signal)
    the status in *OURSTATUS.  */
 
 static ptid_t
-inf_ptrace_wait (ptid_t ptid, struct target_waitstatus *ourstatus)
+inf_ptrace_wait (struct target_ops *ops,
+                ptid_t ptid, struct target_waitstatus *ourstatus)
 {
   pid_t pid;
   int status, save_errno;
@@ -615,6 +616,12 @@ inf_ptrace_files_info (struct target_ops *ignore)
                   target_pid_to_str (inferior_ptid));
 }
 
+static char *
+inf_ptrace_pid_to_str (struct target_ops *ops, ptid_t ptid)
+{
+  return normal_pid_to_str (ptid);
+}
+
 /* Create a prototype ptrace target.  The client can override it with
    local methods.  */
 
@@ -637,7 +644,7 @@ inf_ptrace_target (void)
 #endif
   t->to_mourn_inferior = inf_ptrace_mourn_inferior;
   t->to_thread_alive = inf_ptrace_thread_alive;
-  t->to_pid_to_str = normal_pid_to_str;
+  t->to_pid_to_str = inf_ptrace_pid_to_str;
   t->to_stop = inf_ptrace_stop;
   t->to_xfer_partial = inf_ptrace_xfer_partial;
 
index 5255828e21d5c461f34c71c1a42e16a7c237b047..f1284400ec40e27eb2414cf26f7df272f27f01f3 100644 (file)
@@ -915,7 +915,8 @@ inf_ttrace_resume (ptid_t ptid, int step, enum target_signal signal)
 }
 
 static ptid_t
-inf_ttrace_wait (ptid_t ptid, struct target_waitstatus *ourstatus)
+inf_ttrace_wait (struct target_ops *ops,
+                ptid_t ptid, struct target_waitstatus *ourstatus)
 {
   pid_t pid = ptid_get_pid (ptid);
   lwpid_t lwpid = ptid_get_lwp (ptid);
@@ -1252,7 +1253,7 @@ inf_ttrace_extra_thread_info (struct thread_info *info)
 }
 
 static char *
-inf_ttrace_pid_to_str (ptid_t ptid)
+inf_ttrace_pid_to_str (struct target_ops *ops, ptid_t ptid)
 {
   pid_t pid = ptid_get_pid (ptid);
   lwpid_t lwpid = ptid_get_lwp (ptid);
index 20f1ea53dd0cc2bcaa3190c61e20aa7b15e01af3..33b05fa455d55542257040924a657112bb2ef1a1 100644 (file)
@@ -2776,7 +2776,8 @@ local_event_queue_to_pipe (void)
 }
 
 static ptid_t
-linux_nat_wait (ptid_t ptid, struct target_waitstatus *ourstatus)
+linux_nat_wait (struct target_ops *ops,
+               ptid_t ptid, struct target_waitstatus *ourstatus)
 {
   struct lwp_info *lp = NULL;
   int options = 0;
@@ -3266,7 +3267,7 @@ linux_nat_thread_alive (ptid_t ptid)
 }
 
 static char *
-linux_nat_pid_to_str (ptid_t ptid)
+linux_nat_pid_to_str (struct target_ops *ops, ptid_t ptid)
 {
   static char buf[64];
 
@@ -4659,10 +4660,6 @@ linux_nat_add_target (struct target_ops *t)
      also want to be used for single-threaded processes.  */
 
   add_target (t);
-
-  /* TODO: Eliminate this and have libthread_db use
-     find_target_beneath.  */
-  thread_db_init (t);
 }
 
 /* Register a method to call whenever a new thread is attached.  */
index 13a1088389cd70df8020de3f1fb659f51e0e3f24..0985e8409f58edd31b10b6b6f64d3630f65a8668 100644 (file)
@@ -94,9 +94,6 @@ extern struct lwp_info *lwp_list;
 /* Attempt to initialize libthread_db.  */
 void check_for_thread_db (void);
 
-/* Tell the thread_db layer what native target operations to use.  */
-void thread_db_init (struct target_ops *);
-
 int thread_db_attach_lwp (ptid_t ptid);
 
 /* Find process PID's pending signal set from /proc/pid/status.  */
index eced854b73a237df961e76dbed41cb28791e3f11..d3371d053a402070cdb934e77a9f5720bf87672c 100644 (file)
@@ -80,9 +80,6 @@
 /* This module's target vector.  */
 static struct target_ops thread_db_ops;
 
-/* The target vector that we call for things this module can't handle.  */
-static struct target_ops *target_beneath;
-
 /* Non-zero if we're using this module's target vector.  */
 static int using_thread_db;
 
@@ -379,12 +376,6 @@ thread_db_attach_lwp (ptid_t ptid)
   return 1;
 }
 
-void
-thread_db_init (struct target_ops *target)
-{
-  target_beneath = target;
-}
-
 static void *
 verbose_dlsym (void *handle, const char *name)
 {
@@ -782,6 +773,8 @@ detach_thread (ptid_t ptid)
 static void
 thread_db_detach (struct target_ops *ops, char *args, int from_tty)
 {
+  struct target_ops *target_beneath = find_target_beneath (ops);
+
   disable_thread_event_reporting ();
 
   /* Forget about the child's process ID.  We shouldn't need it
@@ -885,9 +878,12 @@ check_event (ptid_t ptid)
 }
 
 static ptid_t
-thread_db_wait (ptid_t ptid, struct target_waitstatus *ourstatus)
+thread_db_wait (struct target_ops *ops,
+               ptid_t ptid, struct target_waitstatus *ourstatus)
 {
-  ptid = target_beneath->to_wait (ptid, ourstatus);
+  struct target_ops *beneath = find_target_beneath (ops);
+
+  ptid = beneath->to_wait (beneath, ptid, ourstatus);
 
   if (ourstatus->kind == TARGET_WAITKIND_IGNORE)
     return ptid;
@@ -934,6 +930,8 @@ thread_db_wait (ptid_t ptid, struct target_waitstatus *ourstatus)
 static void
 thread_db_mourn_inferior (struct target_ops *ops)
 {
+  struct target_ops *target_beneath = find_target_beneath (ops);
+
   /* Forget about the child's process ID.  We shouldn't need it
      anymore.  */
   proc_handle.pid = 0;
@@ -949,31 +947,6 @@ thread_db_mourn_inferior (struct target_ops *ops)
   using_thread_db = 0;
 }
 
-static int
-thread_db_can_async_p (void)
-{
-  return target_beneath->to_can_async_p ();
-}
-
-static int
-thread_db_is_async_p (void)
-{
-  return target_beneath->to_is_async_p ();
-}
-
-static void
-thread_db_async (void (*callback) (enum inferior_event_type event_type,
-                                  void *context), void *context)
-{
-  return target_beneath->to_async (callback, context);
-}
-
-static int
-thread_db_async_mask (int mask)
-{
-  return target_beneath->to_async_mask (mask);
-}
-
 static int
 find_new_threads_callback (const td_thrhandle_t *th_p, void *data)
 {
@@ -1045,9 +1018,10 @@ thread_db_find_new_threads (void)
 }
 
 static char *
-thread_db_pid_to_str (ptid_t ptid)
+thread_db_pid_to_str (struct target_ops *ops, ptid_t ptid)
 {
   struct thread_info *thread_info = find_thread_pid (ptid);
+  struct target_ops *beneath;
 
   if (thread_info != NULL && thread_info->private != NULL)
     {
@@ -1062,8 +1036,9 @@ thread_db_pid_to_str (ptid_t ptid)
       return buf;
     }
 
-  if (target_beneath->to_pid_to_str (ptid))
-    return target_beneath->to_pid_to_str (ptid);
+  beneath = find_target_beneath (ops);
+  if (beneath->to_pid_to_str (beneath, ptid))
+    return beneath->to_pid_to_str (beneath, ptid);
 
   return normal_pid_to_str (ptid);
 }
@@ -1087,11 +1062,13 @@ thread_db_extra_thread_info (struct thread_info *info)
    is stored at OFFSET within the thread local storage for thread PTID.  */
 
 static CORE_ADDR
-thread_db_get_thread_local_address (ptid_t ptid,
+thread_db_get_thread_local_address (struct target_ops *ops,
+                                   ptid_t ptid,
                                    CORE_ADDR lm,
                                    CORE_ADDR offset)
 {
   struct thread_info *thread_info;
+  struct target_ops *beneath;
 
   /* If we have not discovered any threads yet, check now.  */
   if (!have_threads ())
@@ -1141,8 +1118,9 @@ thread_db_get_thread_local_address (ptid_t ptid,
              : (CORE_ADDR) (uintptr_t) address);
     }
 
-  if (target_beneath->to_get_thread_local_address)
-    return target_beneath->to_get_thread_local_address (ptid, lm, offset);
+  beneath = find_target_beneath (ops);
+  if (beneath->to_get_thread_local_address)
+    return beneath->to_get_thread_local_address (beneath, ptid, lm, offset);
   else
     throw_error (TLS_GENERIC_ERROR,
                 _("TLS not supported on this target"));
@@ -1193,10 +1171,6 @@ init_thread_db_ops (void)
   thread_db_ops.to_get_thread_local_address
     = thread_db_get_thread_local_address;
   thread_db_ops.to_extra_thread_info = thread_db_extra_thread_info;
-  thread_db_ops.to_can_async_p = thread_db_can_async_p;
-  thread_db_ops.to_is_async_p = thread_db_is_async_p;
-  thread_db_ops.to_async = thread_db_async;
-  thread_db_ops.to_async_mask = thread_db_async_mask;
   thread_db_ops.to_get_ada_task_ptid = thread_db_get_ada_task_ptid;
   thread_db_ops.to_magic = OPS_MAGIC;
 }
index 2812e4368ae040965628d2a0cfa706c9b94941de..9a38dbc504e9e2308e2d6483a2b9864711f23c81 100644 (file)
@@ -1063,7 +1063,8 @@ monitor_wait_filter (char *buf,
    status just as `wait' would.  */
 
 static ptid_t
-monitor_wait (ptid_t ptid, struct target_waitstatus *status)
+monitor_wait (struct target_ops *ops,
+             ptid_t ptid, struct target_waitstatus *status)
 {
   int old_timeout = timeout;
   char buf[TARGET_BUF_SIZE];
@@ -2244,7 +2245,7 @@ monitor_thread_alive (ptid_t ptid)
    buffer.  */
 
 static char *
-monitor_pid_to_str (ptid_t ptid)
+monitor_pid_to_str (struct target_ops *ops, ptid_t ptid)
 {
   static char buf[64];
 
index 40fbee074529cfd24bf62be5bde7e89ebff21a05..b8bfcbe142aab86969e25d5d43fb03c6210998f6 100644 (file)
@@ -59,8 +59,6 @@ static void procfs_open (char *, int);
 
 static int procfs_can_run (void);
 
-static ptid_t procfs_wait (ptid_t, struct target_waitstatus *);
-
 static int procfs_xfer_memory (CORE_ADDR, gdb_byte *, int, int,
                               struct mem_attrib *attrib,
                               struct target_ops *);
@@ -626,7 +624,8 @@ nto_interrupt (int signo)
 }
 
 static ptid_t
-procfs_wait (ptid_t ptid, struct target_waitstatus *ourstatus)
+procfs_wait (struct target_ops *ops,
+            ptid_t ptid, struct target_waitstatus *ourstatus)
 {
   sigset_t set;
   siginfo_t info;
@@ -1265,7 +1264,7 @@ procfs_thread_info (pid_t pid, short tid)
 }
 
 char *
-procfs_pid_to_str (ptid_t ptid)
+procfs_pid_to_str (struct target_ops *ops, ptid_t ptid)
 {
   static char buf[1024];
   int pid, tid, n;
index 4587fdd37b25fdad05be7c87249ff8fc64220477..bc49ffe3a8d3cca679f6076c3bfae116cb4667df 100644 (file)
@@ -126,7 +126,8 @@ static void procfs_kill_inferior (void);
 static void procfs_mourn_inferior (struct target_ops *ops);
 static void procfs_create_inferior (struct target_ops *, char *, 
                                    char *, char **, int);
-static ptid_t procfs_wait (ptid_t, struct target_waitstatus *);
+static ptid_t procfs_wait (struct target_ops *,
+                          ptid_t, struct target_waitstatus *);
 static int procfs_xfer_memory (CORE_ADDR, gdb_byte *, int, int,
                               struct mem_attrib *attrib,
                               struct target_ops *);
@@ -139,7 +140,7 @@ static LONGEST procfs_xfer_partial (struct target_ops *ops,
 static int procfs_thread_alive (ptid_t);
 
 void procfs_find_new_threads (void);
-char *procfs_pid_to_str (ptid_t);
+char *procfs_pid_to_str (struct target_ops *, ptid_t);
 
 static int proc_find_memory_regions (int (*) (CORE_ADDR,
                                              unsigned long,
@@ -3969,7 +3970,8 @@ syscall_is_lwp_create (procinfo *pi, int scall)
  */
 
 static ptid_t
-procfs_wait (ptid_t ptid, struct target_waitstatus *status)
+procfs_wait (struct target_ops *ops,
+            ptid_t ptid, struct target_waitstatus *status)
 {
   /* First cut: loosely based on original version 2.1 */
   procinfo *pi;
@@ -5270,7 +5272,7 @@ procfs_thread_alive (ptid_t ptid)
 /* Convert PTID to a string.  Returns the string in a static buffer.  */
 
 char *
-procfs_pid_to_str (ptid_t ptid)
+procfs_pid_to_str (struct target_ops *ops, ptid_t ptid)
 {
   static char buf[80];
 
index ab97cbb1eab2c95b016afbdc3f9173f2d041cc43..357b330a68a7a64faa980d9473fe9c46d358efe0 100644 (file)
@@ -693,7 +693,8 @@ gdb_cntrl_c (int signo)
 }
 
 static ptid_t
-m32r_wait (ptid_t ptid, struct target_waitstatus *status)
+m32r_wait (struct target_ops *ops,
+          ptid_t ptid, struct target_waitstatus *status)
 {
   static RETSIGTYPE (*prev_sigint) ();
   unsigned long bp_addr, pc_addr;
@@ -1507,7 +1508,7 @@ m32r_thread_alive (ptid_t ptid)
    buffer.  */
 
 static char *
-m32r_pid_to_str (ptid_t ptid)
+m32r_pid_to_str (struct target_ops *ops, ptid_t ptid)
 {
   static char buf[64];
 
index 5c174edb69ba267b5bd1dd19c6b6663ef183673e..26cda1ac1f0a0f8a18a1da1bcaa2cbc47cc06216 100644 (file)
@@ -89,9 +89,6 @@ static void mips_detach (struct target_ops *ops, char *args, int from_tty);
 static void mips_resume (ptid_t ptid, int step,
                          enum target_signal siggnal);
 
-static ptid_t mips_wait (ptid_t ptid,
-                               struct target_waitstatus *status);
-
 static int mips_map_regno (struct gdbarch *, int);
 
 static void mips_fetch_registers (struct regcache *regcache, int regno);
@@ -1703,7 +1700,8 @@ mips_signal_from_protocol (int sig)
 /* Wait until the remote stops, and return a wait status.  */
 
 static ptid_t
-mips_wait (ptid_t ptid, struct target_waitstatus *status)
+mips_wait (struct target_ops *ops,
+          ptid_t ptid, struct target_waitstatus *status)
 {
   int rstatus;
   int err;
index 5b9d2d3155888d880b0f1a527cb75d75a22cb70b..3ad87fa25edc9f15349103f5d0d3cee23369528d 100644 (file)
@@ -88,8 +88,6 @@ static void gdbsim_detach (struct target_ops *ops, char *args, int from_tty);
 
 static void gdbsim_resume (ptid_t ptid, int step, enum target_signal siggnal);
 
-static ptid_t gdbsim_wait (ptid_t ptid, struct target_waitstatus *status);
-
 static void gdbsim_prepare_to_store (struct regcache *regcache);
 
 static void gdbsim_files_info (struct target_ops *target);
@@ -680,7 +678,8 @@ gdbsim_cntrl_c (int signo)
 }
 
 static ptid_t
-gdbsim_wait (ptid_t ptid, struct target_waitstatus *status)
+gdbsim_wait (struct target_ops *ops,
+            ptid_t ptid, struct target_waitstatus *status)
 {
   static RETSIGTYPE (*prev_sigint) ();
   int sigrc = 0;
@@ -874,7 +873,7 @@ gdbsim_thread_alive (ptid_t ptid)
    buffer.  */
 
 static char *
-gdbsim_pid_to_str (ptid_t ptid)
+gdbsim_pid_to_str (struct target_ops *ops, ptid_t ptid)
 {
   static char buf[64];
 
index 8cb37faf6245ee3c88d9b610b1c327023df9b691..aeeb8b8a8730ed1a27fe6dbc9f649d4edcc79381 100644 (file)
@@ -117,9 +117,6 @@ static void remote_send (char **buf, long *sizeof_buf_p);
 
 static int readchar (int timeout);
 
-static ptid_t remote_wait (ptid_t ptid,
-                          struct target_waitstatus *status);
-
 static void remote_kill (void);
 
 static int tohex (int nib);
@@ -4733,7 +4730,8 @@ remote_wait_as (ptid_t ptid, struct target_waitstatus *status)
    STATUS just as `wait' would.  */
 
 static ptid_t
-remote_wait (ptid_t ptid, struct target_waitstatus *status)
+remote_wait (struct target_ops *ops,
+            ptid_t ptid, struct target_waitstatus *status)
 {
   ptid_t event_ptid;
 
@@ -7769,7 +7767,7 @@ Fetch and print the remote list of thread identifiers, one pkt only"));
    buffer.  */
 
 static char *
-remote_pid_to_str (ptid_t ptid)
+remote_pid_to_str (struct target_ops *ops, ptid_t ptid)
 {
   static char buf[64];
   struct remote_state *rs = get_remote_state ();
@@ -7800,7 +7798,8 @@ remote_pid_to_str (ptid_t ptid)
    stored at OFFSET within the thread local storage for thread PTID.  */
 
 static CORE_ADDR
-remote_get_thread_local_address (ptid_t ptid, CORE_ADDR lm, CORE_ADDR offset)
+remote_get_thread_local_address (struct target_ops *ops,
+                                ptid_t ptid, CORE_ADDR lm, CORE_ADDR offset)
 {
   if (remote_protocol_packets[PACKET_qGetTLSAddr].support != PACKET_DISABLE)
     {
index c8279dd533f6a5d04d4303d0e249a7890604f82c..6aaeba929889fbffc86260b423faa8675ef41a5a 100644 (file)
@@ -517,7 +517,8 @@ rs6000_xfer_partial (struct target_ops *ops, enum target_object object,
    the status in *OURSTATUS.  */
 
 static ptid_t
-rs6000_wait (ptid_t ptid, struct target_waitstatus *ourstatus)
+rs6000_wait (struct target_ops *ops,
+            ptid_t ptid, struct target_waitstatus *ourstatus)
 {
   pid_t pid;
   int status, save_errno;
index 3ce5a56879c28b25a854b7d58617aada4da4abb5..ade49f0b1a6490266f8a58029043a5f0e83cce49 100644 (file)
@@ -80,7 +80,7 @@ struct target_ops sol_core_ops;
 extern int procfs_suppress_run;
 extern struct target_ops procfs_ops;   /* target vector for procfs.c */
 extern struct target_ops core_ops;     /* target vector for corelow.c */
-extern char *procfs_pid_to_str (ptid_t ptid);
+extern char *procfs_pid_to_str (struct target_ops *ops, ptid_t ptid);
 
 /* Prototypes for supply_gregset etc. */
 #include "gregset.h"
@@ -424,7 +424,8 @@ sol_thread_resume (ptid_t ptid, int step, enum target_signal signo)
    thread ID to an LWP ID, and vice versa on the way out.  */
 
 static ptid_t
-sol_thread_wait (ptid_t ptid, struct target_waitstatus *ourstatus)
+sol_thread_wait (struct target_ops *ops,
+                ptid_t ptid, struct target_waitstatus *ourstatus)
 {
   ptid_t rtnval;
   ptid_t save_ptid;
@@ -449,7 +450,7 @@ sol_thread_wait (ptid_t ptid, struct target_waitstatus *ourstatus)
                 GET_THREAD (save_ptid));
     }
 
-  rtnval = procfs_ops.to_wait (ptid, ourstatus);
+  rtnval = procfs_ops.to_wait (&procfs_ops, ptid, ourstatus);
 
   if (ourstatus->kind != TARGET_WAITKIND_EXITED)
     {
@@ -1323,13 +1324,13 @@ ps_lgetLDT (gdb_ps_prochandle_t ph, lwpid_t lwpid,
 /* Convert PTID to printable form.  */
 
 char *
-solaris_pid_to_str (ptid_t ptid)
+solaris_pid_to_str (struct target_ops *ops, ptid_t ptid)
 {
   static char buf[100];
 
   /* In case init failed to resolve the libthread_db library.  */
   if (!procfs_suppress_run)
-    return procfs_pid_to_str (ptid);
+    return procfs_pid_to_str (&procfs_ops, ptid);
 
   if (is_thread (ptid))
     {
index 0786083a66fdc5ada10b98a34f3816c5f3ddb7d2..8f903fec113264133e288bf0015077e5734f1dcf 100644 (file)
@@ -404,7 +404,8 @@ spu_child_post_attach (int pid)
 /* Wait for child PTID to do something.  Return id of the child,
    minus_one_ptid in case of error; store status into *OURSTATUS.  */
 static ptid_t
-spu_child_wait (ptid_t ptid, struct target_waitstatus *ourstatus)
+spu_child_wait (struct target_ops *ops,
+               ptid_t ptid, struct target_waitstatus *ourstatus)
 {
   int save_errno;
   int status;
index 1752ddc703f9d8333ae8778abe0c70aa29e7cb89..937b26a560378e25f3a8e83f96befd136470b18e 100644 (file)
@@ -99,8 +99,6 @@ static void debug_to_open (char *, int);
 
 static void debug_to_resume (ptid_t, int, enum target_signal);
 
-static ptid_t debug_to_wait (ptid_t, struct target_waitstatus *);
-
 static void debug_to_fetch_registers (struct regcache *, int);
 
 static void debug_to_store_registers (struct regcache *, int);
@@ -415,7 +413,7 @@ update_current_target (void)
       /* Do not inherit to_detach.  */
       /* Do not inherit to_disconnect.  */
       INHERIT (to_resume, t);
-      INHERIT (to_wait, t);
+      /* Do not inherit to_wait.  */
       INHERIT (to_fetch_registers, t);
       INHERIT (to_store_registers, t);
       INHERIT (to_prepare_to_store, t);
@@ -454,12 +452,12 @@ update_current_target (void)
       INHERIT (to_insert_exec_catchpoint, t);
       INHERIT (to_remove_exec_catchpoint, t);
       INHERIT (to_has_exited, t);
-      /* Do no inherit to_mourn_inferiour.  */
+      /* Do not inherit to_mourn_inferiour.  */
       INHERIT (to_can_run, t);
       INHERIT (to_notice_signals, t);
       INHERIT (to_thread_alive, t);
       INHERIT (to_find_new_threads, t);
-      INHERIT (to_pid_to_str, t);
+      /* Do not inherit to_pid_to_str.  */
       INHERIT (to_extra_thread_info, t);
       INHERIT (to_stop, t);
       /* Do not inherit to_xfer_partial.  */
@@ -481,7 +479,7 @@ update_current_target (void)
       INHERIT (to_async_mask, t);
       INHERIT (to_find_memory_regions, t);
       INHERIT (to_make_corefile_notes, t);
-      INHERIT (to_get_thread_local_address, t);
+      /* Do not inherit to_get_thread_local_address.  */
       INHERIT (to_can_execute_reverse, t);
       /* Do not inherit to_read_description.  */
       INHERIT (to_get_ada_task_ptid, t);
@@ -514,9 +512,6 @@ update_current_target (void)
   de_fault (to_resume,
            (void (*) (ptid_t, int, enum target_signal))
            noprocess);
-  de_fault (to_wait,
-           (ptid_t (*) (ptid_t, struct target_waitstatus *))
-           noprocess);
   de_fault (to_fetch_registers,
            (void (*) (struct regcache *, int))
            target_ignore);
@@ -853,8 +848,17 @@ CORE_ADDR
 target_translate_tls_address (struct objfile *objfile, CORE_ADDR offset)
 {
   volatile CORE_ADDR addr = 0;
+  struct target_ops *target;
+
+  for (target = current_target.beneath;
+       target != NULL;
+       target = target->beneath)
+    {
+      if (target->to_get_thread_local_address != NULL)
+       break;
+    }
 
-  if (target_get_thread_local_address_p ()
+  if (target != NULL
       && gdbarch_fetch_tls_load_module_address_p (target_gdbarch))
     {
       ptid_t ptid = inferior_ptid;
@@ -872,7 +876,7 @@ target_translate_tls_address (struct objfile *objfile, CORE_ADDR offset)
            throw_error (TLS_LOAD_MODULE_NOT_FOUND_ERROR,
                         _("TLS load module not found"));
 
-         addr = target_get_thread_local_address (ptid, lm_addr, offset);
+         addr = target->to_get_thread_local_address (target, ptid, lm_addr, offset);
        }
       /* If an error occurred, print TLS related messages here.  Otherwise,
          throw the error to some higher catcher.  */
@@ -1841,6 +1845,50 @@ target_disconnect (char *args, int from_tty)
   tcomplain ();
 }
 
+ptid_t
+target_wait (ptid_t ptid, struct target_waitstatus *status)
+{
+  struct target_ops *t;
+
+  for (t = current_target.beneath; t != NULL; t = t->beneath)
+    {
+      if (t->to_wait != NULL)
+       {
+         ptid_t retval = (*t->to_wait) (t, ptid, status);
+
+         if (targetdebug)
+           {
+             char *status_string;
+
+             status_string = target_waitstatus_to_string (status);
+             fprintf_unfiltered (gdb_stdlog,
+                                 "target_wait (%d, status) = %d,   %s\n",
+                                 PIDGET (ptid), PIDGET (retval),
+                                 status_string);
+             xfree (status_string);
+           }
+
+         return retval;
+       }
+    }
+
+  noprocess ();
+}
+
+char *
+target_pid_to_str (ptid_t ptid)
+{
+  struct target_ops *t;
+
+  for (t = current_target.beneath; t != NULL; t = t->beneath)
+    {
+      if (t->to_pid_to_str != NULL)
+       return (*t->to_pid_to_str) (t, ptid);
+    }
+
+  return normal_pid_to_str (ptid);
+}
+
 void
 target_resume (ptid_t ptid, int step, enum target_signal signal)
 {
@@ -2475,6 +2523,12 @@ normal_pid_to_str (ptid_t ptid)
   return buf;
 }
 
+char *
+dummy_pid_to_str (struct target_ops *ops, ptid_t ptid)
+{
+  return normal_pid_to_str (ptid);
+}
+
 /* Error-catcher for target_find_memory_regions */
 static int dummy_find_memory_regions (int (*ignore1) (), void *ignore2)
 {
@@ -2505,7 +2559,7 @@ init_dummy_target (void)
   dummy_target.to_can_async_p = find_default_can_async_p;
   dummy_target.to_is_async_p = find_default_is_async_p;
   dummy_target.to_supports_non_stop = find_default_supports_non_stop;
-  dummy_target.to_pid_to_str = normal_pid_to_str;
+  dummy_target.to_pid_to_str = dummy_pid_to_str;
   dummy_target.to_stratum = dummy_stratum;
   dummy_target.to_find_memory_regions = dummy_find_memory_regions;
   dummy_target.to_make_corefile_notes = dummy_make_corefile_notes;
@@ -2613,25 +2667,6 @@ target_waitstatus_to_string (const struct target_waitstatus *ws)
     }
 }
 
-static ptid_t
-debug_to_wait (ptid_t ptid, struct target_waitstatus *status)
-{
-  ptid_t retval;
-  char *status_string;
-
-  retval = debug_target.to_wait (ptid, status);
-
-  fprintf_unfiltered (gdb_stdlog,
-                     "target_wait (%d, status) = %d,   ", PIDGET (ptid),
-                     PIDGET (retval));
-
-  status_string = target_waitstatus_to_string (status);
-  fprintf_unfiltered (gdb_stdlog, "%s\n", status_string);
-  xfree (status_string);
-
-  return retval;
-}
-
 static void
 debug_print_register (const char * func,
                      struct regcache *regcache, int regno)
@@ -3148,7 +3183,6 @@ setup_target_debug (void)
   current_target.to_open = debug_to_open;
   current_target.to_post_attach = debug_to_post_attach;
   current_target.to_resume = debug_to_resume;
-  current_target.to_wait = debug_to_wait;
   current_target.to_fetch_registers = debug_to_fetch_registers;
   current_target.to_store_registers = debug_to_store_registers;
   current_target.to_prepare_to_store = debug_to_prepare_to_store;
index 8e0f6c5436ed8c9dc499a9d5f60f68c3a7d95fca..cb7064678beb38ee7b1b1cfa4e57803b9a6ba29f 100644 (file)
@@ -330,7 +330,8 @@ struct target_ops
     void (*to_detach) (struct target_ops *ops, char *, int);
     void (*to_disconnect) (struct target_ops *, char *, int);
     void (*to_resume) (ptid_t, int, enum target_signal);
-    ptid_t (*to_wait) (ptid_t, struct target_waitstatus *);
+    ptid_t (*to_wait) (struct target_ops *,
+                     ptid_t, struct target_waitstatus *);
     void (*to_fetch_registers) (struct regcache *, int);
     void (*to_store_registers) (struct regcache *, int);
     void (*to_prepare_to_store) (struct regcache *);
@@ -402,7 +403,7 @@ struct target_ops
     void (*to_notice_signals) (ptid_t ptid);
     int (*to_thread_alive) (ptid_t ptid);
     void (*to_find_new_threads) (void);
-    char *(*to_pid_to_str) (ptid_t);
+    char *(*to_pid_to_str) (struct target_ops *, ptid_t);
     char *(*to_extra_thread_info) (struct thread_info *);
     void (*to_stop) (ptid_t);
     void (*to_rcmd) (char *command, struct ui_file *output);
@@ -438,7 +439,8 @@ struct target_ops
        or executable file given by OBJFILE.  If that block of
        thread-local storage hasn't been allocated yet, this function
        may return an error.  */
-    CORE_ADDR (*to_get_thread_local_address) (ptid_t ptid,
+    CORE_ADDR (*to_get_thread_local_address) (struct target_ops *ops,
+                                             ptid_t ptid,
                                              CORE_ADDR load_module_addr,
                                              CORE_ADDR offset);
 
@@ -625,8 +627,7 @@ extern void target_resume (ptid_t ptid, int step, enum target_signal signal);
    to the prompt with a debugging target but without the frame cache,
    stop_pc, etc., set up.  */
 
-#define        target_wait(ptid, status)               \
-     (*current_target.to_wait) (ptid, status)
+extern ptid_t target_wait (ptid_t ptid, struct target_waitstatus *status);
 
 /* Fetch at least register REGNO, or all regs if regno == -1.  No result.  */
 
@@ -1013,8 +1014,7 @@ int target_supports_non_stop (void);
    `process xyz', but on some systems it may contain
    `process xyz thread abc'.  */
 
-#undef target_pid_to_str
-#define target_pid_to_str(PID) current_target.to_pid_to_str (PID)
+extern char *target_pid_to_str (ptid_t ptid);
 
 extern char *normal_pid_to_str (ptid_t ptid);
 
@@ -1057,13 +1057,6 @@ extern char *normal_pid_to_str (ptid_t ptid);
 #define target_make_corefile_notes(BFD, SIZE_P) \
      (current_target.to_make_corefile_notes) (BFD, SIZE_P)
 
-/* Thread-local values.  */
-#define target_get_thread_local_address \
-    (current_target.to_get_thread_local_address)
-#define target_get_thread_local_address_p() \
-    (target_get_thread_local_address != NULL)
-
-
 /* Hardware watchpoint interfaces.  */
 
 /* Returns non-zero if we were stopped by a hardware watchpoint (memory read or
@@ -1252,7 +1245,7 @@ extern int default_memory_insert_breakpoint (struct gdbarch *, struct bp_target_
 
 extern void initialize_targets (void);
 
-extern void noprocess (void);
+extern NORETURN void noprocess (void) ATTR_NORETURN;
 
 extern void target_require_runnable (void);
 
index 7e43f87e52101099fa5bf4fe0bd90b1f131d8463..7398d6a0639dcfd63e4ec473450e183f0810ce36 100644 (file)
@@ -1444,7 +1444,8 @@ out:
 
 /* Wait for interesting events to occur in the target process.  */
 static ptid_t
-windows_wait (ptid_t ptid, struct target_waitstatus *ourstatus)
+windows_wait (struct target_ops *ops,
+             ptid_t ptid, struct target_waitstatus *ourstatus)
 {
   int pid = -1;
 
@@ -2017,7 +2018,7 @@ windows_close (int x)
 
 /* Convert pid to printable format. */
 static char *
-windows_pid_to_str (ptid_t ptid)
+windows_pid_to_str (struct target_ops *ops, ptid_t ptid)
 {
   static char buf[80];