/* call stack can be 1024 deep */
STACK_DCL(callStack,function *,1024);
+#ifdef SDCDB_DEBUG
+char *debug_bp_type_strings[] =
+ {"ERR-0",
+ "DATA",
+ "CODE" ,
+ "A_CODE" ,
+ "USER" ,
+ "STEP" ,
+ "NEXT" ,
+ "FENTRY" ,
+ "FEXIT", "", ""};
+#endif
+
/*-----------------------------------------------------------------*/
/* setBreakPoint - creates an entry in the break point table */
/*-----------------------------------------------------------------*/
static long bpnum = 0;
char simbuf[50];
+ Dprintf(D_break, ("setBreakPoint: addr:%x atype:%s bpType:%s [%s:%d]\n",
+ addr,
+ debug_bp_type_strings[addrType],
+ debug_bp_type_strings[bpType],
+ fileName, lineno));
+
/* allocate & init a new bp */
bp = Safe_calloc(1,sizeof(breakp));
bp->addr = addr;
breakp *bp;
int k;
+ Dprintf(D_break, ("break: Deleting all STEP BPs\n"));
/* for break points delete if they are STEP */
for ( bp = hTabFirstItem(bptable,&k); bp ;
bp = hTabNextItem(bptable,&k)) {
int k;
char simcmd[50];
+ Dprintf(D_break, ("break: Deleting all NEXT BPs\n"));
+
/* for break points delete if they are NEXT */
for ( bp = hTabFirstItem(bptable,&k); bp ;
bp = hTabNextItem(bptable,&k)) {
int k;
char simcmd[50];
+ Dprintf(D_break, ("break: deleteUSERbp %d\n", bpnum));
+
/* for break points delete if they are STEP */
for ( bp = hTabFirstItem(bptable,&k); bp ;
bp = hTabNextItem(bptable,&k)) {
send command to simulator to delete bp from this addr */
if (hTabSearch(bptable,bp->addr) == NULL) {
simClearBP (bp->addr);
+ Dprintf(D_break, ("break: deleteUSERbp:simClearBP 0x%x\n", bp->addr));
}
fprintf(stdout,"Deleted breakpoint %d\n",
fprintf(stdout,"No breakpoints.\n");
return ;
}
- fprintf(stdout,"Num Address What\n");
+ fprintf(stdout,"Num Type Disp Enb Address What\n");
for ( bp = hTabFirstItem(bptable,&k) ; bp ;
bp = hTabNextItem(bptable,&k)) {
if (bp->bpType == USER ) {
- fprintf(stdout,"%-3d 0x%04x at %s:%d\n",
+ fprintf(stdout,"%-3d breakpoint keep y 0x%08x at %s:%d\n",
bp->bpnum,bp->addr,
bp->filename,bp->lineno);
breakp *bp;
int rv =0;
+ Dprintf(D_break, ("break: dispatchCB: addr:0x%x \n", addr));
+
/* if no break points set for this address
then use a simulator stop break point */
if ((bp = hTabFirstItemWK(bptable,addr)) == NULL) {
}
+ if (rv == 0) {
+ Dprintf(D_break, ("break: dispatchCB: WARNING rv==0\n", rv));
+ }
+
return rv;
}
/*-----------------------------------------------------------------*/
BP_CALLBACK(fentryCB)
{
+ Dprintf(D_break, ("break: fentryCB: BP_CALLBACK entry\n"));
+
/* add the current function into the call stack */
STACK_PUSH(callStack,ctxt->func);
/*-----------------------------------------------------------------*/
BP_CALLBACK(fexitCB)
{
+ Dprintf(D_break, ("break: fexitCB: BP_CALLBACK entry\n"));
+
/* pop the top most from the call stack */
STACK_POP(callStack);
return 0;
/*-----------------------------------------------------------------*/
BP_CALLBACK(userBpCB)
{
+ Dprintf(D_break, ("break: userBpCB: BP_CALLBACK entry\n"));
+
if (srcMode == SRC_CMODE) {
fprintf(stdout,"Breakpoint %d, %s() at %s:%d\n",
bpnum,
{
static function *lfunc = NULL;
+ Dprintf(D_break, ("break: stepBpCB: BP_CALLBACK entry\n"));
+
if (srcMode == SRC_CMODE) {
if ((lfunc && lfunc != ctxt->func) || !lfunc)
fprintf(stdout,"%s () at %s:%d\n",
{
static function *lfunc = NULL;
+ Dprintf(D_break, ("break: nextBpCB: BP_CALLBACK entry\n"));
+
if (srcMode == SRC_CMODE) {
if ((lfunc && lfunc != ctxt->func) || !lfunc)
fprintf(stdout,"%s () at %s:%d\n",