On 12/16/22 03:22, Alex Bennée wrote:
In preparation for moving user/softmmu specific bits from the main
gdbstub file we need to separate the connection details to what will
eventually become an anonymous pointer.
Signed-off-by: Alex Bennée <[email protected]>
---
gdbstub/gdbstub.c | 99 +++++++++++++++++++++++++++--------------------
1 file changed, 58 insertions(+), 41 deletions(-)
diff --git a/gdbstub/gdbstub.c b/gdbstub/gdbstub.c
index be88ca0d71..14ce911bf2 100644
--- a/gdbstub/gdbstub.c
+++ b/gdbstub/gdbstub.c
@@ -342,6 +342,20 @@ enum RSState {
RS_CHKSUM1,
RS_CHKSUM2,
};
+
+#ifdef CONFIG_USER_ONLY
+typedef struct {
+ int fd;
+ char *socket_path;
+ int running_state;
+} GDBConnection;
+#else
+typedef struct {
+ CharBackend chr;
+ Chardev *mon_chr;
+} GDBConnection;
+#endif
You added the struct tag in the next patch. Move it back if you need it,
otherwise drop it.
+ GDBConnection *connection;
bool multiprocess;
GDBProcess *processes;
int process_num;
@@ -392,6 +399,12 @@ static void init_gdbserver_state(void)
gdbserver_state.supported_sstep_flags =
accel_supported_gdbstub_sstep_flags();
gdbserver_state.sstep_flags = SSTEP_ENABLE | SSTEP_NOIRQ | SSTEP_NOTIMER;
gdbserver_state.sstep_flags &= gdbserver_state.supported_sstep_flags;
+
+ /*
+ * The following is differs depending on USER/SOFTMMU, we just
+ * hid it in the typedef.
+ */
+ gdbserver_state.connection = g_new(GDBConnection, 1);
Does this structure really need this pointer?
Given that GDBState gdbserver_state is a global singleton, I would imagine that
GDBConnection gdbserver_{sys,user}_state could also be global singletons, static within
the two respective implementations.
r~