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