Home | History | Annotate | Line # | Download | only in gdbserver
target.cc revision 1.1
      1  1.1  christos /* Target operations for the remote server for GDB.
      2  1.1  christos    Copyright (C) 2002-2020 Free Software Foundation, Inc.
      3  1.1  christos 
      4  1.1  christos    Contributed by MontaVista Software.
      5  1.1  christos 
      6  1.1  christos    This file is part of GDB.
      7  1.1  christos 
      8  1.1  christos    This program is free software; you can redistribute it and/or modify
      9  1.1  christos    it under the terms of the GNU General Public License as published by
     10  1.1  christos    the Free Software Foundation; either version 3 of the License, or
     11  1.1  christos    (at your option) any later version.
     12  1.1  christos 
     13  1.1  christos    This program is distributed in the hope that it will be useful,
     14  1.1  christos    but WITHOUT ANY WARRANTY; without even the implied warranty of
     15  1.1  christos    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     16  1.1  christos    GNU General Public License for more details.
     17  1.1  christos 
     18  1.1  christos    You should have received a copy of the GNU General Public License
     19  1.1  christos    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
     20  1.1  christos 
     21  1.1  christos #include "server.h"
     22  1.1  christos #include "tracepoint.h"
     23  1.1  christos #include "gdbsupport/byte-vector.h"
     24  1.1  christos #include "hostio.h"
     25  1.1  christos #include <fcntl.h>
     26  1.1  christos #include <unistd.h>
     27  1.1  christos #include <sys/types.h>
     28  1.1  christos #include <sys/stat.h>
     29  1.1  christos 
     30  1.1  christos process_stratum_target *the_target;
     31  1.1  christos 
     32  1.1  christos int
     33  1.1  christos set_desired_thread ()
     34  1.1  christos {
     35  1.1  christos   client_state &cs = get_client_state ();
     36  1.1  christos   thread_info *found = find_thread_ptid (cs.general_thread);
     37  1.1  christos 
     38  1.1  christos   current_thread = found;
     39  1.1  christos   return (current_thread != NULL);
     40  1.1  christos }
     41  1.1  christos 
     42  1.1  christos /* The thread that was current before prepare_to_access_memory was
     43  1.1  christos    called.  done_accessing_memory uses this to restore the previous
     44  1.1  christos    selected thread.  */
     45  1.1  christos static ptid_t prev_general_thread;
     46  1.1  christos 
     47  1.1  christos /* See target.h.  */
     48  1.1  christos 
     49  1.1  christos int
     50  1.1  christos prepare_to_access_memory (void)
     51  1.1  christos {
     52  1.1  christos   client_state &cs = get_client_state ();
     53  1.1  christos 
     54  1.1  christos   /* The first thread found.  */
     55  1.1  christos   struct thread_info *first = NULL;
     56  1.1  christos   /* The first stopped thread found.  */
     57  1.1  christos   struct thread_info *stopped = NULL;
     58  1.1  christos   /* The current general thread, if found.  */
     59  1.1  christos   struct thread_info *current = NULL;
     60  1.1  christos 
     61  1.1  christos   /* Save the general thread value, since prepare_to_access_memory could change
     62  1.1  christos      it.  */
     63  1.1  christos   prev_general_thread = cs.general_thread;
     64  1.1  christos 
     65  1.1  christos   int res = the_target->prepare_to_access_memory ();
     66  1.1  christos   if (res != 0)
     67  1.1  christos     return res;
     68  1.1  christos 
     69  1.1  christos   for_each_thread (prev_general_thread.pid (), [&] (thread_info *thread)
     70  1.1  christos     {
     71  1.1  christos       if (mythread_alive (thread->id))
     72  1.1  christos 	{
     73  1.1  christos 	  if (stopped == NULL && the_target->supports_thread_stopped ()
     74  1.1  christos 	      && target_thread_stopped (thread))
     75  1.1  christos 	    stopped = thread;
     76  1.1  christos 
     77  1.1  christos 	  if (first == NULL)
     78  1.1  christos 	    first = thread;
     79  1.1  christos 
     80  1.1  christos 	  if (current == NULL && prev_general_thread == thread->id)
     81  1.1  christos 	    current = thread;
     82  1.1  christos 	}
     83  1.1  christos     });
     84  1.1  christos 
     85  1.1  christos   /* The thread we end up choosing.  */
     86  1.1  christos   struct thread_info *thread;
     87  1.1  christos 
     88  1.1  christos   /* Prefer a stopped thread.  If none is found, try the current
     89  1.1  christos      thread.  Otherwise, take the first thread in the process.  If
     90  1.1  christos      none is found, undo the effects of
     91  1.1  christos      target->prepare_to_access_memory() and return error.  */
     92  1.1  christos   if (stopped != NULL)
     93  1.1  christos     thread = stopped;
     94  1.1  christos   else if (current != NULL)
     95  1.1  christos     thread = current;
     96  1.1  christos   else if (first != NULL)
     97  1.1  christos     thread = first;
     98  1.1  christos   else
     99  1.1  christos     {
    100  1.1  christos       done_accessing_memory ();
    101  1.1  christos       return 1;
    102  1.1  christos     }
    103  1.1  christos 
    104  1.1  christos   current_thread = thread;
    105  1.1  christos   cs.general_thread = ptid_of (thread);
    106  1.1  christos 
    107  1.1  christos   return 0;
    108  1.1  christos }
    109  1.1  christos 
    110  1.1  christos /* See target.h.  */
    111  1.1  christos 
    112  1.1  christos void
    113  1.1  christos done_accessing_memory (void)
    114  1.1  christos {
    115  1.1  christos   client_state &cs = get_client_state ();
    116  1.1  christos 
    117  1.1  christos   the_target->done_accessing_memory ();
    118  1.1  christos 
    119  1.1  christos   /* Restore the previous selected thread.  */
    120  1.1  christos   cs.general_thread = prev_general_thread;
    121  1.1  christos   switch_to_thread (the_target, cs.general_thread);
    122  1.1  christos }
    123  1.1  christos 
    124  1.1  christos int
    125  1.1  christos read_inferior_memory (CORE_ADDR memaddr, unsigned char *myaddr, int len)
    126  1.1  christos {
    127  1.1  christos   int res;
    128  1.1  christos   res = the_target->read_memory (memaddr, myaddr, len);
    129  1.1  christos   check_mem_read (memaddr, myaddr, len);
    130  1.1  christos   return res;
    131  1.1  christos }
    132  1.1  christos 
    133  1.1  christos /* See target/target.h.  */
    134  1.1  christos 
    135  1.1  christos int
    136  1.1  christos target_read_memory (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
    137  1.1  christos {
    138  1.1  christos   return read_inferior_memory (memaddr, myaddr, len);
    139  1.1  christos }
    140  1.1  christos 
    141  1.1  christos /* See target/target.h.  */
    142  1.1  christos 
    143  1.1  christos int
    144  1.1  christos target_read_uint32 (CORE_ADDR memaddr, uint32_t *result)
    145  1.1  christos {
    146  1.1  christos   return read_inferior_memory (memaddr, (gdb_byte *) result, sizeof (*result));
    147  1.1  christos }
    148  1.1  christos 
    149  1.1  christos /* See target/target.h.  */
    150  1.1  christos 
    151  1.1  christos int
    152  1.1  christos target_write_memory (CORE_ADDR memaddr, const unsigned char *myaddr,
    153  1.1  christos 		     ssize_t len)
    154  1.1  christos {
    155  1.1  christos   /* Make a copy of the data because check_mem_write may need to
    156  1.1  christos      update it.  */
    157  1.1  christos   gdb::byte_vector buffer (myaddr, myaddr + len);
    158  1.1  christos   check_mem_write (memaddr, buffer.data (), myaddr, len);
    159  1.1  christos   return the_target->write_memory (memaddr, buffer.data (), len);
    160  1.1  christos }
    161  1.1  christos 
    162  1.1  christos ptid_t
    163  1.1  christos mywait (ptid_t ptid, struct target_waitstatus *ourstatus, int options,
    164  1.1  christos 	int connected_wait)
    165  1.1  christos {
    166  1.1  christos   ptid_t ret;
    167  1.1  christos 
    168  1.1  christos   if (connected_wait)
    169  1.1  christos     server_waiting = 1;
    170  1.1  christos 
    171  1.1  christos   ret = target_wait (ptid, ourstatus, options);
    172  1.1  christos 
    173  1.1  christos   /* We don't expose _LOADED events to gdbserver core.  See the
    174  1.1  christos      `dlls_changed' global.  */
    175  1.1  christos   if (ourstatus->kind == TARGET_WAITKIND_LOADED)
    176  1.1  christos     ourstatus->kind = TARGET_WAITKIND_STOPPED;
    177  1.1  christos 
    178  1.1  christos   /* If GDB is connected through TCP/serial, then GDBserver will most
    179  1.1  christos      probably be running on its own terminal/console, so it's nice to
    180  1.1  christos      print there why is GDBserver exiting.  If however, GDB is
    181  1.1  christos      connected through stdio, then there's no need to spam the GDB
    182  1.1  christos      console with this -- the user will already see the exit through
    183  1.1  christos      regular GDB output, in that same terminal.  */
    184  1.1  christos   if (!remote_connection_is_stdio ())
    185  1.1  christos     {
    186  1.1  christos       if (ourstatus->kind == TARGET_WAITKIND_EXITED)
    187  1.1  christos 	fprintf (stderr,
    188  1.1  christos 		 "\nChild exited with status %d\n", ourstatus->value.integer);
    189  1.1  christos       else if (ourstatus->kind == TARGET_WAITKIND_SIGNALLED)
    190  1.1  christos 	fprintf (stderr, "\nChild terminated with signal = 0x%x (%s)\n",
    191  1.1  christos 		 gdb_signal_to_host (ourstatus->value.sig),
    192  1.1  christos 		 gdb_signal_to_name (ourstatus->value.sig));
    193  1.1  christos     }
    194  1.1  christos 
    195  1.1  christos   if (connected_wait)
    196  1.1  christos     server_waiting = 0;
    197  1.1  christos 
    198  1.1  christos   return ret;
    199  1.1  christos }
    200  1.1  christos 
    201  1.1  christos /* See target/target.h.  */
    202  1.1  christos 
    203  1.1  christos void
    204  1.1  christos target_stop_and_wait (ptid_t ptid)
    205  1.1  christos {
    206  1.1  christos   struct target_waitstatus status;
    207  1.1  christos   bool was_non_stop = non_stop;
    208  1.1  christos   struct thread_resume resume_info;
    209  1.1  christos 
    210  1.1  christos   resume_info.thread = ptid;
    211  1.1  christos   resume_info.kind = resume_stop;
    212  1.1  christos   resume_info.sig = GDB_SIGNAL_0;
    213  1.1  christos   the_target->resume (&resume_info, 1);
    214  1.1  christos 
    215  1.1  christos   non_stop = true;
    216  1.1  christos   mywait (ptid, &status, 0, 0);
    217  1.1  christos   non_stop = was_non_stop;
    218  1.1  christos }
    219  1.1  christos 
    220  1.1  christos /* See target/target.h.  */
    221  1.1  christos 
    222  1.1  christos ptid_t
    223  1.1  christos target_wait (ptid_t ptid, struct target_waitstatus *status, int options)
    224  1.1  christos {
    225  1.1  christos   return the_target->wait (ptid, status, options);
    226  1.1  christos }
    227  1.1  christos 
    228  1.1  christos /* See target/target.h.  */
    229  1.1  christos 
    230  1.1  christos void
    231  1.1  christos target_mourn_inferior (ptid_t ptid)
    232  1.1  christos {
    233  1.1  christos   the_target->mourn (find_process_pid (ptid.pid ()));
    234  1.1  christos }
    235  1.1  christos 
    236  1.1  christos /* See target/target.h.  */
    237  1.1  christos 
    238  1.1  christos void
    239  1.1  christos target_continue_no_signal (ptid_t ptid)
    240  1.1  christos {
    241  1.1  christos   struct thread_resume resume_info;
    242  1.1  christos 
    243  1.1  christos   resume_info.thread = ptid;
    244  1.1  christos   resume_info.kind = resume_continue;
    245  1.1  christos   resume_info.sig = GDB_SIGNAL_0;
    246  1.1  christos   the_target->resume (&resume_info, 1);
    247  1.1  christos }
    248  1.1  christos 
    249  1.1  christos /* See target/target.h.  */
    250  1.1  christos 
    251  1.1  christos void
    252  1.1  christos target_continue (ptid_t ptid, enum gdb_signal signal)
    253  1.1  christos {
    254  1.1  christos   struct thread_resume resume_info;
    255  1.1  christos 
    256  1.1  christos   resume_info.thread = ptid;
    257  1.1  christos   resume_info.kind = resume_continue;
    258  1.1  christos   resume_info.sig = gdb_signal_to_host (signal);
    259  1.1  christos   the_target->resume (&resume_info, 1);
    260  1.1  christos }
    261  1.1  christos 
    262  1.1  christos /* See target/target.h.  */
    263  1.1  christos 
    264  1.1  christos int
    265  1.1  christos target_supports_multi_process (void)
    266  1.1  christos {
    267  1.1  christos   return the_target->supports_multi_process ();
    268  1.1  christos }
    269  1.1  christos 
    270  1.1  christos void
    271  1.1  christos set_target_ops (process_stratum_target *target)
    272  1.1  christos {
    273  1.1  christos   the_target = target;
    274  1.1  christos }
    275  1.1  christos 
    276  1.1  christos /* Convert pid to printable format.  */
    277  1.1  christos 
    278  1.1  christos const char *
    279  1.1  christos target_pid_to_str (ptid_t ptid)
    280  1.1  christos {
    281  1.1  christos   static char buf[80];
    282  1.1  christos 
    283  1.1  christos   if (ptid == minus_one_ptid)
    284  1.1  christos     xsnprintf (buf, sizeof (buf), "<all threads>");
    285  1.1  christos   else if (ptid == null_ptid)
    286  1.1  christos     xsnprintf (buf, sizeof (buf), "<null thread>");
    287  1.1  christos   else if (ptid.tid () != 0)
    288  1.1  christos     xsnprintf (buf, sizeof (buf), "Thread %d.0x%lx",
    289  1.1  christos 	       ptid.pid (), ptid.tid ());
    290  1.1  christos   else if (ptid.lwp () != 0)
    291  1.1  christos     xsnprintf (buf, sizeof (buf), "LWP %d.%ld",
    292  1.1  christos 	       ptid.pid (), ptid.lwp ());
    293  1.1  christos   else
    294  1.1  christos     xsnprintf (buf, sizeof (buf), "Process %d",
    295  1.1  christos 	       ptid.pid ());
    296  1.1  christos 
    297  1.1  christos   return buf;
    298  1.1  christos }
    299  1.1  christos 
    300  1.1  christos int
    301  1.1  christos kill_inferior (process_info *proc)
    302  1.1  christos {
    303  1.1  christos   gdb_agent_about_to_close (proc->pid);
    304  1.1  christos 
    305  1.1  christos   return the_target->kill (proc);
    306  1.1  christos }
    307  1.1  christos 
    308  1.1  christos /* Define it.  */
    309  1.1  christos 
    310  1.1  christos target_terminal_state target_terminal::m_terminal_state
    311  1.1  christos   = target_terminal_state::is_ours;
    312  1.1  christos 
    313  1.1  christos /* See target/target.h.  */
    314  1.1  christos 
    315  1.1  christos void
    316  1.1  christos target_terminal::init ()
    317  1.1  christos {
    318  1.1  christos   /* Placeholder needed because of fork_inferior.  Not necessary on
    319  1.1  christos      GDBserver.  */
    320  1.1  christos }
    321  1.1  christos 
    322  1.1  christos /* See target/target.h.  */
    323  1.1  christos 
    324  1.1  christos void
    325  1.1  christos target_terminal::inferior ()
    326  1.1  christos {
    327  1.1  christos   /* Placeholder needed because of fork_inferior.  Not necessary on
    328  1.1  christos      GDBserver.  */
    329  1.1  christos }
    330  1.1  christos 
    331  1.1  christos /* See target/target.h.  */
    332  1.1  christos 
    333  1.1  christos void
    334  1.1  christos target_terminal::ours ()
    335  1.1  christos {
    336  1.1  christos   /* Placeholder needed because of fork_inferior.  Not necessary on
    337  1.1  christos      GDBserver.  */
    338  1.1  christos }
    339  1.1  christos 
    340  1.1  christos /* See target/target.h.  */
    341  1.1  christos 
    342  1.1  christos void
    343  1.1  christos target_terminal::ours_for_output (void)
    344  1.1  christos {
    345  1.1  christos   /* Placeholder.  */
    346  1.1  christos }
    347  1.1  christos 
    348  1.1  christos /* See target/target.h.  */
    349  1.1  christos 
    350  1.1  christos void
    351  1.1  christos target_terminal::info (const char *arg, int from_tty)
    352  1.1  christos {
    353  1.1  christos   /* Placeholder.  */
    354  1.1  christos }
    355  1.1  christos 
    356  1.1  christos /* Default implementations of target ops.
    357  1.1  christos    See target.h for definitions.  */
    358  1.1  christos 
    359  1.1  christos void
    360  1.1  christos process_stratum_target::post_create_inferior ()
    361  1.1  christos {
    362  1.1  christos   /* Nop.  */
    363  1.1  christos }
    364  1.1  christos 
    365  1.1  christos int
    366  1.1  christos process_stratum_target::prepare_to_access_memory ()
    367  1.1  christos {
    368  1.1  christos   return 0;
    369  1.1  christos }
    370  1.1  christos 
    371  1.1  christos void
    372  1.1  christos process_stratum_target::done_accessing_memory ()
    373  1.1  christos {
    374  1.1  christos   /* Nop.  */
    375  1.1  christos }
    376  1.1  christos 
    377  1.1  christos void
    378  1.1  christos process_stratum_target::look_up_symbols ()
    379  1.1  christos {
    380  1.1  christos   /* Nop.  */
    381  1.1  christos }
    382  1.1  christos 
    383  1.1  christos bool
    384  1.1  christos process_stratum_target::supports_read_auxv ()
    385  1.1  christos {
    386  1.1  christos   return false;
    387  1.1  christos }
    388  1.1  christos 
    389  1.1  christos int
    390  1.1  christos process_stratum_target::read_auxv (CORE_ADDR offset, unsigned char *myaddr,
    391  1.1  christos 				   unsigned int len)
    392  1.1  christos {
    393  1.1  christos   gdb_assert_not_reached ("target op read_auxv not supported");
    394  1.1  christos }
    395  1.1  christos 
    396  1.1  christos bool
    397  1.1  christos process_stratum_target::supports_z_point_type (char z_type)
    398  1.1  christos {
    399  1.1  christos   return false;
    400  1.1  christos }
    401  1.1  christos 
    402  1.1  christos int
    403  1.1  christos process_stratum_target::insert_point (enum raw_bkpt_type type,
    404  1.1  christos 				      CORE_ADDR addr,
    405  1.1  christos 				      int size, raw_breakpoint *bp)
    406  1.1  christos {
    407  1.1  christos   return 1;
    408  1.1  christos }
    409  1.1  christos 
    410  1.1  christos int
    411  1.1  christos process_stratum_target::remove_point (enum raw_bkpt_type type,
    412  1.1  christos 				      CORE_ADDR addr,
    413  1.1  christos 				      int size, raw_breakpoint *bp)
    414  1.1  christos {
    415  1.1  christos   return 1;
    416  1.1  christos }
    417  1.1  christos 
    418  1.1  christos bool
    419  1.1  christos process_stratum_target::stopped_by_sw_breakpoint ()
    420  1.1  christos {
    421  1.1  christos   return false;
    422  1.1  christos }
    423  1.1  christos 
    424  1.1  christos bool
    425  1.1  christos process_stratum_target::supports_stopped_by_sw_breakpoint ()
    426  1.1  christos {
    427  1.1  christos   return false;
    428  1.1  christos }
    429  1.1  christos 
    430  1.1  christos bool
    431  1.1  christos process_stratum_target::stopped_by_hw_breakpoint ()
    432  1.1  christos {
    433  1.1  christos   return false;
    434  1.1  christos }
    435  1.1  christos 
    436  1.1  christos bool
    437  1.1  christos process_stratum_target::supports_stopped_by_hw_breakpoint ()
    438  1.1  christos {
    439  1.1  christos   return false;
    440  1.1  christos }
    441  1.1  christos 
    442  1.1  christos bool
    443  1.1  christos process_stratum_target::supports_hardware_single_step ()
    444  1.1  christos {
    445  1.1  christos   return false;
    446  1.1  christos }
    447  1.1  christos 
    448  1.1  christos bool
    449  1.1  christos process_stratum_target::stopped_by_watchpoint ()
    450  1.1  christos {
    451  1.1  christos   return false;
    452  1.1  christos }
    453  1.1  christos 
    454  1.1  christos CORE_ADDR
    455  1.1  christos process_stratum_target::stopped_data_address ()
    456  1.1  christos {
    457  1.1  christos   return 0;
    458  1.1  christos }
    459  1.1  christos 
    460  1.1  christos bool
    461  1.1  christos process_stratum_target::supports_read_offsets ()
    462  1.1  christos {
    463  1.1  christos   return false;
    464  1.1  christos }
    465  1.1  christos 
    466  1.1  christos int
    467  1.1  christos process_stratum_target::read_offsets (CORE_ADDR *text, CORE_ADDR *data)
    468  1.1  christos {
    469  1.1  christos   gdb_assert_not_reached ("target op read_offsets not supported");
    470  1.1  christos }
    471  1.1  christos 
    472  1.1  christos bool
    473  1.1  christos process_stratum_target::supports_get_tls_address ()
    474  1.1  christos {
    475  1.1  christos   return false;
    476  1.1  christos }
    477  1.1  christos 
    478  1.1  christos int
    479  1.1  christos process_stratum_target::get_tls_address (thread_info *thread,
    480  1.1  christos 					 CORE_ADDR offset,
    481  1.1  christos 					 CORE_ADDR load_module,
    482  1.1  christos 					 CORE_ADDR *address)
    483  1.1  christos {
    484  1.1  christos   gdb_assert_not_reached ("target op get_tls_address not supported");
    485  1.1  christos }
    486  1.1  christos 
    487  1.1  christos void
    488  1.1  christos process_stratum_target::hostio_last_error (char *buf)
    489  1.1  christos {
    490  1.1  christos   hostio_last_error_from_errno (buf);
    491  1.1  christos }
    492  1.1  christos 
    493  1.1  christos bool
    494  1.1  christos process_stratum_target::supports_qxfer_osdata ()
    495  1.1  christos {
    496  1.1  christos   return false;
    497  1.1  christos }
    498  1.1  christos 
    499  1.1  christos int
    500  1.1  christos process_stratum_target::qxfer_osdata (const char *annex,
    501  1.1  christos 				      unsigned char *readbuf,
    502  1.1  christos 				      unsigned const char *writebuf,
    503  1.1  christos 				      CORE_ADDR offset, int len)
    504  1.1  christos {
    505  1.1  christos   gdb_assert_not_reached ("target op qxfer_osdata not supported");
    506  1.1  christos }
    507  1.1  christos 
    508  1.1  christos bool
    509  1.1  christos process_stratum_target::supports_qxfer_siginfo ()
    510  1.1  christos {
    511  1.1  christos   return false;
    512  1.1  christos }
    513  1.1  christos 
    514  1.1  christos int
    515  1.1  christos process_stratum_target::qxfer_siginfo (const char *annex,
    516  1.1  christos 				       unsigned char *readbuf,
    517  1.1  christos 				       unsigned const char *writebuf,
    518  1.1  christos 				       CORE_ADDR offset, int len)
    519  1.1  christos {
    520  1.1  christos   gdb_assert_not_reached ("target op qxfer_siginfo not supported");
    521  1.1  christos }
    522  1.1  christos 
    523  1.1  christos bool
    524  1.1  christos process_stratum_target::supports_non_stop ()
    525  1.1  christos {
    526  1.1  christos   return false;
    527  1.1  christos }
    528  1.1  christos 
    529  1.1  christos bool
    530  1.1  christos process_stratum_target::async (bool enable)
    531  1.1  christos {
    532  1.1  christos   return false;
    533  1.1  christos }
    534  1.1  christos 
    535  1.1  christos int
    536  1.1  christos process_stratum_target::start_non_stop (bool enable)
    537  1.1  christos {
    538  1.1  christos   if (enable)
    539  1.1  christos     return -1;
    540  1.1  christos   else
    541  1.1  christos     return 0;
    542  1.1  christos }
    543  1.1  christos 
    544  1.1  christos bool
    545  1.1  christos process_stratum_target::supports_multi_process ()
    546  1.1  christos {
    547  1.1  christos   return false;
    548  1.1  christos }
    549  1.1  christos 
    550  1.1  christos bool
    551  1.1  christos process_stratum_target::supports_fork_events ()
    552  1.1  christos {
    553  1.1  christos   return false;
    554  1.1  christos }
    555  1.1  christos 
    556  1.1  christos bool
    557  1.1  christos process_stratum_target::supports_vfork_events ()
    558  1.1  christos {
    559  1.1  christos   return false;
    560  1.1  christos }
    561  1.1  christos 
    562  1.1  christos bool
    563  1.1  christos process_stratum_target::supports_exec_events ()
    564  1.1  christos {
    565  1.1  christos   return false;
    566  1.1  christos }
    567  1.1  christos 
    568  1.1  christos void
    569  1.1  christos process_stratum_target::handle_new_gdb_connection ()
    570  1.1  christos {
    571  1.1  christos   /* Nop.  */
    572  1.1  christos }
    573  1.1  christos 
    574  1.1  christos int
    575  1.1  christos process_stratum_target::handle_monitor_command (char *mon)
    576  1.1  christos {
    577  1.1  christos   return 0;
    578  1.1  christos }
    579  1.1  christos 
    580  1.1  christos int
    581  1.1  christos process_stratum_target::core_of_thread (ptid_t ptid)
    582  1.1  christos {
    583  1.1  christos   return -1;
    584  1.1  christos }
    585  1.1  christos 
    586  1.1  christos bool
    587  1.1  christos process_stratum_target::supports_read_loadmap ()
    588  1.1  christos {
    589  1.1  christos   return false;
    590  1.1  christos }
    591  1.1  christos 
    592  1.1  christos int
    593  1.1  christos process_stratum_target::read_loadmap (const char *annex,
    594  1.1  christos 				      CORE_ADDR offset,
    595  1.1  christos 				      unsigned char *myaddr,
    596  1.1  christos 				      unsigned int len)
    597  1.1  christos {
    598  1.1  christos   gdb_assert_not_reached ("target op read_loadmap not supported");
    599  1.1  christos }
    600  1.1  christos 
    601  1.1  christos void
    602  1.1  christos process_stratum_target::process_qsupported
    603  1.1  christos   (gdb::array_view<const char * const> features)
    604  1.1  christos {
    605  1.1  christos   /* Nop.  */
    606  1.1  christos }
    607  1.1  christos 
    608  1.1  christos bool
    609  1.1  christos process_stratum_target::supports_tracepoints ()
    610  1.1  christos {
    611  1.1  christos   return false;
    612  1.1  christos }
    613  1.1  christos 
    614  1.1  christos CORE_ADDR
    615  1.1  christos process_stratum_target::read_pc (regcache *regcache)
    616  1.1  christos {
    617  1.1  christos   gdb_assert_not_reached ("process_target::read_pc: Unable to find PC");
    618  1.1  christos }
    619  1.1  christos 
    620  1.1  christos void
    621  1.1  christos process_stratum_target::write_pc (regcache *regcache, CORE_ADDR pc)
    622  1.1  christos {
    623  1.1  christos   gdb_assert_not_reached ("process_target::write_pc: Unable to update PC");
    624  1.1  christos }
    625  1.1  christos 
    626  1.1  christos bool
    627  1.1  christos process_stratum_target::supports_thread_stopped ()
    628  1.1  christos {
    629  1.1  christos   return false;
    630  1.1  christos }
    631  1.1  christos 
    632  1.1  christos bool
    633  1.1  christos process_stratum_target::thread_stopped (thread_info *thread)
    634  1.1  christos {
    635  1.1  christos   gdb_assert_not_reached ("target op thread_stopped not supported");
    636  1.1  christos }
    637  1.1  christos 
    638  1.1  christos bool
    639  1.1  christos process_stratum_target::supports_get_tib_address ()
    640  1.1  christos {
    641  1.1  christos   return false;
    642  1.1  christos }
    643  1.1  christos 
    644  1.1  christos int
    645  1.1  christos process_stratum_target::get_tib_address (ptid_t ptid, CORE_ADDR *address)
    646  1.1  christos {
    647  1.1  christos   gdb_assert_not_reached ("target op get_tib_address not supported");
    648  1.1  christos }
    649  1.1  christos 
    650  1.1  christos void
    651  1.1  christos process_stratum_target::pause_all (bool freeze)
    652  1.1  christos {
    653  1.1  christos   /* Nop.  */
    654  1.1  christos }
    655  1.1  christos 
    656  1.1  christos void
    657  1.1  christos process_stratum_target::unpause_all (bool unfreeze)
    658  1.1  christos {
    659  1.1  christos   /* Nop.  */
    660  1.1  christos }
    661  1.1  christos 
    662  1.1  christos void
    663  1.1  christos process_stratum_target::stabilize_threads ()
    664  1.1  christos {
    665  1.1  christos   /* Nop.  */
    666  1.1  christos }
    667  1.1  christos 
    668  1.1  christos bool
    669  1.1  christos process_stratum_target::supports_fast_tracepoints ()
    670  1.1  christos {
    671  1.1  christos   return false;
    672  1.1  christos }
    673  1.1  christos 
    674  1.1  christos int
    675  1.1  christos process_stratum_target::install_fast_tracepoint_jump_pad
    676  1.1  christos   (CORE_ADDR tpoint, CORE_ADDR tpaddr, CORE_ADDR collector,
    677  1.1  christos    CORE_ADDR lockaddr, ULONGEST orig_size, CORE_ADDR *jump_entry,
    678  1.1  christos    CORE_ADDR *trampoline, ULONGEST *trampoline_size,
    679  1.1  christos    unsigned char *jjump_pad_insn, ULONGEST *jjump_pad_insn_size,
    680  1.1  christos    CORE_ADDR *adjusted_insn_addr, CORE_ADDR *adjusted_insn_addr_end,
    681  1.1  christos    char *err)
    682  1.1  christos {
    683  1.1  christos   gdb_assert_not_reached ("target op install_fast_tracepoint_jump_pad "
    684  1.1  christos 			  "not supported");
    685  1.1  christos }
    686  1.1  christos 
    687  1.1  christos int
    688  1.1  christos process_stratum_target::get_min_fast_tracepoint_insn_len ()
    689  1.1  christos {
    690  1.1  christos   return 0;
    691  1.1  christos }
    692  1.1  christos 
    693  1.1  christos struct emit_ops *
    694  1.1  christos process_stratum_target::emit_ops ()
    695  1.1  christos {
    696  1.1  christos   return nullptr;
    697  1.1  christos }
    698  1.1  christos 
    699  1.1  christos bool
    700  1.1  christos process_stratum_target::supports_disable_randomization ()
    701  1.1  christos {
    702  1.1  christos   return false;
    703  1.1  christos }
    704  1.1  christos 
    705  1.1  christos bool
    706  1.1  christos process_stratum_target::supports_qxfer_libraries_svr4 ()
    707  1.1  christos {
    708  1.1  christos   return false;
    709  1.1  christos }
    710  1.1  christos 
    711  1.1  christos int
    712  1.1  christos process_stratum_target::qxfer_libraries_svr4 (const char *annex,
    713  1.1  christos 					      unsigned char *readbuf,
    714  1.1  christos 					      unsigned const char *writebuf,
    715  1.1  christos 					      CORE_ADDR offset, int len)
    716  1.1  christos {
    717  1.1  christos   gdb_assert_not_reached ("target op qxfer_libraries_svr4 not supported");
    718  1.1  christos }
    719  1.1  christos 
    720  1.1  christos bool
    721  1.1  christos process_stratum_target::supports_agent ()
    722  1.1  christos {
    723  1.1  christos   return false;
    724  1.1  christos }
    725  1.1  christos 
    726  1.1  christos btrace_target_info *
    727  1.1  christos process_stratum_target::enable_btrace (ptid_t ptid, const btrace_config *conf)
    728  1.1  christos {
    729  1.1  christos   error (_("Target does not support branch tracing."));
    730  1.1  christos }
    731  1.1  christos 
    732  1.1  christos int
    733  1.1  christos process_stratum_target::disable_btrace (btrace_target_info *tinfo)
    734  1.1  christos {
    735  1.1  christos   error (_("Target does not support branch tracing."));
    736  1.1  christos }
    737  1.1  christos 
    738  1.1  christos int
    739  1.1  christos process_stratum_target::read_btrace (btrace_target_info *tinfo,
    740  1.1  christos 			     buffer *buffer,
    741  1.1  christos 			     enum btrace_read_type type)
    742  1.1  christos {
    743  1.1  christos   error (_("Target does not support branch tracing."));
    744  1.1  christos }
    745  1.1  christos 
    746  1.1  christos int
    747  1.1  christos process_stratum_target::read_btrace_conf (const btrace_target_info *tinfo,
    748  1.1  christos 					  buffer *buffer)
    749  1.1  christos {
    750  1.1  christos   error (_("Target does not support branch tracing."));
    751  1.1  christos }
    752  1.1  christos 
    753  1.1  christos bool
    754  1.1  christos process_stratum_target::supports_range_stepping ()
    755  1.1  christos {
    756  1.1  christos   return false;
    757  1.1  christos }
    758  1.1  christos 
    759  1.1  christos bool
    760  1.1  christos process_stratum_target::supports_pid_to_exec_file ()
    761  1.1  christos {
    762  1.1  christos   return false;
    763  1.1  christos }
    764  1.1  christos 
    765  1.1  christos char *
    766  1.1  christos process_stratum_target::pid_to_exec_file (int pid)
    767  1.1  christos {
    768  1.1  christos   gdb_assert_not_reached ("target op pid_to_exec_file not supported");
    769  1.1  christos }
    770  1.1  christos 
    771  1.1  christos bool
    772  1.1  christos process_stratum_target::supports_multifs ()
    773  1.1  christos {
    774  1.1  christos   return false;
    775  1.1  christos }
    776  1.1  christos 
    777  1.1  christos int
    778  1.1  christos process_stratum_target::multifs_open (int pid, const char *filename,
    779  1.1  christos 				      int flags, mode_t mode)
    780  1.1  christos {
    781  1.1  christos   return open (filename, flags, mode);
    782  1.1  christos }
    783  1.1  christos 
    784  1.1  christos int
    785  1.1  christos process_stratum_target::multifs_unlink (int pid, const char *filename)
    786  1.1  christos {
    787  1.1  christos   return unlink (filename);
    788  1.1  christos }
    789  1.1  christos 
    790  1.1  christos ssize_t
    791  1.1  christos process_stratum_target::multifs_readlink (int pid, const char *filename,
    792  1.1  christos 					  char *buf, size_t bufsiz)
    793  1.1  christos {
    794  1.1  christos   return readlink (filename, buf, bufsiz);
    795  1.1  christos }
    796  1.1  christos 
    797  1.1  christos int
    798  1.1  christos process_stratum_target::breakpoint_kind_from_pc (CORE_ADDR *pcptr)
    799  1.1  christos {
    800  1.1  christos   /* The default behavior is to use the size of a breakpoint as the
    801  1.1  christos      kind.  */
    802  1.1  christos   int size = 0;
    803  1.1  christos   sw_breakpoint_from_kind (0, &size);
    804  1.1  christos   return size;
    805  1.1  christos }
    806  1.1  christos 
    807  1.1  christos int
    808  1.1  christos process_stratum_target::breakpoint_kind_from_current_state (CORE_ADDR *pcptr)
    809  1.1  christos {
    810  1.1  christos   return breakpoint_kind_from_pc (pcptr);
    811  1.1  christos }
    812  1.1  christos 
    813  1.1  christos const char *
    814  1.1  christos process_stratum_target::thread_name (ptid_t thread)
    815  1.1  christos {
    816  1.1  christos   return nullptr;
    817  1.1  christos }
    818  1.1  christos 
    819  1.1  christos bool
    820  1.1  christos process_stratum_target::thread_handle (ptid_t ptid, gdb_byte **handle,
    821  1.1  christos 				       int *handle_len)
    822  1.1  christos {
    823  1.1  christos   return false;
    824  1.1  christos }
    825  1.1  christos 
    826  1.1  christos bool
    827  1.1  christos process_stratum_target::supports_software_single_step ()
    828  1.1  christos {
    829  1.1  christos   return false;
    830  1.1  christos }
    831  1.1  christos 
    832  1.1  christos bool
    833  1.1  christos process_stratum_target::supports_catch_syscall ()
    834  1.1  christos {
    835  1.1  christos   return false;
    836  1.1  christos }
    837  1.1  christos 
    838  1.1  christos int
    839  1.1  christos process_stratum_target::get_ipa_tdesc_idx ()
    840  1.1  christos {
    841  1.1  christos   return 0;
    842  1.1  christos }
    843