X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=debugger%2Fmcs51%2Fsdcdb.h;h=67a089cf85529e83da5d748089192a0d235a7abf;hb=4a8ba0366252ad9aeae9b12f019e38ac4e22c980;hp=c3bc3c206e4cb170a4cef7ea5531ecec35dc218b;hpb=f42f6705998596542ceadc46940ab6acd42e6d3a;p=fw%2Fsdcc diff --git a/debugger/mcs51/sdcdb.h b/debugger/mcs51/sdcdb.h index c3bc3c20..67a089cf 100644 --- a/debugger/mcs51/sdcdb.h +++ b/debugger/mcs51/sdcdb.h @@ -1,37 +1,51 @@ /*------------------------------------------------------------------------- sdcdb.h - Header file used by ALL source files for the debugger - Written By - Sandeep Dutta . sandeep.dutta@usa.net (1999) + Written By - Sandeep Dutta . sandeep.dutta@usa.net (1999) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - + In other words, you are welcome to use, share and improve this program. You are forbidden to forbid anyone else to use, share and improve - what you give them. Help stamp out software-hoarding! + what you give them. Help stamp out software-hoarding! -------------------------------------------------------------------------*/ #ifndef SDCDB_H #define SDCDB_H -/* #define SDCDB_DEBUG */ +#define SDCDB_DEBUG + +#ifdef SDCDB_DEBUG +// set D_x to 0 to turn off, 1 to turn on. +#define D_break 0x01 +#define D_simi 0x02 +#define D_sdcdb 0x04 +#define D_symtab 0x08 + +extern int sdcdbDebug; + +#define Dprintf(f, fs) {if (f & sdcdbDebug) printf fs ; } +#else +#define Dprintf(f, fs) { } +#endif #include #include #include #include #include -#include "sdccconf.h" +#include "config.h" #include "src/SDCCset.h" #include "src/SDCChasht.h" @@ -48,66 +62,22 @@ typedef short bool; #define min(a,b) (a < b ? a : b) #endif -#ifndef ALLOC -#define ALLOC(x,sz) if (!(x = calloc(1, sz))) \ - { \ - fprintf(stderr,"sdcdb: out of memory\n"); \ - exit (1); \ - } -#endif -#ifndef ALLOC_ATOMIC -#define ALLOC_ATOMIC(x,sz) if (!(x = calloc(1, sz))) \ - { \ - fprintf(stderr,"sdcdb: out of memory\n"); \ - exit (1); \ - } -#endif -/* generalpurpose stack related macros */ -#define STACK_DCL(stack,type,size) \ - typedef type t_##stack ; \ - t_##stack stack[size] ; \ - t_##stack (*p_##stack) = stack + (size); \ - t_##stack (*w_##stack) ; - -/* define extern stack */ -#define EXTERN_STACK_DCL(stack,type,size) \ - typedef type t_##stack ; \ - extern t_##stack stack[size] ; \ - extern t_##stack *p_##stack; \ - extern t_##stack *w_##stack; - -#define STACK_FULL(stack) ((p_##stack) <= stack ) -#define STACK_EMPTY(stack) ((p_##stack) >= (stack + \ - sizeof(stack)/sizeof(*stack)) ) - -#define STACK_PUSH_(stack,x) (*--p_##stack = (x)) -#define STACK_POP_(stack) (*p_##stack++) - -#define STACK_PUSH(stack,x) (STACK_FULL(stack) \ - ?((t_##stack)(long)(STACK_ERR(1))) \ - : STACK_PUSH_(stack,x) ) - -#define STACK_POP(stack) (STACK_EMPTY(stack) \ - ?((t_##stack)(long)(STACK_ERR(0))) \ - : STACK_POP_(stack) ) - -#define STACK_PEEK(stack) (STACK_EMPTY(stack) \ - ?((t_##stack) NULL) \ - : *p_##stack ) - -#define STACK_PPEEK(stack) (((p_##stack + 1) >= (stack + \ - sizeof(stack)/sizeof(*stack))) \ - ?((t_##stack) NULL) \ - : *(p_##stack + 1) ) - -#define STACK_ERR(o) ( o \ - ? fprintf(stderr,"stack Overflow\n")\ - : fprintf(stderr,"stack underflow\n")) - -#define STACK_STARTWALK(stack) (w_##stack = p_##stack) - -#define STACK_WALK(stack) (w_##stack >= (stack + sizeof(stack)/sizeof(*stack)) \ - ? NULL : *w_##stack++ ) +/* + * #ifndef ALLOC + * #define ALLOC(x,sz) if (!(x = calloc(1, sz))) \ + * { \ + * fprintf(stderr,"sdcdb: out of memory\n"); \ + * exit (1); \ + * } + * #endif + * #ifndef ALLOC_ATOMIC + * #define ALLOC_ATOMIC(x,sz) if (!(x = calloc(1, sz))) \ + * { \ + * fprintf(stderr,"sdcdb: out of memory\n"); \ + * exit (1); \ + * } + * #endif + */ #include "src/SDCCbitv.h" @@ -119,6 +89,14 @@ enum { MOD_REC }; +enum { + FMT_NON = 0, + FMT_BIN = 1, + FMT_OCT = 2, + FMT_DEZ = 3, + FMT_HEX = 4 +}; + enum { SRC_CMODE = 1, SRC_AMODE }; /*-----------------------------------------------------------------*/ @@ -131,14 +109,14 @@ typedef struct srcLine char *src ; } srcLine ; - + /*-----------------------------------------------------------------*/ /* structure for cdb record */ /*-----------------------------------------------------------------*/ typedef struct cdbrecs { char type ; /* type of line */ char *line; /* contents of line */ - struct cdbrecs *next; /* next in chain */ + struct cdbrecs *next; /* next in chain */ } cdbrecs ; /*-----------------------------------------------------------------*/ @@ -152,8 +130,9 @@ typedef struct module { char *asm_name; /* asm file name */ int ncLines; /* number of lines in this module */ int nasmLines; /* # of lines in the assembler file */ - srcLine **cLines; /* actual source lines */ + srcLine **cLines; /* actual source lines */ srcLine **asmLines; /* actual assembler source lines*/ + set *cfpoints; /* set of double line execution points */ } module; /*-----------------------------------------------------------------*/ @@ -165,22 +144,24 @@ typedef struct exePoint int line ; short block , level ; } exePoint ; - + /*-----------------------------------------------------------------*/ /* definition for a function */ /*-----------------------------------------------------------------*/ typedef struct function { - struct symbol *sym ;/* pointer to symbol for function */ - char *modName ;/* module name */ - module *mod ;/* module for this function */ + struct symbol *sym ;/* pointer to symbol for function */ + char *modName ;/* module name */ + module *mod ;/* module for this function */ int entryline ;/* first line in the function */ int aentryline ; int exitline ;/* last line in the function */ int aexitline ; - set *cfpoints ;/* set of all C execution points in func */ + set *cfpoints ;/* set of all C execution points in func */ set *afpoints ;/* set of all ASM execution points in func */ unsigned int laddr ;/* last executed address */ int lline ;/* last executed linenumber */ + unsigned int stkaddr ;/* stackpointer at beginning of function + * (not reentrant ! ) only actual */ } function ; /*-----------------------------------------------------------------*/ @@ -195,7 +176,7 @@ typedef struct linkrec { /*-----------------------------------------------------------------*/ /* program context */ /*-----------------------------------------------------------------*/ -typedef struct context { +typedef struct context { function *func; /* current function we are in */ char *modName; /* name of the module */ unsigned int addr ; /* current pc */ @@ -205,20 +186,50 @@ typedef struct context { int level ; /* current level number */ } context ; +/*-----------------------------------------------------------------*/ +/* symbol display information */ +/*-----------------------------------------------------------------*/ +typedef struct _dsymbol +{ + char *name; + int dnum; + int fmt; + char *rs; +} dsymbol; + + extern cdbrecs *recsRoot ; extern context *currCtxt ; extern set *modules ; /* set of modules */ extern set *functions; /* set of functions */ extern set *symbols ; /* set of symbols */ +extern set *sfrsymbols;/* set of symbols of sfr or sbit */ +extern set *dispsymbols; /* set of displayable symbols */ + +extern char *currModName ; +extern char userinterrupt ; +extern char nointerrupt ; +extern short showfull ; extern int nStructs ; extern struct structdef **structs ; /* all structures */ extern char *ssdirl; /* source directory search path */ void **resize (void **, int ); char *alloccpy(char *,int ); +char *gc_strdup(const char *s); srcLine **loadFile (char *name, int *nlines); + extern short fullname; extern int srcMode; +extern char contsim; char *searchDirsFname (char *); +char *getNextCmdLine(void ); +void setCmdLine( char * ); +void stopCommandList( void ); + +/* trimming functions */ +extern char *trim_left(char *s); +extern char *trim_right(char *s); +extern char *trim(char *s); #endif