diff options
author | Ian Thompson <ianst@cadence.com> | 2022-08-01 15:22:32 -0700 |
---|---|---|
committer | Antonio Borneo <borneo.antonio@gmail.com> | 2022-08-15 13:21:37 +0000 |
commit | c3138e2d805b94b81ba10bc7fcec47689704f60e (patch) | |
tree | 79d7a91e95ca79e6cb14dc011c6ad0bbf06dff86 /src | |
parent | 9903203d73c9243c327db9dc0d726491bb625d41 (diff) | |
download | riscv-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')
-rw-r--r-- | src/server/gdb_server.c | 10 |
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; |