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