@@ -1,4 +1,4 @@
-@c Copyright (C) 2008-2017 Free Software Foundation, Inc.
+@c Copyright (C) 2008-2018 Free Software Foundation, Inc.
@c Permission is granted to copy, distribute and/or modify this document
@c under the terms of the GNU Free Documentation License, Version 1.3 or
@c any later version published by the Free Software Foundation; with the
@@ -4888,20 +4888,20 @@ breakpoint (@pxref{Explicit Locations}) according to the
specifications contained in the key words @var{source},
@var{function}, @var{label} and @var{line}. The optional @var{type}
denotes the breakpoint to create from the types defined later in this
-chapter. This argument can be either @code{gdb.BP_BREAKPOINT} or
-@code{gdb.BP_WATCHPOINT}; it defaults to @code{gdb.BP_BREAKPOINT}.
-The optional @var{internal} argument allows the breakpoint to become
-invisible to the user. The breakpoint will neither be reported when
-created, nor will it be listed in the output from @code{info
-breakpoints} (but will be listed with the @code{maint info
-breakpoints} command). The optional @var{temporary} argument makes
-the breakpoint a temporary breakpoint. Temporary breakpoints are
-deleted after they have been hit. Any further access to the Python
-breakpoint after it has been hit will result in a runtime error (as
-that breakpoint has now been automatically deleted). The optional
-@var{wp_class} argument defines the class of watchpoint to create, if
-@var{type} is @code{gdb.BP_WATCHPOINT}. If a watchpoint class is not
-provided, it is assumed to be a @code{gdb.WP_WRITE} class.
+chapter. This argument can be either @code{gdb.BP_BREAKPOINT},
+@code{gdb.BP_HARDWARE_BREAKPOINT} or @code{gdb.BP_WATCHPOINT}; it
+defaults to @code{gdb.BP_BREAKPOINT}. The optional @var{internal}
+argument allows the breakpoint to become invisible to the user. The
+breakpoint will neither be reported when created, nor will it be listed
+in the output from @code{info breakpoints} (but will be listed with the
+@code{maint info breakpoints} command). The optional @var{temporary}
+argument makes the breakpoint a temporary breakpoint. Temporary
+breakpoints are deleted after they have been hit. Any further access to
+the Python breakpoint after it has been hit will result in a runtime
+error (as that breakpoint has now been automatically deleted). The
+optional @var{wp_class} argument defines the class of watchpoint to
+create, if @var{type} is @code{gdb.BP_WATCHPOINT}. If a watchpoint
+class is not provided, it is assumed to be a @code{gdb.WP_WRITE} class.
@end defun
The available types are represented by constants defined in the @code{gdb}
@@ -4912,6 +4912,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.
@@ -1,6 +1,6 @@
/* Python interface to breakpoints
- Copyright (C) 2008-2017 Free Software Foundation, Inc.
+ Copyright (C) 2008-2018 Free Software Foundation, Inc.
This file is part of GDB.
@@ -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},
@@ -757,6 +758,7 @@ bppy_init (PyObject *self, PyObject *args, PyObject *kwargs)
switch (type)
{
case bp_breakpoint:
+ case bp_hardware_breakpoint:
{
event_location_up location;
@@ -788,7 +790,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,
@@ -963,6 +965,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
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2017 Free Software Foundation, Inc.
+# Copyright (C) 2010-2018 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -610,6 +610,33 @@ proc test_bkpt_explicit_loc {} {
}
}
+# 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
@@ -622,3 +649,4 @@ test_bkpt_address
test_bkpt_pending
test_bkpt_events
test_bkpt_explicit_loc
+test_hardware_breakpoints