+2021-01-21 Hannes Domani <ssbssa@yahoo.de>
+
+ PR python/19151
+ * python/py-breakpoint.c (bppy_get_location): Handle
+ bp_hardware_breakpoint.
+ (bppy_init): Likewise.
+ (gdbpy_breakpoint_created): Likewise.
+
2021-01-21 Simon Marchi <simon.marchi@polymtl.ca>
* arm-tdep.c (arm_debug_printf): Add and use throughout file.
+2021-01-21 Hannes Domani <ssbssa@yahoo.de>
+
+ PR python/19151
+ * python.texi (Breakpoints In Python): Document
+ gdb.BP_HARDWARE_BREAKPOINT.
+
2021-01-01 Joel Brobecker <brobecker@adacore.com>
* gdb.texinfo, refcard.tex: Update copyright year range.
@item gdb.BP_BREAKPOINT
Normal code breakpoint.
+@vindex BP_HARDWARE_BREAKPOINT
+@item gdb.BP_HARDWARE_BREAKPOINT
+Hardware assisted code breakpoint.
+
@vindex BP_WATCHPOINT
@item gdb.BP_WATCHPOINT
Watchpoint breakpoint.
{
{ "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},
BPPY_REQUIRE_VALID (obj);
- if (obj->bp->type != bp_breakpoint)
+ if (obj->bp->type != bp_breakpoint
+ && obj->bp->type != bp_hardware_breakpoint)
Py_RETURN_NONE;
const char *str = event_location_to_string (obj->bp->location.get ());
switch (type)
{
case bp_breakpoint:
+ case bp_hardware_breakpoint:
{
event_location_up location;
symbol_name_match_type func_name_match_type
create_breakpoint (python_gdbarch,
location.get (), NULL, -1, NULL,
0,
- temporary_bp, bp_breakpoint,
+ temporary_bp, type,
0,
AUTO_BOOLEAN_TRUE,
ops,
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
+2021-01-21 Hannes Domani <ssbssa@yahoo.de>
+
+ PR python/19151
+ * gdb.python/py-breakpoint.exp: Add tests for hardware breakpoints.
+
2021-01-20 Simon Marchi <simon.marchi@polymtl.ca>
* lib/tuiterm.exp: Rename _cur_x/_cur_y to _cur_col/_cur_row.
"Check maint info breakpoints shows invisible breakpoints"
}
+proc_with_prefix test_hardware_breakpoints { } {
+ global srcfile testfile hex decimal
+
+ # Start with a fresh gdb.
+ clean_restart ${testfile}
+
+ if ![runto_main] then {
+ fail "cannot run to main."
+ return 0
+ }
+
+ delete_breakpoints
+
+ gdb_test "python hbp1 = gdb.Breakpoint(\"add\", type=gdb.BP_HARDWARE_BREAKPOINT)" \
+ ".*Hardware assisted breakpoint ($decimal)+ at .*$srcfile, line ($decimal)+\." \
+ "Set hardware breakpoint"
+ gdb_test "python print (gdb.breakpoints()\[0\].type == gdb.BP_HARDWARE_BREAKPOINT)" \
+ "True" "Check hardware breakpoint type"
+ gdb_test "continue" \
+ ".*Breakpoint ($decimal)+, add.*" \
+ "Test hardware breakpoint stop"
+}
+
proc_with_prefix test_watchpoints { } {
global srcfile testfile hex decimal
test_bkpt_deletion
test_bkpt_cond_and_cmds
test_bkpt_invisible
+test_hardware_breakpoints
test_watchpoints
test_bkpt_internal
test_bkpt_eval_funcs