gdb/copyright.py: Convert to Python 3
[deliverable/binutils-gdb.git] / gdb / gdbserver / target.h
CommitLineData
ce3a066d 1/* Target operations for the remote server for GDB.
42a4f53d 2 Copyright (C) 2002-2019 Free Software Foundation, Inc.
ce3a066d
DJ
3
4 Contributed by MontaVista Software.
5
6 This file is part of GDB.
7
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
a9762ec7 10 the Free Software Foundation; either version 3 of the License, or
ce3a066d
DJ
11 (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
a9762ec7 19 along with this program. If not, see <http://www.gnu.org/licenses/>. */
ce3a066d 20
1a5c2598
TT
21#ifndef GDBSERVER_TARGET_H
22#define GDBSERVER_TARGET_H
ce3a066d 23
37ce4055 24#include <sys/types.h> /* for mode_t */
721ec300 25#include "target/target.h"
33b60d58
LM
26#include "target/resume.h"
27#include "target/wait.h"
28#include "target/waitstatus.h"
802e8e6d 29#include "mem-break.h"
268a13a5 30#include "gdbsupport/btrace-common.h"
2090129c 31#include <vector>
3360c0bf 32
6a271cae 33struct emit_ops;
9accd112 34struct buffer;
6a6bbd9d 35struct process_info;
6a271cae 36
2bd7c093
PA
37/* This structure describes how to resume a particular thread (or all
38 threads) based on the client's request. If thread is -1, then this
39 entry applies to all threads. These are passed around as an
40 array. */
64386c31
DJ
41
42struct thread_resume
43{
95954743 44 ptid_t thread;
64386c31 45
bd99dc85
PA
46 /* How to "resume". */
47 enum resume_kind kind;
64386c31 48
bd99dc85
PA
49 /* If non-zero, send this signal when we resume, or to stop the
50 thread. If stopping a thread, and this is 0, the target should
51 stop the thread however it best decides to (e.g., SIGSTOP on
30d50328 52 linux; SuspendThread on win32). This is a host signal value (not
2ea28649 53 enum gdb_signal). */
64386c31 54 int sig;
c2d6af84
PA
55
56 /* Range to single step within. Valid only iff KIND is resume_step.
57
58 Single-step once, and then continuing stepping as long as the
59 thread stops in this range. (If the range is empty
60 [STEP_RANGE_START == STEP_RANGE_END], then this is a single-step
61 request.) */
62 CORE_ADDR step_range_start; /* Inclusive */
63 CORE_ADDR step_range_end; /* Exclusive */
64386c31
DJ
64};
65
ce3a066d
DJ
66struct target_ops
67{
68 /* Start a new process.
69
70 PROGRAM is a path to the program to execute.
2090129c
SDJ
71 PROGRAM_ARGS is a standard NULL-terminated array of arguments,
72 to be passed to the inferior as ``argv'' (along with PROGRAM).
ce3a066d 73
a9fa9f7d 74 Returns the new PID on success, -1 on failure. Registers the new
ce3a066d 75 process with the process list. */
2090129c
SDJ
76 int (*create_inferior) (const char *program,
77 const std::vector<char *> &program_args);
ce3a066d 78
ece66d65
JS
79 /* Do additional setup after a new process is created, including
80 exec-wrapper completion. */
81 void (*post_create_inferior) (void);
c06cbd92 82
ce3a066d
DJ
83 /* Attach to a running process.
84
85 PID is the process ID to attach to, specified by the user
1d5315fe
PA
86 or a higher layer.
87
88 Returns -1 if attaching is unsupported, 0 on success, and calls
89 error() otherwise. */
ce3a066d 90
a1928bad 91 int (*attach) (unsigned long pid);
ce3a066d 92
a780ef4f 93 /* Kill process PROC. Return -1 on failure, and 0 on success. */
ce3a066d 94
a780ef4f 95 int (*kill) (process_info *proc);
ce3a066d 96
ef2ddb33 97 /* Detach from process PROC. Return -1 on failure, and 0 on
95954743 98 success. */
6ad8ae5c 99
ef2ddb33 100 int (*detach) (process_info *proc);
444d6139 101
8336d594
PA
102 /* The inferior process has died. Do what is right. */
103
104 void (*mourn) (struct process_info *proc);
105
d105de22 106 /* Wait for process PID to exit. */
ef2ddb33 107
d105de22 108 void (*join) (int pid);
6ad8ae5c 109
ce3a066d
DJ
110 /* Return 1 iff the thread with process ID PID is alive. */
111
95954743 112 int (*thread_alive) (ptid_t pid);
ce3a066d 113
64386c31 114 /* Resume the inferior process. */
ce3a066d 115
2bd7c093 116 void (*resume) (struct thread_resume *resume_info, size_t n);
ce3a066d 117
5b1c542e 118 /* Wait for the inferior process or thread to change state. Store
95954743
PA
119 status through argument pointer STATUS.
120
121 PTID = -1 to wait for any pid to do something, PTID(pid,0,0) to
122 wait for any thread of process pid to do something. Return ptid
123 of child, or -1 in case of error; store status through argument
124 pointer STATUS. OPTIONS is a bit set of options defined as
125 TARGET_W* above. If options contains TARGET_WNOHANG and there's
126 no child stop to report, return is
127 null_ptid/TARGET_WAITKIND_IGNORE. */
ce3a066d 128
95954743 129 ptid_t (*wait) (ptid_t ptid, struct target_waitstatus *status, int options);
ce3a066d
DJ
130
131 /* Fetch registers from the inferior process.
132
133 If REGNO is -1, fetch all registers; otherwise, fetch at least REGNO. */
134
442ea881 135 void (*fetch_registers) (struct regcache *regcache, int regno);
aa691b87 136
ce3a066d
DJ
137 /* Store registers to the inferior process.
138
139 If REGNO is -1, store all registers; otherwise, store at least REGNO. */
140
442ea881 141 void (*store_registers) (struct regcache *regcache, int regno);
ce3a066d 142
90d74c30
PA
143 /* Prepare to read or write memory from the inferior process.
144 Targets use this to do what is necessary to get the state of the
145 inferior such that it is possible to access memory.
146
147 This should generally only be called from client facing routines,
802e8e6d
PA
148 such as gdb_read_memory/gdb_write_memory, or the GDB breakpoint
149 insertion routine.
90d74c30
PA
150
151 Like `read_memory' and `write_memory' below, returns 0 on success
152 and errno on failure. */
153
154 int (*prepare_to_access_memory) (void);
155
156 /* Undo the effects of prepare_to_access_memory. */
157
0146f85b 158 void (*done_accessing_memory) (void);
90d74c30 159
611cb4a5
DJ
160 /* Read memory from the inferior process. This should generally be
161 called through read_inferior_memory, which handles breakpoint shadowing.
ce3a066d 162
c3e735a6
DJ
163 Read LEN bytes at MEMADDR into a buffer at MYADDR.
164
165 Returns 0 on success and errno on failure. */
ce3a066d 166
f450004a 167 int (*read_memory) (CORE_ADDR memaddr, unsigned char *myaddr, int len);
ce3a066d 168
611cb4a5 169 /* Write memory to the inferior process. This should generally be
4196ab2a 170 called through target_write_memory, which handles breakpoint shadowing.
ce3a066d
DJ
171
172 Write LEN bytes from the buffer at MYADDR to MEMADDR.
173
174 Returns 0 on success and errno on failure. */
175
f450004a
DJ
176 int (*write_memory) (CORE_ADDR memaddr, const unsigned char *myaddr,
177 int len);
2f2893d9
DJ
178
179 /* Query GDB for the values of any symbols we're interested in.
180 This function is called whenever we receive a "qSymbols::"
181 query, which corresponds to every time more symbols (might)
611cb4a5
DJ
182 become available. NULL if we aren't interested in any
183 symbols. */
2f2893d9
DJ
184
185 void (*look_up_symbols) (void);
e5379b03 186
ef57601b
PA
187 /* Send an interrupt request to the inferior process,
188 however is appropriate. */
189
190 void (*request_interrupt) (void);
aa691b87
RM
191
192 /* Read auxiliary vector data from the inferior process.
193
194 Read LEN bytes at OFFSET into a buffer at MYADDR. */
195
f450004a
DJ
196 int (*read_auxv) (CORE_ADDR offset, unsigned char *myaddr,
197 unsigned int len);
e013ee27 198
802e8e6d
PA
199 /* Returns true if GDB Z breakpoint type TYPE is supported, false
200 otherwise. The type is coded as follows:
c6314022
AR
201 '0' - software-breakpoint
202 '1' - hardware-breakpoint
203 '2' - write watchpoint
204 '3' - read watchpoint
802e8e6d
PA
205 '4' - access watchpoint
206 */
207 int (*supports_z_point_type) (char z_type);
208
209 /* Insert and remove a break or watchpoint.
210 Returns 0 on success, -1 on failure and 1 on unsupported. */
e013ee27 211
802e8e6d
PA
212 int (*insert_point) (enum raw_bkpt_type type, CORE_ADDR addr,
213 int size, struct raw_breakpoint *bp);
214 int (*remove_point) (enum raw_bkpt_type type, CORE_ADDR addr,
215 int size, struct raw_breakpoint *bp);
e013ee27 216
1ec68e26
PA
217 /* Returns 1 if the target stopped because it executed a software
218 breakpoint instruction, 0 otherwise. */
219 int (*stopped_by_sw_breakpoint) (void);
220
221 /* Returns true if the target knows whether a trap was caused by a
222 SW breakpoint triggering. */
223 int (*supports_stopped_by_sw_breakpoint) (void);
224
225 /* Returns 1 if the target stopped for a hardware breakpoint. */
226 int (*stopped_by_hw_breakpoint) (void);
227
228 /* Returns true if the target knows whether a trap was caused by a
229 HW breakpoint triggering. */
230 int (*supports_stopped_by_hw_breakpoint) (void);
231
70b90b91
YQ
232 /* Returns true if the target can do hardware single step. */
233 int (*supports_hardware_single_step) (void);
45614f15 234
e013ee27
OF
235 /* Returns 1 if target was stopped due to a watchpoint hit, 0 otherwise. */
236
237 int (*stopped_by_watchpoint) (void);
238
1b3f6016 239 /* Returns the address associated with the watchpoint that hit, if any;
e013ee27
OF
240 returns 0 otherwise. */
241
242 CORE_ADDR (*stopped_data_address) (void);
243
52fb6437
NS
244 /* Reports the text, data offsets of the executable. This is
245 needed for uclinux where the executable is relocated during load
246 time. */
1b3f6016 247
52fb6437 248 int (*read_offsets) (CORE_ADDR *text, CORE_ADDR *data);
dae5f5cf
DJ
249
250 /* Fetch the address associated with a specific thread local storage
251 area, determined by the specified THREAD, OFFSET, and LOAD_MODULE.
252 Stores it in *ADDRESS and returns zero on success; otherwise returns
253 an error code. A return value of -1 means this system does not
254 support the operation. */
255
256 int (*get_tls_address) (struct thread_info *thread, CORE_ADDR offset,
257 CORE_ADDR load_module, CORE_ADDR *address);
23181151 258
59a016f0
PA
259 /* Fill BUF with an hostio error packet representing the last hostio
260 error. */
261 void (*hostio_last_error) (char *buf);
07e059b5
VP
262
263 /* Read/Write OS data using qXfer packets. */
264 int (*qxfer_osdata) (const char *annex, unsigned char *readbuf,
1b3f6016 265 unsigned const char *writebuf, CORE_ADDR offset,
07e059b5 266 int len);
4aa995e1
PA
267
268 /* Read/Write extra signal info. */
269 int (*qxfer_siginfo) (const char *annex, unsigned char *readbuf,
270 unsigned const char *writebuf,
271 CORE_ADDR offset, int len);
bd99dc85
PA
272
273 int (*supports_non_stop) (void);
274
275 /* Enables async target events. Returns the previous enable
276 state. */
277 int (*async) (int enable);
278
279 /* Switch to non-stop (1) or all-stop (0) mode. Return 0 on
280 success, -1 otherwise. */
281 int (*start_non_stop) (int);
cf8fd78b
PA
282
283 /* Returns true if the target supports multi-process debugging. */
284 int (*supports_multi_process) (void);
cdbfd419 285
89245bc0
DB
286 /* Returns true if fork events are supported. */
287 int (*supports_fork_events) (void);
288
289 /* Returns true if vfork events are supported. */
290 int (*supports_vfork_events) (void);
291
94585166
DB
292 /* Returns true if exec events are supported. */
293 int (*supports_exec_events) (void);
294
de0d863e
DB
295 /* Allows target to re-initialize connection-specific settings. */
296 void (*handle_new_gdb_connection) (void);
297
cdbfd419
PP
298 /* If not NULL, target-specific routine to process monitor command.
299 Returns 1 if handled, or 0 to perform default processing. */
300 int (*handle_monitor_command) (char *);
dc146f7c
VP
301
302 /* Returns the core given a thread, or -1 if not known. */
303 int (*core_of_thread) (ptid_t);
1570b33e 304
78d85199
YQ
305 /* Read loadmaps. Read LEN bytes at OFFSET into a buffer at MYADDR. */
306 int (*read_loadmap) (const char *annex, CORE_ADDR offset,
881127c9 307 unsigned char *myaddr, unsigned int len);
78d85199 308
06e03fff
PA
309 /* Target specific qSupported support. FEATURES is an array of
310 features with COUNT elements. */
311 void (*process_qsupported) (char **features, int count);
219f2f23
PA
312
313 /* Return 1 if the target supports tracepoints, 0 (or leave the
314 callback NULL) otherwise. */
315 int (*supports_tracepoints) (void);
316
317 /* Read PC from REGCACHE. */
318 CORE_ADDR (*read_pc) (struct regcache *regcache);
319
320 /* Write PC to REGCACHE. */
321 void (*write_pc) (struct regcache *regcache, CORE_ADDR pc);
8336d594
PA
322
323 /* Return true if THREAD is known to be stopped now. */
324 int (*thread_stopped) (struct thread_info *thread);
325
711e434b
PM
326 /* Read Thread Information Block address. */
327 int (*get_tib_address) (ptid_t ptid, CORE_ADDR *address);
7984d532 328
609086b1 329 /* Pause all threads. If FREEZE, arrange for any resume attempt to
7984d532
PA
330 be ignored until an unpause_all call unfreezes threads again.
331 There can be nested calls to pause_all, so a freeze counter
332 should be maintained. */
333 void (*pause_all) (int freeze);
334
335 /* Unpause all threads. Threads that hadn't been resumed by the
336 client should be left stopped. Basically a pause/unpause call
337 pair should not end up resuming threads that were stopped before
338 the pause call. */
339 void (*unpause_all) (int unfreeze);
340
fa593d66
PA
341 /* Stabilize all threads. That is, force them out of jump pads. */
342 void (*stabilize_threads) (void);
343
344 /* Install a fast tracepoint jump pad. TPOINT is the address of the
345 tracepoint internal object as used by the IPA agent. TPADDR is
346 the address of tracepoint. COLLECTOR is address of the function
347 the jump pad redirects to. LOCKADDR is the address of the jump
348 pad lock object. ORIG_SIZE is the size in bytes of the
349 instruction at TPADDR. JUMP_ENTRY points to the address of the
350 jump pad entry, and on return holds the address past the end of
405f8e94
SS
351 the created jump pad. If a trampoline is created by the function,
352 then TRAMPOLINE and TRAMPOLINE_SIZE return the address and size of
353 the trampoline, else they remain unchanged. JJUMP_PAD_INSN is a
354 buffer containing a copy of the instruction at TPADDR.
355 ADJUST_INSN_ADDR and ADJUST_INSN_ADDR_END are output parameters that
356 return the address range where the instruction at TPADDR was relocated
357 to. If an error occurs, the ERR may be used to pass on an error
358 message. */
fa593d66
PA
359 int (*install_fast_tracepoint_jump_pad) (CORE_ADDR tpoint, CORE_ADDR tpaddr,
360 CORE_ADDR collector,
361 CORE_ADDR lockaddr,
362 ULONGEST orig_size,
363 CORE_ADDR *jump_entry,
405f8e94
SS
364 CORE_ADDR *trampoline,
365 ULONGEST *trampoline_size,
fa593d66
PA
366 unsigned char *jjump_pad_insn,
367 ULONGEST *jjump_pad_insn_size,
368 CORE_ADDR *adjusted_insn_addr,
405f8e94
SS
369 CORE_ADDR *adjusted_insn_addr_end,
370 char *err);
6a271cae
PA
371
372 /* Return the bytecode operations vector for the current inferior.
373 Returns NULL if bytecode compilation is not supported. */
374 struct emit_ops *(*emit_ops) (void);
03583c20
UW
375
376 /* Returns true if the target supports disabling randomization. */
377 int (*supports_disable_randomization) (void);
405f8e94
SS
378
379 /* Return the minimum length of an instruction that can be safely overwritten
380 for use as a fast tracepoint. */
381 int (*get_min_fast_tracepoint_insn_len) (void);
2268b414
JK
382
383 /* Read solib info on SVR4 platforms. */
384 int (*qxfer_libraries_svr4) (const char *annex, unsigned char *readbuf,
385 unsigned const char *writebuf,
386 CORE_ADDR offset, int len);
d1feda86
YQ
387
388 /* Return true if target supports debugging agent. */
389 int (*supports_agent) (void);
9accd112 390
f4abbc16
MM
391 /* Enable branch tracing for PTID based on CONF and allocate a branch trace
392 target information struct for reading and for disabling branch trace. */
393 struct btrace_target_info *(*enable_btrace)
394 (ptid_t ptid, const struct btrace_config *conf);
9accd112 395
969c39fb
MM
396 /* Disable branch tracing.
397 Returns zero on success, non-zero otherwise. */
9accd112
MM
398 int (*disable_btrace) (struct btrace_target_info *tinfo);
399
add67df8 400 /* Read branch trace data into buffer.
969c39fb
MM
401 Return 0 on success; print an error message into BUFFER and return -1,
402 otherwise. */
add67df8
PA
403 int (*read_btrace) (struct btrace_target_info *, struct buffer *,
404 enum btrace_read_type type);
9accd112 405
f4abbc16
MM
406 /* Read the branch trace configuration into BUFFER.
407 Return 0 on success; print an error message into BUFFER and return -1
408 otherwise. */
409 int (*read_btrace_conf) (const struct btrace_target_info *, struct buffer *);
410
c2d6af84
PA
411 /* Return true if target supports range stepping. */
412 int (*supports_range_stepping) (void);
e57f1de3
GB
413
414 /* Return the full absolute name of the executable file that was
415 run to create the process PID. If the executable file cannot
416 be determined, NULL is returned. Otherwise, a pointer to a
417 character string containing the pathname is returned. This
418 string should be copied into a buffer by the client if the string
419 will not be immediately used, or if it must persist. */
420 char *(*pid_to_exec_file) (int pid);
14d2069a
GB
421
422 /* Multiple-filesystem-aware open. Like open(2), but operating in
423 the filesystem as it appears to process PID. Systems where all
424 processes share a common filesystem should set this to NULL.
425 If NULL, the caller should fall back to open(2). */
426 int (*multifs_open) (int pid, const char *filename,
427 int flags, mode_t mode);
428
429 /* Multiple-filesystem-aware unlink. Like unlink(2), but operates
430 in the filesystem as it appears to process PID. Systems where
431 all processes share a common filesystem should set this to NULL.
432 If NULL, the caller should fall back to unlink(2). */
433 int (*multifs_unlink) (int pid, const char *filename);
434
435 /* Multiple-filesystem-aware readlink. Like readlink(2), but
436 operating in the filesystem as it appears to process PID.
437 Systems where all processes share a common filesystem should
438 set this to NULL. If NULL, the caller should fall back to
439 readlink(2). */
440 ssize_t (*multifs_readlink) (int pid, const char *filename,
441 char *buf, size_t bufsiz);
dd373349
AT
442
443 /* Return the breakpoint kind for this target based on PC. The PCPTR is
444 adjusted to the real memory location in case a flag (e.g., the Thumb bit on
445 ARM) was present in the PC. */
446 int (*breakpoint_kind_from_pc) (CORE_ADDR *pcptr);
447
448 /* Return the software breakpoint from KIND. KIND can have target
449 specific meaning like the Z0 kind parameter.
450 SIZE is set to the software breakpoint's length in memory. */
451 const gdb_byte *(*sw_breakpoint_from_kind) (int kind, int *size);
79efa585
SM
452
453 /* Return the thread's name, or NULL if the target is unable to determine it.
454 The returned value must not be freed by the caller. */
455 const char *(*thread_name) (ptid_t thread);
769ef81f
AT
456
457 /* Return the breakpoint kind for this target based on the current
458 processor state (e.g. the current instruction mode on ARM) and the
459 PC. The PCPTR is adjusted to the real memory location in case a flag
460 (e.g., the Thumb bit on ARM) is present in the PC. */
461 int (*breakpoint_kind_from_current_state) (CORE_ADDR *pcptr);
7d00775e
AT
462
463 /* Returns true if the target can software single step. */
464 int (*supports_software_single_step) (void);
82075af2
JS
465
466 /* Return 1 if the target supports catch syscall, 0 (or leave the
467 callback NULL) otherwise. */
468 int (*supports_catch_syscall) (void);
ae91f625
MK
469
470 /* Return tdesc index for IPA. */
471 int (*get_ipa_tdesc_idx) (void);
f6327dcb
KB
472
473 /* Thread ID to (numeric) thread handle: Return true on success and
474 false for failure. Return pointer to thread handle via HANDLE
475 and the handle's length via HANDLE_LEN. */
476 bool (*thread_handle) (ptid_t ptid, gdb_byte **handle, int *handle_len);
ce3a066d
DJ
477};
478
479extern struct target_ops *the_target;
480
481void set_target_ops (struct target_ops *);
482
2090129c
SDJ
483#define create_inferior(program, program_args) \
484 (*the_target->create_inferior) (program, program_args)
ce3a066d 485
ece66d65
JS
486#define target_post_create_inferior() \
487 do \
488 { \
489 if (the_target->post_create_inferior != NULL) \
490 (*the_target->post_create_inferior) (); \
c06cbd92
YQ
491 } while (0)
492
ce3a066d
DJ
493#define myattach(pid) \
494 (*the_target->attach) (pid)
495
a780ef4f 496int kill_inferior (process_info *proc);
ce3a066d 497
89245bc0
DB
498#define target_supports_fork_events() \
499 (the_target->supports_fork_events ? \
500 (*the_target->supports_fork_events) () : 0)
501
502#define target_supports_vfork_events() \
503 (the_target->supports_vfork_events ? \
504 (*the_target->supports_vfork_events) () : 0)
505
94585166
DB
506#define target_supports_exec_events() \
507 (the_target->supports_exec_events ? \
508 (*the_target->supports_exec_events) () : 0)
509
452003ef
PA
510#define target_handle_new_gdb_connection() \
511 do \
512 { \
513 if (the_target->handle_new_gdb_connection != NULL) \
514 (*the_target->handle_new_gdb_connection) (); \
515 } while (0)
de0d863e 516
ef2ddb33
PA
517#define detach_inferior(proc) \
518 (*the_target->detach) (proc)
6ad8ae5c 519
ce3a066d
DJ
520#define mythread_alive(pid) \
521 (*the_target->thread_alive) (pid)
522
442ea881
PA
523#define fetch_inferior_registers(regcache, regno) \
524 (*the_target->fetch_registers) (regcache, regno)
ce3a066d 525
442ea881
PA
526#define store_inferior_registers(regcache, regno) \
527 (*the_target->store_registers) (regcache, regno)
ce3a066d 528
d105de22
TT
529#define join_inferior(pid) \
530 (*the_target->join) (pid)
444d6139 531
bd99dc85
PA
532#define target_supports_non_stop() \
533 (the_target->supports_non_stop ? (*the_target->supports_non_stop ) () : 0)
534
535#define target_async(enable) \
536 (the_target->async ? (*the_target->async) (enable) : 0)
537
06e03fff 538#define target_process_qsupported(features, count) \
8336d594
PA
539 do \
540 { \
541 if (the_target->process_qsupported) \
06e03fff 542 the_target->process_qsupported (features, count); \
8336d594 543 } while (0)
1570b33e 544
82075af2
JS
545#define target_supports_catch_syscall() \
546 (the_target->supports_catch_syscall ? \
547 (*the_target->supports_catch_syscall) () : 0)
548
ae91f625
MK
549#define target_get_ipa_tdesc_idx() \
550 (the_target->get_ipa_tdesc_idx \
551 ? (*the_target->get_ipa_tdesc_idx) () : 0)
552
219f2f23
PA
553#define target_supports_tracepoints() \
554 (the_target->supports_tracepoints \
555 ? (*the_target->supports_tracepoints) () : 0)
556
fa593d66
PA
557#define target_supports_fast_tracepoints() \
558 (the_target->install_fast_tracepoint_jump_pad != NULL)
559
405f8e94
SS
560#define target_get_min_fast_tracepoint_insn_len() \
561 (the_target->get_min_fast_tracepoint_insn_len \
562 ? (*the_target->get_min_fast_tracepoint_insn_len) () : 0)
563
8336d594
PA
564#define thread_stopped(thread) \
565 (*the_target->thread_stopped) (thread)
566
7984d532
PA
567#define pause_all(freeze) \
568 do \
569 { \
570 if (the_target->pause_all) \
571 (*the_target->pause_all) (freeze); \
572 } while (0)
573
574#define unpause_all(unfreeze) \
575 do \
576 { \
577 if (the_target->unpause_all) \
578 (*the_target->unpause_all) (unfreeze); \
579 } while (0)
580
fa593d66
PA
581#define stabilize_threads() \
582 do \
583 { \
584 if (the_target->stabilize_threads) \
585 (*the_target->stabilize_threads) (); \
586 } while (0)
587
588#define install_fast_tracepoint_jump_pad(tpoint, tpaddr, \
589 collector, lockaddr, \
590 orig_size, \
405f8e94
SS
591 jump_entry, \
592 trampoline, trampoline_size, \
593 jjump_pad_insn, \
fa593d66
PA
594 jjump_pad_insn_size, \
595 adjusted_insn_addr, \
405f8e94
SS
596 adjusted_insn_addr_end, \
597 err) \
fa593d66
PA
598 (*the_target->install_fast_tracepoint_jump_pad) (tpoint, tpaddr, \
599 collector,lockaddr, \
600 orig_size, jump_entry, \
405f8e94
SS
601 trampoline, \
602 trampoline_size, \
fa593d66
PA
603 jjump_pad_insn, \
604 jjump_pad_insn_size, \
605 adjusted_insn_addr, \
405f8e94
SS
606 adjusted_insn_addr_end, \
607 err)
fa593d66 608
6a271cae
PA
609#define target_emit_ops() \
610 (the_target->emit_ops ? (*the_target->emit_ops) () : NULL)
611
03583c20
UW
612#define target_supports_disable_randomization() \
613 (the_target->supports_disable_randomization ? \
614 (*the_target->supports_disable_randomization) () : 0)
615
d1feda86
YQ
616#define target_supports_agent() \
617 (the_target->supports_agent ? \
618 (*the_target->supports_agent) () : 0)
619
b1223e78
MM
620static inline struct btrace_target_info *
621target_enable_btrace (ptid_t ptid, const struct btrace_config *conf)
622{
623 if (the_target->enable_btrace == nullptr)
624 error (_("Target does not support branch tracing."));
625
626 return (*the_target->enable_btrace) (ptid, conf);
627}
628
629static inline int
630target_disable_btrace (struct btrace_target_info *tinfo)
631{
632 if (the_target->disable_btrace == nullptr)
633 error (_("Target does not support branch tracing."));
9accd112 634
b1223e78
MM
635 return (*the_target->disable_btrace) (tinfo);
636}
9accd112 637
b1223e78
MM
638static inline int
639target_read_btrace (struct btrace_target_info *tinfo,
640 struct buffer *buffer,
641 enum btrace_read_type type)
642{
643 if (the_target->read_btrace == nullptr)
644 error (_("Target does not support branch tracing."));
645
646 return (*the_target->read_btrace) (tinfo, buffer, type);
647}
648
649static inline int
650target_read_btrace_conf (struct btrace_target_info *tinfo,
651 struct buffer *buffer)
652{
653 if (the_target->read_btrace_conf == nullptr)
654 error (_("Target does not support branch tracing."));
9accd112 655
b1223e78
MM
656 return (*the_target->read_btrace_conf) (tinfo, buffer);
657}
f4abbc16 658
c2d6af84
PA
659#define target_supports_range_stepping() \
660 (the_target->supports_range_stepping ? \
661 (*the_target->supports_range_stepping) () : 0)
662
1ec68e26
PA
663#define target_supports_stopped_by_sw_breakpoint() \
664 (the_target->supports_stopped_by_sw_breakpoint ? \
665 (*the_target->supports_stopped_by_sw_breakpoint) () : 0)
666
667#define target_stopped_by_sw_breakpoint() \
668 (the_target->stopped_by_sw_breakpoint ? \
669 (*the_target->stopped_by_sw_breakpoint) () : 0)
670
671#define target_supports_stopped_by_hw_breakpoint() \
672 (the_target->supports_stopped_by_hw_breakpoint ? \
673 (*the_target->supports_stopped_by_hw_breakpoint) () : 0)
674
70b90b91
YQ
675#define target_supports_hardware_single_step() \
676 (the_target->supports_hardware_single_step ? \
677 (*the_target->supports_hardware_single_step) () : 0)
45614f15 678
1ec68e26
PA
679#define target_stopped_by_hw_breakpoint() \
680 (the_target->stopped_by_hw_breakpoint ? \
681 (*the_target->stopped_by_hw_breakpoint) () : 0)
682
2e6ee069
AT
683#define target_breakpoint_kind_from_pc(pcptr) \
684 (the_target->breakpoint_kind_from_pc \
685 ? (*the_target->breakpoint_kind_from_pc) (pcptr) \
686 : default_breakpoint_kind_from_pc (pcptr))
687
769ef81f
AT
688#define target_breakpoint_kind_from_current_state(pcptr) \
689 (the_target->breakpoint_kind_from_current_state \
690 ? (*the_target->breakpoint_kind_from_current_state) (pcptr) \
691 : target_breakpoint_kind_from_pc (pcptr))
692
7d00775e
AT
693#define target_supports_software_single_step() \
694 (the_target->supports_software_single_step ? \
695 (*the_target->supports_software_single_step) () : 0)
696
bd99dc85
PA
697/* Start non-stop mode, returns 0 on success, -1 on failure. */
698
699int start_non_stop (int nonstop);
700
95954743
PA
701ptid_t mywait (ptid_t ptid, struct target_waitstatus *ourstatus, int options,
702 int connected_wait);
0d62e5e8 703
a67a9fae
PA
704/* Prepare to read or write memory from the inferior process. See the
705 corresponding target_ops methods for more details. */
90d74c30 706
a67a9fae
PA
707int prepare_to_access_memory (void);
708void done_accessing_memory (void);
90d74c30 709
3e10640f
YQ
710#define target_core_of_thread(ptid) \
711 (the_target->core_of_thread ? (*the_target->core_of_thread) (ptid) \
712 : -1)
713
79efa585
SM
714#define target_thread_name(ptid) \
715 (the_target->thread_name ? (*the_target->thread_name) (ptid) \
716 : NULL)
717
f6327dcb
KB
718#define target_thread_handle(ptid, handle, handle_len) \
719 (the_target->thread_handle ? (*the_target->thread_handle) \
720 (ptid, handle, handle_len) \
721 : false)
722
f450004a 723int read_inferior_memory (CORE_ADDR memaddr, unsigned char *myaddr, int len);
ce3a066d 724
f557a88a 725int set_desired_thread ();
ce3a066d 726
95954743
PA
727const char *target_pid_to_str (ptid_t);
728
70b90b91
YQ
729int target_can_do_hardware_single_step (void);
730
2e6ee069
AT
731int default_breakpoint_kind_from_pc (CORE_ADDR *pcptr);
732
1a5c2598 733#endif /* GDBSERVER_TARGET_H */
This page took 1.711249 seconds and 4 git commands to generate.