/* 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, ("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, ("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, ("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, ("deleteUSERbp:simClearBP 0x%x\n", bp->addr));
}
fprintf(stdout,"Deleted breakpoint %d\n",
breakp *bp;
int rv =0;
+ Dprintf(D_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, ("dispatchCB: WARNING rv==0\n", rv));
+ }
+
return rv;
}
/*-----------------------------------------------------------------*/
BP_CALLBACK(fentryCB)
{
+ Dprintf(D_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, ("fexitCB: BP_CALLBACK entry\n"));
+
/* pop the top most from the call stack */
STACK_POP(callStack);
return 0;
/*-----------------------------------------------------------------*/
BP_CALLBACK(userBpCB)
{
+ Dprintf(D_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, ("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, ("nextBpCB: BP_CALLBACK entry\n"));
+
if (srcMode == SRC_CMODE) {
if ((lfunc && lfunc != ctxt->func) || !lfunc)
fprintf(stdout,"%s () at %s:%d\n",