void mon_breakpoint_delete_checkpoint(int brknum) { int i; breakpoint_t *bp = NULL; MEMSPACE mem; if (brknum == -1) { /* Add user confirmation here. */ mon_out("Deleting all breakpoints\n"); for (i = 1; i < breakpoint_count; i++) { bp = find_checkpoint(i); if (bp) mon_breakpoint_delete_checkpoint(i); } } else if (!(bp = find_checkpoint(brknum))) { mon_out("#%d not a valid breakpoint\n", brknum); return; } else { mem = addr_memspace(bp->start_addr); if (!(bp->watch_load) && !(bp->watch_store)) { remove_checkpoint_from_list(&(breakpoints[mem]), bp); if (!any_breakpoints(mem)) { monitor_mask[mem] &= ~MI_BREAK; if (!monitor_mask[mem]) interrupt_monitor_trap_off(mon_interfaces[mem]->int_status); } } else { if (bp->watch_load) remove_checkpoint_from_list(&(watchpoints_load[mem]), bp); if (bp->watch_store) remove_checkpoint_from_list(&(watchpoints_store[mem]), bp); if (!any_watchpoints(mem)) { monitor_mask[mem] &= ~MI_WATCH; mon_interfaces[mem]->toggle_watchpoints_func(0, mon_interfaces[mem]->context); if (!monitor_mask[mem]) interrupt_monitor_trap_off(mon_interfaces[mem]->int_status); } } } if (bp != NULL) { mon_delete_conditional(bp->condition); if (bp->command) lib_free(bp->command); } }
void mon_breakpoint_delete_checkpoint(int cp_num) { int i; checkpoint_t *cp = NULL; if (cp_num == -1) { /* Add user confirmation here. */ mon_out("Deleting all checkpoints\n"); for (i = 1; i < breakpoint_count; i++) { if ((cp = find_checkpoint(i))) { remove_checkpoint(cp); } } } else if (!(cp = find_checkpoint(cp_num))) { mon_out("#%d not a valid checkpoint\n", cp_num); return; } else { remove_checkpoint(cp); } }
void mon_breakpoint_set_checkpoint_command(int cp_num, char *cmd) { checkpoint_t *bp; bp = find_checkpoint(cp_num); if (!bp) { mon_out("#%d not a valid checkpoint\n", cp_num); } else { bp->command = cmd; mon_out("Setting checkpoint %d command to: %s\n", cp_num, cmd); } }
void mon_breakpoint_set_ignore_count(int cp_num, int count) { checkpoint_t *cp; cp = find_checkpoint(cp_num); if (!cp) { mon_out("#%d not a valid checkpoint\n", cp_num); } else { cp->ignore_count = count; mon_out("Will ignore the next %d hits of checkpoint #%d\n", count, cp_num); } }
void mon_breakpoint_switch_checkpoint(int op, int cp_num) { checkpoint_t *cp; cp = find_checkpoint(cp_num); if (!cp) { mon_out("#%d not a valid checkpoint\n", cp_num); } else { cp->enabled = op; mon_out("Set checkpoint #%d to state: %s\n", cp_num, (op == e_ON) ? "enabled" : "disabled"); } }
void mon_breakpoint_set_ignore_count(int breakpt_num, int count) { breakpoint_t *bp; bp = find_checkpoint(breakpt_num); if (!bp) { mon_out("#%d not a valid breakpoint\n", breakpt_num); } else { bp->ignore_count = count; mon_out("Ignoring the next %d crossings of breakpoint #%d\n", count, breakpt_num); } }
void mon_breakpoint_switch_checkpoint(int op, int breakpt_num) { breakpoint_t *bp; bp = find_checkpoint(breakpt_num); if (!bp) { mon_out("#%d not a valid breakpoint\n", breakpt_num); } else { bp->enabled = op; mon_out("Set breakpoint #%d to state: %s\n", breakpt_num, (op == e_ON) ? "enabled" : "disabled"); } }
void mon_breakpoint_print_checkpoints(void) { int i, any_set = 0; checkpoint_t *bp; for (i = 1; i < breakpoint_count; i++) { if ((bp = find_checkpoint(i))) { print_checkpoint_info(bp); any_set = 1; } } if (!any_set) mon_out("No breakpoints are set\n"); }
void mon_breakpoint_switch_checkpoint(int op, int cp_num) { int i; checkpoint_t *cp = NULL; cp = find_checkpoint(cp_num); if (cp_num == -1) { mon_out("Set all checkpoints to state: %s\n", (op == e_ON) ? "enabled" : "disabled"); for (i = 1; i < breakpoint_count; i++) { if ((cp = find_checkpoint(i))) { cp = find_checkpoint(i); cp->enabled = op; } } } else if (!(cp = find_checkpoint(cp_num))) { mon_out("#%d not a valid checkpoint\n", cp_num); return; } else { cp = find_checkpoint(cp_num); cp->enabled = op; } }
void mon_breakpoint_set_checkpoint_condition(int brk_num, cond_node_t *cnode) { breakpoint_t *bp; bp = find_checkpoint(brk_num); if (!bp) { mon_out("#%d not a valid breakpoint\n", brk_num); } else { bp->condition = cnode; mon_out("Setting breakpoint %d condition to: ", brk_num); mon_print_conditional(cnode); mon_out("\n"); } }
void mon_breakpoint_set_checkpoint_condition(int cp_num, cond_node_t *cnode) { checkpoint_t *cp; if (cnode) { cp = find_checkpoint(cp_num); if (!cp) { mon_out("#%d not a valid checkpoint\n", cp_num); } else { cp->condition = cnode; mon_out("Setting checkpoint %d condition to: ", cp_num); mon_print_conditional(cnode); mon_out("\n"); } } }