4 * Copyright (c) 2022 Linaro Ltd
6 * SPDX-License-Identifier: GPL-2.0-or-later
9 #ifndef GDBSTUB_INTERNALS_H
10 #define GDBSTUB_INTERNALS_H
12 #include "exec/cpu-common.h"
14 #define MAX_PACKET_LENGTH 4096
17 * Shared structures and definitions
20 typedef struct GDBProcess {
24 char target_xml[1024];
37 typedef struct GDBState {
38 bool init; /* have we been initialised? */
39 CPUState *c_cpu; /* current CPU for step/continue ops */
40 CPUState *g_cpu; /* current CPU for other ops */
41 CPUState *query_cpu; /* for q{f|s}ThreadInfo */
42 enum RSState state; /* parsing state */
43 char line_buf[MAX_PACKET_LENGTH];
45 int line_sum; /* running checksum */
46 int line_csum; /* checksum at the end of the packet */
47 GByteArray *last_packet;
50 GDBProcess *processes;
52 char syscall_buf[256];
53 gdb_syscall_complete_cb current_syscall_cb;
57 int supported_sstep_flags;
61 * Break/Watch point support - there is an implementation for softmmu
64 bool gdb_supports_guest_debug(void);
65 int gdb_breakpoint_insert(CPUState *cs, int type, vaddr addr, vaddr len);
66 int gdb_breakpoint_remove(CPUState *cs, int type, vaddr addr, vaddr len);
67 void gdb_breakpoint_remove_all(CPUState *cs);
69 #endif /* GDBSTUB_INTERNALS_H */