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