From: Phil Muldoon <pmuldoon@redhat.com>
To: "gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
Subject: Re: [python][patch] PR python/19151 Hardware breakpoints in GDB Python.
Date: Mon, 30 Apr 2018 12:37:00 -0000 [thread overview]
Message-ID: <68969e58-85d9-5cb7-d2a5-14930d08f799@redhat.com> (raw)
In-Reply-To: <12c35b5f-aa8d-17b3-476d-2fbf4eb3587d@redhat.com>
On 30/04/18 12:46, Phil Muldoon wrote:
>
> This patch adds hardware breakpoint support for code based breakpoints
> to the Python API.
>
> Cheers,
My apologies but I mistakenly applied this patch to a much older
version of GDB HEAD (I did not realize the git pull master had
failed.) The following patch is the correct patch and has been
re-flowed and adjusted to current HEAD.
2018-04-30 Phil Muldoon <pmuldoon@redhat.com>
PR python/19151
* python/py-breakpoint.c: Add hardware breakpoint constant
gdb.BP_HARDWARE_BREAKPOINT.
(bppy_init): Add bp_hardware_breakpoint case. Use the enum bptype
variable
2018-04-30 Phil Muldoon <pmuldoon@redhat.com>
* gdb.python/py-breakpoint.exp: Call test_hardware_breakpoints.
(test_hardware_breakpoints): New function.
2018-04-30 Phil Muldoon <pmuldoon@redhat.com>
* python.texi (Breakpoints In Python): Mention
gdb.BP_HARDWARE_BREAKPOINT.
--
diff --git a/gdb/doc/python.texi b/gdb/doc/python.texi
index ebd48fffe7..dd1fd101f1 100644
--- a/gdb/doc/python.texi
+++ b/gdb/doc/python.texi
@@ -4937,6 +4937,10 @@ module:
@item gdb.BP_BREAKPOINT
Normal code breakpoint.
+@vindex BP_BREAKPOINT
+@item gdb.BP_HARDWARE_BREAKPOINT
+Hardware assisted code breakpoint.
+
@vindex BP_WATCHPOINT
@item gdb.BP_WATCHPOINT
Watchpoint breakpoint.
diff --git a/gdb/python/py-breakpoint.c b/gdb/python/py-breakpoint.c
index d654b92a8c..049d8d6d11 100644
--- a/gdb/python/py-breakpoint.c
+++ b/gdb/python/py-breakpoint.c
@@ -58,6 +58,7 @@ static struct pybp_code pybp_codes[] =
{
{ "BP_NONE", bp_none},
{ "BP_BREAKPOINT", bp_breakpoint},
+ { "BP_HARDWARE_BREAKPOINT", bp_hardware_breakpoint},
{ "BP_WATCHPOINT", bp_watchpoint},
{ "BP_HARDWARE_WATCHPOINT", bp_hardware_watchpoint},
{ "BP_READ_WATCHPOINT", bp_read_watchpoint},
@@ -759,6 +760,7 @@ bppy_init (PyObject *self, PyObject *args, PyObject *kwargs)
switch (type)
{
case bp_breakpoint:
+ case bp_hardware_breakpoint:
{
event_location_up location;
symbol_name_match_type func_name_match_type
@@ -797,7 +799,7 @@ bppy_init (PyObject *self, PyObject *args, PyObject *kwargs)
create_breakpoint (python_gdbarch,
location.get (), NULL, -1, NULL,
0,
- temporary_bp, bp_breakpoint,
+ temporary_bp, type,
0,
AUTO_BOOLEAN_TRUE,
&bkpt_breakpoint_ops,
@@ -972,6 +974,7 @@ gdbpy_breakpoint_created (struct breakpoint *bp)
return;
if (bp->type != bp_breakpoint
+ && bp->type != bp_hardware_breakpoint
&& bp->type != bp_watchpoint
&& bp->type != bp_hardware_watchpoint
&& bp->type != bp_read_watchpoint
diff --git a/gdb/testsuite/gdb.python/py-breakpoint.exp b/gdb/testsuite/gdb.python/py-breakpoint.exp
index 6e0ff88f87..156dcbfa9a 100644
--- a/gdb/testsuite/gdb.python/py-breakpoint.exp
+++ b/gdb/testsuite/gdb.python/py-breakpoint.exp
@@ -681,6 +681,33 @@ proc_with_prefix test_bkpt_qualified {} {
"-q in spec string and qualified false"
}
+# Test hardware assisted breakpoints
+proc_with_prefix test_hardware_breakpoints { } {
+ global srcfile testfile decimal
+
+ # Start with a fresh gdb.
+ clean_restart ${testfile}
+
+ if {[skip_hw_breakpoint_tests]} {
+ unsupported "Hardware breakpoints."
+ }
+
+ if ![runto_main] then {
+ fail "cannot run to main."
+ return 0
+ }
+
+ set hardware_location [gdb_get_line_number "Break at multiply."]
+ gdb_test "python hbp = gdb.Breakpoint (\"$hardware_location\", type=gdb.BP_HARDWARE_BREAKPOINT)" \
+ ".*Hardware assisted breakpoint ($decimal)+ at .*$srcfile, line ($decimal)+\." \
+ "Set hardware breakpoint"
+ gdb_continue_to_breakpoint "Break at multiply." \
+ ".*$srcfile:$hardware_location.*"
+ gdb_test "info breakpoints" \
+ "2.*hw breakpoint.*$srcfile:$hardware_location.*" \
+ "Check info breakpoints shows a hardware breakpoint"
+}
+
test_bkpt_basic
test_bkpt_deletion
test_bkpt_cond_and_cmds
@@ -694,3 +721,4 @@ test_bkpt_pending
test_bkpt_events
test_bkpt_explicit_loc
test_bkpt_qualified
+test_hardware_breakpoints
next prev parent reply other threads:[~2018-04-30 12:37 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-30 11:47 Phil Muldoon
2018-04-30 12:37 ` Phil Muldoon [this message]
2018-04-30 14:33 ` Eli Zaretskii
2018-05-09 14:31 ` Pedro Alves
2018-04-30 14:31 ` Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=68969e58-85d9-5cb7-d2a5-14930d08f799@redhat.com \
--to=pmuldoon@redhat.com \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).