X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=debugger%2Fmcs51%2Fsdcdb.c;fp=debugger%2Fmcs51%2Fsdcdb.c;h=7fe5f8e0d906481686124e847993f27c6bc91d62;hb=4a8ba0366252ad9aeae9b12f019e38ac4e22c980;hp=fc132d8c87acf772b96d625c79e440e5a8c0d0b1;hpb=e702c79af416db306adb67f12194e9c4dc285a04;p=fw%2Fsdcc diff --git a/debugger/mcs51/sdcdb.c b/debugger/mcs51/sdcdb.c index fc132d8c..7fe5f8e0 100644 --- a/debugger/mcs51/sdcdb.c +++ b/debugger/mcs51/sdcdb.c @@ -21,6 +21,10 @@ what you give them. Help stamp out software-hoarding! -------------------------------------------------------------------------*/ +#define link unix_link +#define _GNU_SOURCE +#include +#undef link #include "sdcdb.h" #include "symtab.h" #include "simi.h" @@ -61,6 +65,7 @@ int nsimArgs = 0; char model_str[20]; /* fake filename & lineno to make linker */ char *filename=NULL; +char *current_directory; int lineno = 0; int fatalError = 0; @@ -382,7 +387,7 @@ char *searchDirsFname (char *fname) { char *dirs , *sdirs; FILE *rfile = NULL; - char buffer[128]; + char buffer[1024]; /* first try the current directory */ if ((rfile = fopen(fname,"r"))) { @@ -424,7 +429,7 @@ FILE *searchDirsFopen(char *fname) { char *dirs , *sdirs; FILE *rfile = NULL; - char buffer[128]; + char buffer[1024]; /* first try the current directory */ if ((rfile = fopen(fname,"r"))) @@ -688,35 +693,13 @@ static void functionPoints (void) } } - -/*-----------------------------------------------------------------*/ -/* setEntryExitBP - set the entry & exit Break Points for functions*/ -/*-----------------------------------------------------------------*/ -DEFSETFUNC(setEntryExitBP) -{ - function *func = item; - - if (func->sym && func->sym->addr && func->sym->eaddr) { - - /* set the entry break point */ - setBreakPoint (func->sym->addr , CODE , FENTRY , - fentryCB ,func->mod->c_name , func->entryline); - - /* set the exit break point */ - setBreakPoint (func->sym->eaddr , CODE , FEXIT , - fexitCB ,func->mod->c_name , func->exitline ); - } - - return 0; -} - /*-----------------------------------------------------------------*/ /* cmdFile - load file into the debugger */ /*-----------------------------------------------------------------*/ int cmdFile (char *s,context *cctxt) { FILE *cdbFile; - char buffer[128]; + char buffer[1024]; char *bp; s = trim_left(s); @@ -771,7 +754,7 @@ int cmdFile (char *s,context *cctxt) /*set the break points required by the debugger . i.e. the function entry and function exit break points */ - applyToSet(functions,setEntryExitBP); +// applyToSet(functions,setEntryExitBP); setMainContext(); return 0; @@ -847,6 +830,16 @@ int cmdHelp (char *s, context *cctxt) static char cmdbuff[MAX_CMD_LEN]; static int sim_cmd_mode = 0; +char * +canonname(char *file) +{ + static char buffer[1024]; + if (*file == '/') + return file; + sprintf(buffer,"%s/%s", current_directory, file); + return buffer; +} + /*----------------------------------------------------------------- interpretCmd - interpret and do the command. Return 0 to continue, return 1 to exit program. @@ -859,7 +852,7 @@ int interpretCmd (char *s) /* if nothing & previous command exists then execute the previous command again */ - if (*s == '\n' && pcmd) + if ((*s == '\n' || *s == '\0') && pcmd) strcpy(s,pcmd); /* if previous command exists & is different @@ -912,11 +905,11 @@ int interpretCmd (char *s) showfull = 0; if (srcMode == SRC_CMODE) fprintf(stdout,"\032\032%s:%d:1:beg:0x%08x\n", - currCtxt->func->mod->cfullname, + canonname(currCtxt->func->mod->cfullname), currCtxt->cline+1,currCtxt->addr); else fprintf(stdout,"\032\032%s:%d:1:beg:0x%08x\n", - currCtxt->func->mod->afullname, + canonname(currCtxt->func->mod->afullname), currCtxt->asmline,currCtxt->addr); displayAll(currCtxt); } @@ -1603,7 +1596,7 @@ static void parseCmdLine (int argc, char **argv) } if (strncmp(argv[i],"-cd=",4) == 0) { - chdir(argv[i][4]); + chdir(argv[i]+4); continue; } @@ -1764,6 +1757,7 @@ int main ( int argc, char **argv) printVersionInfo(); printf("WARNING: SDCDB is EXPERIMENTAL.\n"); + current_directory = get_current_dir_name(); simArgs[nsimArgs++] = "s51"; simArgs[nsimArgs++] = "-P"; simArgs[nsimArgs++] = "-r 9756";