OSDN Git Service

gdbstub: move GDBState to shared internals header
[qmiga/qemu.git] / gdbstub / internals.h
1 /*
2  * gdbstub internals
3  *
4  * Copyright (c) 2022 Linaro Ltd
5  *
6  * SPDX-License-Identifier: GPL-2.0-or-later
7  */
8
9 #ifndef GDBSTUB_INTERNALS_H
10 #define GDBSTUB_INTERNALS_H
11
12 #include "exec/cpu-common.h"
13
14 #define MAX_PACKET_LENGTH 4096
15
16 /*
17  * Shared structures and definitions
18  */
19
20 typedef struct GDBProcess {
21     uint32_t pid;
22     bool attached;
23
24     char target_xml[1024];
25 } GDBProcess;
26
27 enum RSState {
28     RS_INACTIVE,
29     RS_IDLE,
30     RS_GETLINE,
31     RS_GETLINE_ESC,
32     RS_GETLINE_RLE,
33     RS_CHKSUM1,
34     RS_CHKSUM2,
35 };
36
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];
44     int line_buf_index;
45     int line_sum; /* running checksum */
46     int line_csum; /* checksum at the end of the packet */
47     GByteArray *last_packet;
48     int signal;
49     bool multiprocess;
50     GDBProcess *processes;
51     int process_num;
52     char syscall_buf[256];
53     gdb_syscall_complete_cb current_syscall_cb;
54     GString *str_buf;
55     GByteArray *mem_buf;
56     int sstep_flags;
57     int supported_sstep_flags;
58 } GDBState;
59
60 /*
61  * Break/Watch point support - there is an implementation for softmmu
62  * and user mode.
63  */
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);
68
69 #endif /* GDBSTUB_INTERNALS_H */