From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17535 invoked by alias); 7 Jul 2011 01:26:56 -0000 Received: (qmail 17527 invoked by uid 22791); 7 Jul 2011 01:26:55 -0000 X-SWARE-Spam-Status: No, hits=-1.9 required=5.0 tests=BAYES_00,MIME_QP_LONG_LINE,RCVD_IN_DNSWL_NONE X-Spam-Check-By: sourceware.org Received: from mailrelay006.isp.belgacom.be (HELO mailrelay006.isp.belgacom.be) (195.238.6.172) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 07 Jul 2011 01:26:37 +0000 X-Belgacom-Dynamic: yes X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av8EAKQKFU7ZiGqU/2dsb2JhbABTihCdH2F4iHMJo26fIg6GKQSjAA Received: from 148.106-136-217.adsl-dyn.isp.belgacom.be (HELO soleil) ([217.136.106.148]) by relay.skynet.be with SMTP; 07 Jul 2011 03:26:33 +0200 Message-ID: From: "Philippe Waroquiers" To: Subject: allow to set length of hw watchpoints (e.g. for Valgrind gdbserver) Date: Thu, 07 Jul 2011 01:55:00 -0000 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_002B_01CC3C55.AB81F7D0" X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2011-07/txt/msg00224.txt.bz2 This is a multi-part message in MIME format. ------=_NextPart_000_002B_01CC3C55.AB81F7D0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=original Content-Transfer-Encoding: 7bit Content-length: 5151 Updated patch to a recent cvs version + undone the changes related to fixing bug in x86/amd64 hardware registers, as Pedro Alves was doing a better fix (see http://sourceware.org/ml/gdb-patches/2011-06/msg00002.html , not yet comitted). For the copyright assignment: I just received today the news that the signed papers arrived back at FSF, and will be processed tomorrow. Thanks Philippe (patch included in-line below + as an attachment) Index: gdb/NEWS =================================================================== RCS file: /cvs/src/src/gdb/NEWS,v retrieving revision 1.441 diff -c -p -r1.441 NEWS *** gdb/NEWS 13 May 2011 22:36:06 -0000 1.441 --- gdb/NEWS 7 Jul 2011 00:36:22 -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. + * libthread-db-search-path now supports two special values: $sdir and $pdir. $sdir specifies the default system locations of shared libraries. $pdir specifies the directory where the libpthread used by the application Index: gdb/remote.c =================================================================== RCS file: /cvs/src/src/gdb/remote.c,v retrieving revision 1.453 diff -c -p -r1.453 remote.c *** gdb/remote.c 6 Jul 2011 02:43:12 -0000 1.453 --- gdb/remote.c 7 Jul 2011 00:36:29 -0000 *************** remote_remove_watchpoint (CORE_ADDR addr *** 7774,7782 **** --- 7774,7796 ---- 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 *** 10355,10360 **** --- 10369,10376 ---- 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." *** 10750,10755 **** --- 10766,10780 ---- 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.845 diff -c -p -r1.845 gdb.texinfo *** gdb/doc/gdb.texinfo 5 Jul 2011 04:34:57 -0000 1.845 --- gdb/doc/gdb.texinfo 7 Jul 2011 00:36:54 -0000 *************** responses. *** 16578,16583 **** --- 16578,16595 ---- 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} ------=_NextPart_000_002B_01CC3C55.AB81F7D0 Content-Type: text/plain; format=flowed; name="set-length-limit-final.txt"; reply-type=original Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="set-length-limit-final.txt" Content-length: 5189 Index: gdb/NEWS =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvs/src/src/gdb/NEWS,v retrieving revision 1.441 diff -c -p -r1.441 NEWS *** gdb/NEWS 13 May 2011 22:36:06 -0000 1.441 --- gdb/NEWS 7 Jul 2011 00:36:22 -0000 *************** *** 3,8 **** --- 3,18 ---- =20=20 *** Changes since GDB 7.3 =20=20 + * 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. +=20 + This allows e.g. to use "unlimited" hardware watchpoints with the + gdbserver integrated in Valgrind version >=3D 3.7.0. Such Valgrind + watchpoints are slower than real hardware watchpoints but are + significantly faster than gdb software watchpoints. +=20 * libthread-db-search-path now supports two special values: $sdir and $pd= ir. $sdir specifies the default system locations of shared libraries. $pdir specifies the directory where the libpthread used by the applicat= ion Index: gdb/remote.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvs/src/src/gdb/remote.c,v retrieving revision 1.453 diff -c -p -r1.453 remote.c *** gdb/remote.c 6 Jul 2011 02:43:12 -0000 1.453 --- gdb/remote.c 7 Jul 2011 00:36:29 -0000 *************** remote_remove_watchpoint (CORE_ADDR addr *** 7774,7782 **** --- 7774,7796 ---- =20=20 =20=20 int remote_hw_watchpoint_limit =3D -1; + int remote_hw_watchpoint_length_limit =3D -1; int remote_hw_breakpoint_limit =3D -1; =20=20 static int + remote_region_ok_for_hw_watchpoint (CORE_ADDR addr, int len) + { + if (remote_hw_watchpoint_length_limit =3D=3D 0) + return 0; + else if (remote_hw_watchpoint_length_limit < 0) + return 1; + else if (len <=3D remote_hw_watchpoint_length_limit) + return 1; + else + return 0; + } +=20 + static int remote_check_watch_resources (int type, int cnt, int ot) { if (type =3D=3D bp_hardware_breakpoint) *************** Specify the serial device it is connecte *** 10355,10360 **** --- 10369,10376 ---- remote_ops.to_can_use_hw_breakpoint =3D remote_check_watch_resources; remote_ops.to_insert_hw_breakpoint =3D remote_insert_hw_breakpoint; remote_ops.to_remove_hw_breakpoint =3D remote_remove_hw_breakpoint; + remote_ops.to_region_ok_for_hw_watchpoint + =3D remote_region_ok_for_hw_watchpoint; remote_ops.to_insert_watchpoint =3D remote_insert_watchpoint; remote_ops.to_remove_watchpoint =3D remote_remove_watchpoint; remote_ops.to_kill =3D remote_kill; *************** Specify a negative limit for unlimited." *** 10750,10755 **** --- 10766,10780 ---- 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 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvs/src/src/gdb/doc/gdb.texinfo,v retrieving revision 1.845 diff -c -p -r1.845 gdb.texinfo *** gdb/doc/gdb.texinfo 5 Jul 2011 04:34:57 -0000 1.845 --- gdb/doc/gdb.texinfo 7 Jul 2011 00:36:54 -0000 *************** responses. *** 16578,16583 **** --- 16578,16595 ---- Restrict @value{GDBN} to using @var{limit} remote hardware breakpoint or watchpoints. A limit of -1, the default, is treated as unlimited. =20=20 + @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. +=20 + @item show remote hardware-watchpoint-length-limit + Show the current limit (in bytes) of the maximum length of + a remote hardware watchpoint. +=20 @item set remote exec-file @var{filename} @itemx show remote exec-file @anchor{set remote exec-file} ------=_NextPart_000_002B_01CC3C55.AB81F7D0--