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