This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[commit] allow to set length for remote hw watchpoints (e.g. for Valgrind gdbserver)


After my addition in write after approval, and previous
approval of this patch, committed the below.
(regression tested in native and gdbserver on f12/x86, debian5/amd64,
no regression identified).

Thanks

Index: gdb/ChangeLog
===================================================================
RCS file: /cvs/src/src/gdb/ChangeLog,v
retrieving revision 1.13227
diff -c -p -r1.13227 ChangeLog
*** gdb/ChangeLog	26 Jul 2011 19:39:57 -0000	1.13227
--- gdb/ChangeLog	26 Jul 2011 20:50:58 -0000
***************
*** 1,3 ****
--- 1,11 ----
+ 2011-07-26  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+ 
+ 	* remote.c (remote_region_ok_for_hw_watchpoint): New function.
+ 	(remote_hw_watchpoint_length_limit): New variable.
+ 	(_initialize_remote) add set,show cmds for this new variable.
+ 	* gdb.texinfo: document these new commands.
+ 	* NEWS: Mention these new commands.
+ 
  2011-07-26  Pedro Alves  <pedro@codesourcery.com>
  
  	* breakpoint.c (works_in_software_mode_watchpoint): Also return
Index: gdb/NEWS
===================================================================
RCS file: /cvs/src/src/gdb/NEWS,v
retrieving revision 1.445
diff -c -p -r1.445 NEWS
*** gdb/NEWS	26 Jul 2011 15:24:02 -0000	1.445
--- gdb/NEWS	26 Jul 2011 20:51:00 -0000
***************
*** 3,8 ****
--- 3,18 ----
  
  *** Changes since GDB 7.3
  
+ * GDB has two new commands: "set remote
hardware-watchpoint-length-limit"
+   and "show remote hardware-watchpoint-length-limit".  These allows to
+   set or show the maximum length limit (in bytes) of a remote
+   target hardware watchpoint.
+ 
+   This allows e.g. to use "unlimited" hardware watchpoints with the
+   gdbserver integrated in Valgrind version >= 3.7.0.  Such Valgrind
+   watchpoints are slower than real hardware watchpoints but are
+   significantly faster than gdb software watchpoints.
+ 
  * Python scripting
  
    ** The "maint set python print-stack on|off" command has been
Index: gdb/remote.c
===================================================================
RCS file: /cvs/src/src/gdb/remote.c,v
retrieving revision 1.458
diff -c -p -r1.458 remote.c
*** gdb/remote.c	25 Jul 2011 11:24:44 -0000	1.458
--- gdb/remote.c	26 Jul 2011 20:51:01 -0000
*************** remote_remove_watchpoint (CORE_ADDR addr
*** 7763,7771 ****
--- 7763,7785 ----
  
  
  int remote_hw_watchpoint_limit = -1;
+ int remote_hw_watchpoint_length_limit = -1;
  int remote_hw_breakpoint_limit = -1;
  
  static int
+ remote_region_ok_for_hw_watchpoint (CORE_ADDR addr, int len)
+ {
+   if (remote_hw_watchpoint_length_limit == 0)
+     return 0;
+   else if (remote_hw_watchpoint_length_limit < 0)
+     return 1;
+   else if (len <= remote_hw_watchpoint_length_limit)
+     return 1;
+   else
+     return 0;
+ }
+ 
+ static int
  remote_check_watch_resources (int type, int cnt, int ot)
  {
    if (type == bp_hardware_breakpoint)
*************** Specify the serial device it is connecte
*** 10356,10361 ****
--- 10370,10377 ----
    remote_ops.to_can_use_hw_breakpoint = remote_check_watch_resources;
    remote_ops.to_insert_hw_breakpoint = remote_insert_hw_breakpoint;
    remote_ops.to_remove_hw_breakpoint = remote_remove_hw_breakpoint;
+   remote_ops.to_region_ok_for_hw_watchpoint
+      = remote_region_ok_for_hw_watchpoint;
    remote_ops.to_insert_watchpoint = remote_insert_watchpoint;
    remote_ops.to_remove_watchpoint = remote_remove_watchpoint;
    remote_ops.to_kill = remote_kill;
*************** Specify a negative limit for unlimited."
*** 10751,10756 ****
--- 10767,10781 ----
  					   number of target hardware
  					   watchpoints is %s.  */
  			    &remote_set_cmdlist, &remote_show_cmdlist);
+   add_setshow_zinteger_cmd ("hardware-watchpoint-length-limit",
no_class,
+ 			    &remote_hw_watchpoint_length_limit, _("\
+ Set the maximum length (in bytes) of a target hardware watchpoint."),
_("\
+ Show the maximum length (in bytes) of a target hardware watchpoint."),
_("\
+ Specify a negative limit for unlimited."),
+ 			    NULL, NULL, /* FIXME: i18n: The maximum
+                                            length (in bytes) of a
target
+                                            hardware watchpoint is %s.
*/
+ 			    &remote_set_cmdlist, &remote_show_cmdlist);
    add_setshow_zinteger_cmd ("hardware-breakpoint-limit", no_class,
  			    &remote_hw_breakpoint_limit, _("\
  Set the maximum number of target hardware breakpoints."), _("\
Index: gdb/doc/gdb.texinfo
===================================================================
RCS file: /cvs/src/src/gdb/doc/gdb.texinfo,v
retrieving revision 1.850
diff -c -p -r1.850 gdb.texinfo
*** gdb/doc/gdb.texinfo	26 Jul 2011 16:59:23 -0000	1.850
--- gdb/doc/gdb.texinfo	26 Jul 2011 20:51:08 -0000
*************** responses.
*** 16655,16660 ****
--- 16655,16672 ----
  Restrict @value{GDBN} to using @var{limit} remote hardware breakpoint
or
  watchpoints.  A limit of -1, the default, is treated as unlimited.
  
+ @cindex limit hardware watchpoints length
+ @cindex remote target, limit watchpoints length
+ @anchor{set remote hardware-watchpoint-length-limit}
+ @item set remote hardware-watchpoint-length-limit @var{limit}
+ Restrict @value{GDBN} to using @var{limit} bytes for the maximum
length of
+ a remote hardware watchpoint.  A limit of -1, the default, is treated
+ as unlimited.
+ 
+ @item show remote hardware-watchpoint-length-limit
+ Show the current limit (in bytes) of the maximum length of
+ a remote hardware watchpoint.
+ 
  @item set remote exec-file @var{filename}
  @itemx show remote exec-file
  @anchor{set remote exec-file}



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]