summaryrefslogtreecommitdiffstats
path: root/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/core/iwasm/libraries/debug-engine/gdbserver.h
diff options
context:
space:
mode:
Diffstat (limited to 'fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/core/iwasm/libraries/debug-engine/gdbserver.h')
-rw-r--r--fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/core/iwasm/libraries/debug-engine/gdbserver.h70
1 files changed, 70 insertions, 0 deletions
diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/core/iwasm/libraries/debug-engine/gdbserver.h b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/core/iwasm/libraries/debug-engine/gdbserver.h
new file mode 100644
index 000000000..9e279a2e6
--- /dev/null
+++ b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/core/iwasm/libraries/debug-engine/gdbserver.h
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2021 Ant Group. All rights reserved.
+ * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+ */
+
+#ifndef _GDB_SERVER_H
+#define _GDB_SERVER_H
+
+#include "bh_platform.h"
+
+#define PACKET_BUF_SIZE 0x8000
+
+enum GDBStoppointType {
+ eStoppointInvalid = -1,
+ eBreakpointSoftware = 0,
+ eBreakpointHardware,
+ eWatchpointWrite,
+ eWatchpointRead,
+ eWatchpointReadWrite
+};
+
+typedef enum rsp_recv_phase_t {
+ Phase_Idle,
+ Phase_Payload,
+ Phase_Checksum
+} rsp_recv_phase_t;
+
+/* Remote Serial Protocol Receive Context */
+typedef struct rsp_recv_context_t {
+ rsp_recv_phase_t phase;
+ uint16 receive_index;
+ uint16 size_in_phase;
+ uint8 check_sum;
+ /* RSP packet should not be too long */
+ char receive_buffer[1024];
+} rsp_recv_context_t;
+
+typedef struct WasmDebugPacket {
+ unsigned char buf[PACKET_BUF_SIZE];
+ uint32 size;
+} WasmDebugPacket;
+
+struct WASMDebugControlThread;
+typedef struct WASMGDBServer {
+ bh_socket_t listen_fd;
+ bh_socket_t socket_fd;
+ WasmDebugPacket pkt;
+ bool noack;
+ struct WASMDebugControlThread *thread;
+ rsp_recv_context_t *receive_ctx;
+} WASMGDBServer;
+
+WASMGDBServer *
+wasm_create_gdbserver(const char *host, int32 *port);
+
+bool
+wasm_gdbserver_listen(WASMGDBServer *server);
+
+bool
+wasm_gdbserver_accept(WASMGDBServer *server);
+
+void
+wasm_gdbserver_detach(WASMGDBServer *server);
+
+void
+wasm_close_gdbserver(WASMGDBServer *server);
+
+bool
+wasm_gdbserver_handle_packet(WASMGDBServer *server);
+#endif