Skip to content

Commit eeb102f

Browse files
committed
gdbserver support
1 parent 89be1c3 commit eeb102f

26 files changed

Lines changed: 1630 additions & 174 deletions

compat.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@
3333

3434
#ifdef WIN32
3535
#include <winsock2.h>
36+
#else
37+
#include <netinet/in.h>
38+
#include <netinet/tcp.h>
3639
#endif
3740

3841
/* Remove the gcc-specific incantations if we're not using gcc */

debugger/Makefile.am

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,10 @@ fuse_SOURCES += \
2929
debugger/disassemble.c \
3030
debugger/event.c \
3131
debugger/expression.c \
32+
debugger/gdbserver.c \
33+
debugger/gdbserver_utils.c \
3234
debugger/system_variable.c \
35+
debugger/packets.c \
3336
debugger/variable.c
3437

3538
debugger/commandl.c: debugger/commandy.c

debugger/arch.h

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#ifndef ARCH_H
2+
#define ARCH_H
3+
4+
#include <stdint.h>
5+
6+
#define SZ 2
7+
#define FEATURE_STR "l<target version=\"1.0\">"\
8+
"<feature name=\"org.gnu.gdb.z80.cpu\">"\
9+
"<reg name=\"af\" bitsize=\"16\" type=\"int\"/>"\
10+
"<reg name=\"bc\" bitsize=\"16\" type=\"int\"/>"\
11+
"<reg name=\"de\" bitsize=\"16\" type=\"int\"/>"\
12+
"<reg name=\"hl\" bitsize=\"16\" type=\"int\"/>"\
13+
"<reg name=\"sp\" bitsize=\"16\" type=\"data_ptr\"/>"\
14+
"<reg name=\"pc\" bitsize=\"16\" type=\"code_ptr\"/>"\
15+
"<reg name=\"ix\" bitsize=\"16\" type=\"int\"/>"\
16+
"<reg name=\"iy\" bitsize=\"16\" type=\"int\"/>"\
17+
"<reg name=\"af'\" bitsize=\"16\" type=\"int\"/>"\
18+
"<reg name=\"bc'\" bitsize=\"16\" type=\"int\"/>"\
19+
"<reg name=\"de'\" bitsize=\"16\" type=\"int\"/>"\
20+
"<reg name=\"hl'\" bitsize=\"16\" type=\"int\"/>"\
21+
"</feature>"\
22+
"<architecture>z80</architecture>"\
23+
"</target>"
24+
25+
#define EXTRA_NUM 25
26+
#define EXTRA_REG 16
27+
#define EXTRA_SIZE 4
28+
29+
#endif /* ARCH_H */

debugger/debugger.c

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
#include <config.h>
2525

2626
#include "debugger.h"
27+
#include "gdbserver.h"
2728
#include "debugger_internals.h"
2829
#include "event.h"
2930
#include "fuse.h"
@@ -37,6 +38,7 @@
3738

3839
/* The current activity state of the debugger */
3940
enum debugger_mode_t debugger_mode;
41+
char gdbserver_debugging_enabled = 0;
4042

4143
/* Which base should we display things in */
4244
int debugger_output_base;
@@ -101,14 +103,21 @@ debugger_register_startup( void )
101103
int
102104
debugger_trap( void )
103105
{
104-
return ui_debugger_activate();
106+
if (gdbserver_debugging_enabled) {
107+
return gdbserver_activate();
108+
} else {
109+
return ui_debugger_activate();
110+
}
105111
}
106112

107113
/* Step one instruction */
108114
int
109115
debugger_step( void )
110116
{
111117
debugger_mode = DEBUGGER_MODE_HALTED;
118+
if (gdbserver_debugging_enabled) {
119+
return 0;
120+
}
112121
ui_debugger_deactivate( 0 );
113122
return 0;
114123
}
@@ -140,6 +149,10 @@ debugger_run( void )
140149
debugger_mode = debugger_breakpoints ?
141150
DEBUGGER_MODE_ACTIVE :
142151
DEBUGGER_MODE_INACTIVE;
152+
if (gdbserver_debugging_enabled)
153+
{
154+
return 0;
155+
}
143156
ui_debugger_deactivate( 1 );
144157
return 0;
145158
}

debugger/debugger.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ enum debugger_mode_t
4343
};
4444

4545
extern enum debugger_mode_t debugger_mode;
46+
extern char gdbserver_debugging_enabled;
4647

4748
/* Which base should we display things in */
4849
extern int debugger_output_base;

0 commit comments

Comments
 (0)