[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4.5 06/29] gdbstub: move GDBState to shared internals header
From: |
Richard Henderson |
Subject: |
[PATCH v4.5 06/29] gdbstub: move GDBState to shared internals header |
Date: |
Thu, 2 Mar 2023 18:57:42 -0800 |
From: Alex Bennée <alex.bennee@linaro.org>
We are about to split softmmu and user mode helpers into different
files. To facilitate this we will need to share access to the GDBState
between those files.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20230302190846.2593720-7-alex.bennee@linaro.org>
---
gdbstub/internals.h | 50 +++++++++++++++++++++++++++++++++++++++++++++
gdbstub/gdbstub.c | 42 -------------------------------------
2 files changed, 50 insertions(+), 42 deletions(-)
diff --git a/gdbstub/internals.h b/gdbstub/internals.h
index 7df0e11c47..32daaf73a3 100644
--- a/gdbstub/internals.h
+++ b/gdbstub/internals.h
@@ -11,6 +11,56 @@
#include "exec/cpu-common.h"
+#define MAX_PACKET_LENGTH 4096
+
+/*
+ * Shared structures and definitions
+ */
+
+typedef struct GDBProcess {
+ uint32_t pid;
+ bool attached;
+
+ char target_xml[1024];
+} GDBProcess;
+
+enum RSState {
+ RS_INACTIVE,
+ RS_IDLE,
+ RS_GETLINE,
+ RS_GETLINE_ESC,
+ RS_GETLINE_RLE,
+ RS_CHKSUM1,
+ RS_CHKSUM2,
+};
+
+typedef struct GDBState {
+ bool init; /* have we been initialised? */
+ CPUState *c_cpu; /* current CPU for step/continue ops */
+ CPUState *g_cpu; /* current CPU for other ops */
+ CPUState *query_cpu; /* for q{f|s}ThreadInfo */
+ enum RSState state; /* parsing state */
+ char line_buf[MAX_PACKET_LENGTH];
+ int line_buf_index;
+ int line_sum; /* running checksum */
+ int line_csum; /* checksum at the end of the packet */
+ GByteArray *last_packet;
+ int signal;
+ bool multiprocess;
+ GDBProcess *processes;
+ int process_num;
+ char syscall_buf[256];
+ gdb_syscall_complete_cb current_syscall_cb;
+ GString *str_buf;
+ GByteArray *mem_buf;
+ int sstep_flags;
+ int supported_sstep_flags;
+} GDBState;
+
+/*
+ * Break/Watch point support - there is an implementation for softmmu
+ * and user mode.
+ */
bool gdb_supports_guest_debug(void);
int gdb_breakpoint_insert(CPUState *cs, int type, vaddr addr, vaddr len);
int gdb_breakpoint_remove(CPUState *cs, int type, vaddr addr, vaddr len);
diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c
index 1e6f8978b5..ef506faa8e 100644
--- a/gdbstub/gdbstub.c
+++ b/gdbstub/gdbstub.c
@@ -41,8 +41,6 @@
#include "hw/boards.h"
#endif
-#define MAX_PACKET_LENGTH 4096
-
#include "qemu/sockets.h"
#include "sysemu/hw_accel.h"
#include "sysemu/runstate.h"
@@ -325,23 +323,6 @@ typedef struct GDBRegisterState {
struct GDBRegisterState *next;
} GDBRegisterState;
-typedef struct GDBProcess {
- uint32_t pid;
- bool attached;
-
- char target_xml[1024];
-} GDBProcess;
-
-enum RSState {
- RS_INACTIVE,
- RS_IDLE,
- RS_GETLINE,
- RS_GETLINE_ESC,
- RS_GETLINE_RLE,
- RS_CHKSUM1,
- RS_CHKSUM2,
-};
-
#ifdef CONFIG_USER_ONLY
typedef struct {
int fd;
@@ -357,29 +338,6 @@ typedef struct {
static GDBSystemState gdbserver_system_state;
#endif
-typedef struct GDBState {
- bool init; /* have we been initialised? */
- CPUState *c_cpu; /* current CPU for step/continue ops */
- CPUState *g_cpu; /* current CPU for other ops */
- CPUState *query_cpu; /* for q{f|s}ThreadInfo */
- enum RSState state; /* parsing state */
- char line_buf[MAX_PACKET_LENGTH];
- int line_buf_index;
- int line_sum; /* running checksum */
- int line_csum; /* checksum at the end of the packet */
- GByteArray *last_packet;
- int signal;
- bool multiprocess;
- GDBProcess *processes;
- int process_num;
- char syscall_buf[256];
- gdb_syscall_complete_cb current_syscall_cb;
- GString *str_buf;
- GByteArray *mem_buf;
- int sstep_flags;
- int supported_sstep_flags;
-} GDBState;
-
static GDBState gdbserver_state;
static void init_gdbserver_state(void)
--
2.34.1
- [PATCH v4.5 00/29] gdbstub/next: re-organise and split build, Richard Henderson, 2023/03/02
- [PATCH v4.5 01/29] gdbstub/internals.h: clean up include guard, Richard Henderson, 2023/03/02
- [PATCH v4.5 02/29] gdbstub: fix-up copyright and license files, Richard Henderson, 2023/03/02
- [PATCH v4.5 05/29] gdbstub: define separate user/system structures, Richard Henderson, 2023/03/02
- [PATCH v4.5 06/29] gdbstub: move GDBState to shared internals header,
Richard Henderson <=
- [PATCH v4.5 08/29] gdbstub: move fromhex/tohex routines to internals, Richard Henderson, 2023/03/02
- [PATCH v4.5 09/29] gdbstub: make various helpers visible to the rest of the module, Richard Henderson, 2023/03/02
- [PATCH v4.5 10/29] gdbstub: move chunk of softmmu functionality to own file, Richard Henderson, 2023/03/02
- [PATCH v4.5 12/29] gdbstub: rationalise signal mapping in softmmu, Richard Henderson, 2023/03/02
- [PATCH v4.5 11/29] gdbstub: move chunks of user code into own files, Richard Henderson, 2023/03/02
- [PATCH v4.5 03/29] gdbstub: Make syscall_complete/[gs]et_reg target-agnostic typedefs, Richard Henderson, 2023/03/02
- [PATCH v4.5 04/29] gdbstub: clean-up indent on gdb_exit, Richard Henderson, 2023/03/02
- [PATCH v4.5 16/29] gdbstub: introduce gdb_get_max_cpus, Richard Henderson, 2023/03/02
- [PATCH v4.5 13/29] gdbstub: abstract target specific details from gdb_put_packet_binary, Richard Henderson, 2023/03/02
- [PATCH v4.5 14/29] gdbstub: specialise handle_query_attached, Richard Henderson, 2023/03/02