/*-------------------------------------------------------------------------
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
#include <string.h>
#include <ctype.h>
#include <limits.h>
-#include "sdccconf.h"
+#include "config.h"
#include "src/SDCCset.h"
#include "src/SDCChasht.h"
#define min(a,b) (a < b ? a : b)
#endif
-/*
+/*
* #ifndef ALLOC
- * #define ALLOC(x,sz) if (!(x = calloc(1, sz))) \
+ * #define ALLOC(x,sz) if (!(x = calloc(1, sz))) \
* { \
- * fprintf(stderr,"sdcdb: out of memory\n"); \
+ * 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"); \
+ * fprintf(stderr,"sdcdb: out of memory\n"); \
* exit (1); \
* }
* #endif
#define STACK_FULL(stack) ((p_##stack) <= stack )
#define STACK_EMPTY(stack) ((p_##stack) >= (stack + \
- sizeof(stack)/sizeof(*stack)) )
+ sizeof(stack)/sizeof(*stack)) )
#define STACK_PUSH_(stack,x) (*--p_##stack = (x))
#define STACK_POP_(stack) (*p_##stack++)
: STACK_PUSH_(stack,x) )
#define STACK_POP(stack) (STACK_EMPTY(stack) \
- ?((t_##stack)(long)(STACK_ERR(0))) \
+ ?((t_##stack) NULL) \
: STACK_POP_(stack) )
#define STACK_PEEK(stack) (STACK_EMPTY(stack) \
#define STACK_STARTWALK(stack) (w_##stack = p_##stack)
#define STACK_WALK(stack) (w_##stack >= (stack + sizeof(stack)/sizeof(*stack)) \
- ? NULL : *w_##stack++ )
+ ? NULL : *w_##stack++ )
#include "src/SDCCbitv.h"
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 ;
/*-----------------------------------------------------------------*/
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;
/*-----------------------------------------------------------------*/
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 ;
/*-----------------------------------------------------------------*/
/*-----------------------------------------------------------------*/
/* 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 */
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 short userinterrupt ;
+extern char userinterrupt ;
+extern char nointerrupt ;
extern short showfull ;
extern int nStructs ;
extern struct structdef **structs ; /* all structures */
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