Beispiel #1
0
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);
    }
}
Beispiel #3
0
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);
    }
}
Beispiel #4
0
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);
    }
}
Beispiel #5
0
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");
    }
}
Beispiel #6
0
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);
    }
}
Beispiel #7
0
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");
    }
}
Beispiel #8
0
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;
    }
}
Beispiel #10
0
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");
    }
}
Beispiel #11
0
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");
        }
    }
}