gdbserver: fix typo that broke read/write watchpoint
It looks like a bugfix from normal breakpoints was not copied over. Do not use clever mathematics and assumptions to convert from GDB enum for break/watchpoints to OpenOCD enum. Drop connection upon unknown breakpoint type, this code path was not really considered by the previous code I think. Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>__archive__
parent
6c75f5249c
commit
3e33393078
|
@ -1423,7 +1423,7 @@ int gdb_breakpoint_watchpoint_packet(struct connection *connection, struct targe
|
||||||
{
|
{
|
||||||
int type;
|
int type;
|
||||||
enum breakpoint_type bp_type = BKPT_SOFT /* dummy init to avoid warning */;
|
enum breakpoint_type bp_type = BKPT_SOFT /* dummy init to avoid warning */;
|
||||||
enum watchpoint_rw wp_type;
|
enum watchpoint_rw wp_type = WPT_READ /* dummy init to avoid warning */;
|
||||||
uint32_t address;
|
uint32_t address;
|
||||||
uint32_t size;
|
uint32_t size;
|
||||||
char *separator;
|
char *separator;
|
||||||
|
@ -1443,6 +1443,12 @@ int gdb_breakpoint_watchpoint_packet(struct connection *connection, struct targe
|
||||||
wp_type = WPT_READ;
|
wp_type = WPT_READ;
|
||||||
else if (type == 4) /* access watchpoint */
|
else if (type == 4) /* access watchpoint */
|
||||||
wp_type = WPT_ACCESS;
|
wp_type = WPT_ACCESS;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LOG_ERROR("invalid gdb watch/breakpoint type(%d), dropping connection", type);
|
||||||
|
return ERROR_SERVER_REMOTE_CLOSED;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (gdb_breakpoint_override && ((bp_type == BKPT_SOFT)||(bp_type == BKPT_HARD)))
|
if (gdb_breakpoint_override && ((bp_type == BKPT_SOFT)||(bp_type == BKPT_HARD)))
|
||||||
{
|
{
|
||||||
|
@ -1493,7 +1499,7 @@ int gdb_breakpoint_watchpoint_packet(struct connection *connection, struct targe
|
||||||
{
|
{
|
||||||
if (packet[0] == 'Z')
|
if (packet[0] == 'Z')
|
||||||
{
|
{
|
||||||
if ((retval = watchpoint_add(target, address, size, type-2, 0, 0xffffffffu)) != ERROR_OK)
|
if ((retval = watchpoint_add(target, address, size, wp_type, 0, 0xffffffffu)) != ERROR_OK)
|
||||||
{
|
{
|
||||||
if ((retval = gdb_error(connection, retval)) != ERROR_OK)
|
if ((retval = gdb_error(connection, retval)) != ERROR_OK)
|
||||||
return retval;
|
return retval;
|
||||||
|
|
Loading…
Reference in New Issue