Don't complain about -fPIC for undefined symbol
[deliverable/binutils-gdb.git] / gdb / proc-service.c
index 89851d7511e265d743e76febf2079878b377e6ac..484054a812799780f6278d2362cd3f86e70801fc 100644 (file)
@@ -1,6 +1,6 @@
 /* <proc_service.h> implementation.
 
-   Copyright (C) 1999, 2000, 2002, 2007, 2008 Free Software Foundation, Inc.
+   Copyright (C) 1999-2015 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -24,6 +24,7 @@
 #include "symtab.h"
 #include "target.h"
 #include "regcache.h"
+#include "objfiles.h"
 
 #include "gdb_proc_service.h"
 
@@ -51,11 +52,6 @@ typedef size_t gdb_ps_size_t;
 #endif
 \f
 
-/* Building process ids.  */
-
-#define BUILD_LWP(lwp, pid)    ptid_build (pid, lwp, 0)
-\f
-
 /* Helper functions.  */
 
 /* Convert a psaddr_t to a CORE_ADDR.  */
@@ -85,8 +81,7 @@ core_addr_to_ps_addr (CORE_ADDR addr)
    else transfer them from the process.  Returns PS_OK for success,
    PS_ERR on failure.
 
-   This is a helper function for ps_pdread, ps_pdwrite, ps_ptread and
-   ps_ptwrite.  */
+   This is a helper function for ps_pdread and ps_pdwrite.  */
 
 static ps_err_e
 ps_xfer_memory (const struct ps_prochandle *ph, psaddr_t addr,
@@ -96,7 +91,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);
@@ -109,87 +104,6 @@ ps_xfer_memory (const struct ps_prochandle *ph, psaddr_t addr,
 }
 \f
 
-/* Stop the target process PH.  */
-
-ps_err_e
-ps_pstop (gdb_ps_prochandle_t ph)
-{
-  /* The process is always stopped when under control of GDB.  */
-  return PS_OK;
-}
-
-/* Resume the target process PH.  */
-
-ps_err_e
-ps_pcontinue (gdb_ps_prochandle_t ph)
-{
-  /* Pretend we did successfully continue the process.  GDB will take
-     care of it later on.  */
-  return PS_OK;
-}
-
-/* Stop the lightweight process LWPID within the target process PH.  */
-
-ps_err_e
-ps_lstop (gdb_ps_prochandle_t ph, lwpid_t lwpid)
-{
-  /* All lightweight processes are stopped when under control of GDB.  */
-  return PS_OK;
-}
-
-/* Resume the lightweight process (LWP) LWPID within the target
-   process PH.  */
-
-ps_err_e
-ps_lcontinue (gdb_ps_prochandle_t ph, lwpid_t lwpid)
-{
-  /* Pretend we did successfully continue LWPID.  GDB will take care
-     of it later on.  */
-  return PS_OK;
-}
-
-/* Get the size of the architecture-dependent extra state registers
-   for LWP LWPID within the target process PH and return it in
-   *XREGSIZE.  */
-
-ps_err_e
-ps_lgetxregsize (gdb_ps_prochandle_t ph, lwpid_t lwpid, int *xregsize)
-{
-  /* FIXME: Not supported yet.  */
-  return PS_OK;
-}
-
-/* Get the extra state registers of LWP LWPID within the target
-   process PH and store them in XREGSET.  */
-
-ps_err_e
-ps_lgetxregs (gdb_ps_prochandle_t ph, lwpid_t lwpid, caddr_t xregset)
-{
-  /* FIXME: Not supported yet.  */
-  return PS_OK;
-}
-
-/* Set the extra state registers of LWP LWPID within the target
-   process PH from XREGSET.  */
-
-ps_err_e
-ps_lsetxregs (gdb_ps_prochandle_t ph, lwpid_t lwpid, caddr_t xregset)
-{
-  /* FIXME: Not supported yet.  */
-  return PS_OK;
-}
-
-/* Log (additional) diognostic information.  */
-
-void
-ps_plog (const char *fmt, ...)
-{
-  va_list args;
-
-  va_start (args, fmt);
-  vfprintf_filtered (gdb_stderr, fmt, args);
-}
-
 /* Search for the symbol named NAME within the object named OBJ within
    the target process PH.  If the symbol is found the address of the
    symbol is stored in SYM_ADDR.  */
@@ -198,15 +112,25 @@ ps_err_e
 ps_pglobal_lookup (gdb_ps_prochandle_t ph, const char *obj,
                   const char *name, psaddr_t *sym_addr)
 {
-  struct minimal_symbol *ms;
+  struct bound_minimal_symbol ms;
+  struct cleanup *old_chain = save_current_program_space ();
+  struct inferior *inf = find_inferior_ptid (ph->ptid);
+  ps_err_e result;
+
+  set_current_program_space (inf->pspace);
 
   /* FIXME: kettenis/2000-09-03: What should we do with OBJ?  */
   ms = lookup_minimal_symbol (name, NULL, NULL);
-  if (ms == NULL)
-    return PS_NOSYM;
+  if (ms.minsym == NULL)
+    result = PS_NOSYM;
+  else
+    {
+      *sym_addr = core_addr_to_ps_addr (BMSYMBOL_VALUE_ADDRESS (ms));
+      result = PS_OK;
+    }
 
-  *sym_addr = core_addr_to_ps_addr (SYMBOL_VALUE_ADDRESS (ms));
-  return PS_OK;
+  do_cleanups (old_chain);
+  return result;
 }
 
 /* Read SIZE bytes from the target process PH at address ADDR and copy
@@ -228,25 +152,6 @@ ps_pdwrite (gdb_ps_prochandle_t ph, psaddr_t addr,
   return ps_xfer_memory (ph, addr, (gdb_byte *) buf, size, 1);
 }
 
-/* Read SIZE bytes from the target process PH at address ADDR and copy
-   them into BUF.  */
-
-ps_err_e
-ps_ptread (gdb_ps_prochandle_t ph, psaddr_t addr,
-          gdb_ps_read_buf_t buf, gdb_ps_size_t size)
-{
-  return ps_xfer_memory (ph, addr, (gdb_byte *) buf, size, 0);
-}
-
-/* Write SIZE bytes from BUF into the target process PH at address ADDR.  */
-
-ps_err_e
-ps_ptwrite (gdb_ps_prochandle_t ph, psaddr_t addr,
-           gdb_ps_write_buf_t buf, gdb_ps_size_t size)
-{
-  return ps_xfer_memory (ph, addr, (gdb_byte *) buf, size, 1);
-}
-
 /* Get the general registers of LWP LWPID within the target process PH
    and store them in GREGSET.  */
 
@@ -256,8 +161,8 @@ 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);
-  regcache = get_thread_regcache (inferior_ptid);
+  inferior_ptid = ptid_build (ptid_get_pid (ph->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);
@@ -275,8 +180,8 @@ 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);
-  regcache = get_thread_regcache (inferior_ptid);
+  inferior_ptid = ptid_build (ptid_get_pid (ph->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);
@@ -295,8 +200,8 @@ 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);
-  regcache = get_thread_regcache (inferior_ptid);
+  inferior_ptid = ptid_build (ptid_get_pid (ph->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);
@@ -315,8 +220,8 @@ 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);
-  regcache = get_thread_regcache (inferior_ptid);
+  inferior_ptid = ptid_build (ptid_get_pid (ph->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);
@@ -331,9 +236,12 @@ 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.  */
+extern initialize_file_ftype _initialize_proc_service;
+
 void
 _initialize_proc_service (void)
 {
This page took 0.0264 seconds and 4 git commands to generate.