From 961bd387ba464dbd902efdf2dd97b57f32835472 Mon Sep 17 00:00:00 2001 From: Michael Eager Date: Thu, 19 Jul 2012 18:27:17 +0000 Subject: [PATCH] 2012-07-19 Michael Eager * i386-low.c (Z_packet_to_hw_type): Add Z_PACKET_HW_BP, translate to hw_execute. * linux-x86-low.c (x86_insert_point, x86_remove_point): Call i386_low_insert_watchpoint, i386_low_remove_watchpoint to add/del hardware breakpoint. --- gdb/gdbserver/ChangeLog | 8 ++++++++ gdb/gdbserver/i386-low.c | 3 +++ gdb/gdbserver/linux-x86-low.c | 19 +++++++++++-------- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog index 3757add3885..fab5e7cd29b 100644 --- a/gdb/gdbserver/ChangeLog +++ b/gdb/gdbserver/ChangeLog @@ -1,3 +1,11 @@ +2012-07-19 Michael Eager + + * i386-low.c (Z_packet_to_hw_type): Add Z_PACKET_HW_BP, translate + to hw_execute. + * linux-x86-low.c (x86_insert_point, x86_remove_point): + Call i386_low_insert_watchpoint, i386_low_remove_watchpoint to add/del + hardware breakpoint. + 2012-07-07 Jan Kratochvil * gdbserver/linux-low.c (initialize_low): Call diff --git a/gdb/gdbserver/i386-low.c b/gdb/gdbserver/i386-low.c index 902a9e9156a..b47392f8705 100644 --- a/gdb/gdbserver/i386-low.c +++ b/gdb/gdbserver/i386-low.c @@ -410,6 +410,7 @@ Invalid value %d of operation in i386_handle_nonaligned_watchpoint.\n", return retval; } +#define Z_PACKET_HW_BP '1' #define Z_PACKET_WRITE_WP '2' #define Z_PACKET_READ_WP '3' #define Z_PACKET_ACCESS_WP '4' @@ -421,6 +422,8 @@ Z_packet_to_hw_type (char type) { switch (type) { + case Z_PACKET_HW_BP: + return hw_execute; case Z_PACKET_WRITE_WP: return hw_write; case Z_PACKET_READ_WP: diff --git a/gdb/gdbserver/linux-x86-low.c b/gdb/gdbserver/linux-x86-low.c index 4ea284eebaf..1215bae912c 100644 --- a/gdb/gdbserver/linux-x86-low.c +++ b/gdb/gdbserver/linux-x86-low.c @@ -561,7 +561,7 @@ x86_insert_point (char type, CORE_ADDR addr, int len) struct process_info *proc = current_process (); switch (type) { - case '0': + case '0': /* software-breakpoint */ { int ret; @@ -572,11 +572,13 @@ x86_insert_point (char type, CORE_ADDR addr, int len) done_accessing_memory (); return ret; } - case '2': - case '3': - case '4': + case '1': /* hardware-breakpoint */ + case '2': /* write watchpoint */ + case '3': /* read watchpoint */ + case '4': /* access watchpoint */ return i386_low_insert_watchpoint (&proc->private->arch_private->debug_reg_state, type, addr, len); + default: /* Unsupported. */ return 1; @@ -589,7 +591,7 @@ x86_remove_point (char type, CORE_ADDR addr, int len) struct process_info *proc = current_process (); switch (type) { - case '0': + case '0': /* software-breakpoint */ { int ret; @@ -600,9 +602,10 @@ x86_remove_point (char type, CORE_ADDR addr, int len) done_accessing_memory (); return ret; } - case '2': - case '3': - case '4': + case '1': /* hardware-breakpoint */ + case '2': /* write watchpoint */ + case '3': /* read watchpoint */ + case '4': /* access watchpoint */ return i386_low_remove_watchpoint (&proc->private->arch_private->debug_reg_state, type, addr, len); default: -- 2.30.2