aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorIan Thompson <ianst@cadence.com>2022-08-01 15:22:32 -0700
committerAntonio Borneo <borneo.antonio@gmail.com>2022-08-15 13:21:37 +0000
commitc3138e2d805b94b81ba10bc7fcec47689704f60e (patch)
tree79d7a91e95ca79e6cb14dc011c6ad0bbf06dff86 /src/server
parent9903203d73c9243c327db9dc0d726491bb625d41 (diff)
downloadriscv-openocd-c3138e2d805b94b81ba10bc7fcec47689704f60e.zip
riscv-openocd-c3138e2d805b94b81ba10bc7fcec47689704f60e.tar.gz
riscv-openocd-c3138e2d805b94b81ba10bc7fcec47689704f60e.tar.bz2
gdb_server: add "not supported" Z-packet reply
GDB remote serial protocol specifies breakpoint/watchpoint packet responses can be an empty string to indicate the specified breakpoint type is not supported. Add support for this response alongside existing "OK", "E NN" replies. Signed-off-by: Ian Thompson <ianst@cadence.com> Change-Id: Iaf6280e4c936eb95a92bc80cc74d451ebb328dc3 Reviewed-on: https://review.openocd.org/c/openocd/+/7102 Tested-by: jenkins Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Diffstat (limited to 'src/server')
-rw-r--r--src/server/gdb_server.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/server/gdb_server.c b/src/server/gdb_server.c
index 2e6c730..28833c9 100644
--- a/src/server/gdb_server.c
+++ b/src/server/gdb_server.c
@@ -1770,7 +1770,10 @@ static int gdb_breakpoint_watchpoint_packet(struct connection *connection,
case 1:
if (packet[0] == 'Z') {
retval = breakpoint_add(target, address, size, bp_type);
- if (retval != ERROR_OK) {
+ if (retval == ERROR_NOT_IMPLEMENTED) {
+ /* Send empty reply to report that breakpoints of this type are not supported */
+ gdb_put_packet(connection, "", 0);
+ } else if (retval != ERROR_OK) {
retval = gdb_error(connection, retval);
if (retval != ERROR_OK)
return retval;
@@ -1787,7 +1790,10 @@ static int gdb_breakpoint_watchpoint_packet(struct connection *connection,
{
if (packet[0] == 'Z') {
retval = watchpoint_add(target, address, size, wp_type, 0, 0xffffffffu);
- if (retval != ERROR_OK) {
+ if (retval == ERROR_NOT_IMPLEMENTED) {
+ /* Send empty reply to report that watchpoints of this type are not supported */
+ gdb_put_packet(connection, "", 0);
+ } else if (retval != ERROR_OK) {
retval = gdb_error(connection, retval);
if (retval != ERROR_OK)
return retval;