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]

Re: [python][patch] PR python/19151 Hardware breakpoints in GDB Python.


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


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