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