2012-07-19 Michael Eager <eager@eagercon.com>
authorMichael Eager <eager@eagercon.com>
Thu, 19 Jul 2012 18:27:17 +0000 (18:27 +0000)
committerMichael Eager <eager@eagercon.com>
Thu, 19 Jul 2012 18:27:17 +0000 (18:27 +0000)
* 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
gdb/gdbserver/i386-low.c
gdb/gdbserver/linux-x86-low.c

index 3757add388592a2b299b116e4d3d0ba4d8977f88..fab5e7cd29b26ee70e4b30daf127d1ad4a032436 100644 (file)
@@ -1,3 +1,11 @@
+2012-07-19  Michael Eager  <eager@eagercon.com>
+
+       * 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  <jan.kratochvil@redhat.com>
 
        * gdbserver/linux-low.c (initialize_low): Call
index 902a9e9156ad323f194b83f9dd39d09786c5f6f5..b47392f8705b06d2c74544e22a83da5350a64119 100644 (file)
@@ -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:
index 4ea284eebafd16fea56c1ea5165dbe203ece2e30..1215bae912c69ab61df905a4589be3987d36d200 100644 (file)
@@ -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: