/*-------------------------------------------------------------------------
cmd.c - source file for debugger command execution
/*-------------------------------------------------------------------------
cmd.c - source file for debugger command execution
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
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
what you give them. Help stamp out software-hoarding!
-------------------------------------------------------------------------*/
what you give them. Help stamp out software-hoarding!
-------------------------------------------------------------------------*/
char *rs, char *val, char cmp);
int srcMode = SRC_CMODE ;
char *rs, char *val, char cmp);
int srcMode = SRC_CMODE ;
static int currentFrame = 0; /* actual displayed frame */
/*-----------------------------------------------------------------*/
/* funcWithName - returns function with name */
static int currentFrame = 0; /* actual displayed frame */
/*-----------------------------------------------------------------*/
/* funcWithName - returns function with name */
- next_line++ ) {
- if (srcMode == SRC_CMODE) {
- if (mod->cLines[next_line]->addr != INT_MAX) {
- setBreakPoint (mod->cLines[next_line]->addr, CODE, bpType,
- userBpCB, mod->c_name, next_line);
- return;
-// break;
- }
- }
- else {
- if (mod->asmLines[next_line]->addr != INT_MAX) {
- setBreakPoint (mod->asmLines[next_line]->addr, CODE, bpType,
- userBpCB, mod->asm_name, next_line);
- return;
-// break;
- }
- }
- }
-
- fprintf(stderr,"No line %d or after in file \"%s\"..\n",
- line,mod->c_name);
+ next_line++ ) {
+ if (srcMode == SRC_CMODE) {
+ if (mod->cLines[next_line]->addr != INT_MAX) {
+ setBreakPoint (mod->cLines[next_line]->addr, CODE, bpType,
+ userBpCB, mod->c_name, next_line);
+ return;
+// break;
+ }
+ }
+ else {
+ if (mod->asmLines[next_line]->addr != INT_MAX) {
+ setBreakPoint (mod->asmLines[next_line]->addr, CODE, bpType,
+ userBpCB, mod->asm_name, next_line);
+ return;
+// break;
+ }
+ }
+ }
+
+ fprintf(stderr,"No line %d or after in file \"%s\"..\n",
+ line,mod->c_name);
/* look for the first executable line after the line
specified & get the break point there */
if (srcMode == SRC_CMODE && line > mod->ncLines) {
/* look for the first executable line after the line
specified & get the break point there */
if (srcMode == SRC_CMODE && line > mod->ncLines) {
- line++ ) {
- if (srcMode == SRC_CMODE)
- if (mod->cLines[line]->addr) {
- clearUSERbp (mod->cLines[line]->addr);
- break;
- }
- else
- if (mod->asmLines[line]->addr) {
- clearUSERbp (mod->asmLines[line]->addr);
- break;
- }
+ line++ ) {
+ if (srcMode == SRC_CMODE)
+ if (mod->cLines[line]->addr) {
+ clearUSERbp (mod->cLines[line]->addr);
+ break;
+ }
+ else
+ if (mod->asmLines[line]->addr) {
+ clearUSERbp (mod->asmLines[line]->addr);
+ break;
+ }
- /* set the entry break point */
- setBreakPoint (func->sym->addr , CODE , STEP ,
- stepBpCB ,func->mod->c_name , func->entryline);
+ /* set the entry break point */
+ setBreakPoint (func->sym->addr , CODE , STEP ,
+ stepBpCB ,func->mod->c_name , func->entryline);
V_ARG(char *,mname);
setBreakPoint (ep->addr, CODE, bptype,
V_ARG(char *,mname);
setBreakPoint (ep->addr, CODE, bptype,
V_ARG(char *,mname);
setBreakPoint (ep->addr, CODE, bptype,
V_ARG(char *,mname);
setBreakPoint (ep->addr, CODE, bptype,
/* find the asm line number */
line = 0;
if (applyToSet(func->afpoints,lineAtAddr,addr,
/* find the asm line number */
line = 0;
if (applyToSet(func->afpoints,lineAtAddr,addr,
/*-----------------------------------------------------------------*/
static char *preparePrint(char *s, context *cctxt, int *fmt, symbol **sym)
{
/*-----------------------------------------------------------------*/
static char *preparePrint(char *s, context *cctxt, int *fmt, symbol **sym)
{
/* case a) nothing */
/* if nothing given then current location : we know
the current execution location from the currentContext */
if (! *s ) {
/* case a) nothing */
/* if nothing given then current location : we know
the current execution location from the currentContext */
if (! *s ) {
- if (srcMode == SRC_CMODE)
- /* set the break point */
- setBreakPoint ( cctxt->addr , CODE , bpType , userBpCB ,
- cctxt->func->mod->c_name, cctxt->cline);
- else
- setBreakPoint ( cctxt->addr , CODE , bpType , userBpCB ,
- cctxt->func->mod->asm_name, cctxt->asmline);
+ if (srcMode == SRC_CMODE)
+ /* set the break point */
+ setBreakPoint ( cctxt->addr , CODE , bpType , userBpCB ,
+ cctxt->func->mod->c_name, cctxt->cline);
+ else
+ setBreakPoint ( cctxt->addr , CODE , bpType , userBpCB ,
+ cctxt->func->mod->asm_name, cctxt->asmline);
module *modul;
if (!applyToSet(modules,moduleLineWithAddr,braddr,&modul,&line))
{
module *modul;
if (!applyToSet(modules,moduleLineWithAddr,braddr,&modul,&line))
{
setBreakPoint ( braddr , CODE , bpType , userBpCB ,
modul->c_name,line);
}
goto ret ;
}
setBreakPoint ( braddr , CODE , bpType , userBpCB ,
modul->c_name,line);
}
goto ret ;
}
{
int line = func->exitline;
if ( !applyToSet(func->cfpoints,lineAtAddr,braddr,
{
int line = func->exitline;
if ( !applyToSet(func->cfpoints,lineAtAddr,braddr,
setBreakPoint ( braddr , CODE , bpType , userBpCB ,
func->mod->c_name,line);
}
setBreakPoint ( braddr , CODE , bpType , userBpCB ,
func->mod->c_name,line);
}
}
/* case b) lineno */
/* check if line number */
if ( !strchr(s,':') && isdigit(*s)) {
}
/* case b) lineno */
/* check if line number */
if ( !strchr(s,':') && isdigit(*s)) {
- /* if current context not present then we must get the module
- which has main & set the break point @ line number provided
- of that module : if current context known then set the bp
- at the line number given for the current module
- */
- if (cctxt->func) {
- if (!cctxt->func->mod) {
- if (!applyToSet(functions,funcWithName,"main"))
- fprintf(stderr,"Function \"main\" not defined.\n");
- else
- setBPatModLine(func->mod,line, bpType);
- } else
- setBPatModLine(cctxt->func->mod,line, bpType);
- } else {
- if (list_mod) {
- setBPatModLine(list_mod,line, bpType);
- } else {
- fprintf(stdout,"Sdcdb fails to have module symbol context at %d\n", __LINE__);
- }
- }
-
- goto ret;
+ /* if current context not present then we must get the module
+ which has main & set the break point @ line number provided
+ of that module : if current context known then set the bp
+ at the line number given for the current module
+ */
+ if (cctxt->func) {
+ if (!cctxt->func->mod) {
+ if (!applyToSet(functions,funcWithName,"main"))
+ fprintf(stderr,"Function \"main\" not defined.\n");
+ else
+ setBPatModLine(func->mod,line, bpType);
+ } else
+ setBPatModLine(cctxt->func->mod,line, bpType);
+ } else {
+ if (list_mod) {
+ setBPatModLine(list_mod,line, bpType);
+ } else {
+ fprintf(stdout,"Sdcdb fails to have module symbol context at %d\n", __LINE__);
+ }
+ }
+
+ goto ret;
- module *mod = NULL;
- *bp = '\0';
-
- if (srcMode == SRC_CMODE) {
- if (!applyToSet(modules,moduleWithCName,s,&mod)) {
- fprintf (stderr,"No source file named %s.\n",s);
- goto ret;
- }
- } else {
- if (!applyToSet(modules,moduleWithAsmName,s,&mod)) {
- fprintf (stderr,"No source file named %s.\n",s);
- goto ret;
- }
- }
-
- /* case c) filename:lineno */
- if (isdigit(*(bp +1))) {
+ module *mod = NULL;
+ *bp = '\0';
+
+ if (srcMode == SRC_CMODE) {
+ if (!applyToSet(modules,moduleWithCName,s,&mod)) {
+ fprintf (stderr,"No source file named %s.\n",s);
+ goto ret;
+ }
+ } else {
+ if (!applyToSet(modules,moduleWithAsmName,s,&mod)) {
+ fprintf (stderr,"No source file named %s.\n",s);
+ goto ret;
+ }
+ }
+
+ /* case c) filename:lineno */
+ if (isdigit(*(bp +1))) {
- setBPatModLine (mod,atoi(bp+1)-1,bpType);
- goto ret;
-
- }
- /* case d) filename:function */
- if (!applyToSet(functions,funcWithNameModule,bp+1,s,&func))
- fprintf(stderr,"Function \"%s\" not defined.\n",bp+1);
- else
+ setBPatModLine (mod,atoi(bp+1)-1,bpType);
+ goto ret;
+
+ }
+ /* case d) filename:function */
+ if (!applyToSet(functions,funcWithNameModule,bp+1,s,&func))
+ fprintf(stderr,"Function \"%s\" not defined.\n",bp+1);
+ else
- setBPatModLine (mod,
- (srcMode == SRC_CMODE ?
- func->entryline :
- func->aentryline),bpType);
+ setBPatModLine (mod,
+ (srcMode == SRC_CMODE ?
+ func->entryline :
+ func->aentryline),bpType);
}
/* case e) function */
Dprintf(D_break, ("commonSetUserBp: e) \n"));
if (!applyToSet(functions,funcWithName,s,&func))
}
/* case e) function */
Dprintf(D_break, ("commonSetUserBp: e) \n"));
if (!applyToSet(functions,funcWithName,s,&func))
- setBPatModLine(func->mod,
- (srcMode == SRC_CMODE ?
- func->entryline :
- func->aentryline),bpType);
+ setBPatModLine(func->mod,
+ (srcMode == SRC_CMODE ?
+ func->entryline :
+ func->aentryline),bpType);
/*-----------------------------------------------------------------*/
int cmdJump (char *s, context *cctxt)
{
/*-----------------------------------------------------------------*/
int cmdJump (char *s, context *cctxt)
{
/*-----------------------------------------------------------------*/
int cmdSetOption (char *s, context *cctxt)
{
/*-----------------------------------------------------------------*/
int cmdSetOption (char *s, context *cctxt)
{
- if (srcMode == SRC_CMODE)
- srcMode = SRC_AMODE;
- else
- srcMode = SRC_CMODE;
- fprintf(stderr,"source mode set to '%s'\n",
- (srcMode == SRC_CMODE ? "C" : "asm"));
- return 0;
+ if (srcMode == SRC_CMODE)
+ srcMode = SRC_AMODE;
+ else
+ srcMode = SRC_CMODE;
+ fprintf(stderr,"source mode set to '%s'\n",
+ (srcMode == SRC_CMODE ? "C" : "asm"));
+ return 0;
if (*s && sym)
{
printOrSetSymValue(sym,cctxt,0,0,0,rs,s,'\0');
if (*s && sym)
{
printOrSetSymValue(sym,cctxt,0,0,0,rs,s,'\0');
int cmdContinue (char *s, context *cctxt)
{
if (STACK_EMPTY(callStack)) {
int cmdContinue (char *s, context *cctxt)
{
if (STACK_EMPTY(callStack)) {
- if (userBpPresent) {
- char buffer[10];
- fprintf (stdout,"Delete all breakpoints? (y or n) ");
- fflush(stdout);
- fgets(buffer,sizeof(buffer),stdin);
- if (toupper(buffer[0]) == 'Y')
- deleteUSERbp(-1);
- }
- return 0;
+ if (userBpPresent) {
+ char buffer[10];
+ char *res;
+
+ fprintf (stdout,"Delete all breakpoints? (y or n) ");
+ fflush(stdout);
+ res = fgets(buffer,sizeof(buffer),stdin);
+ assert(res == &buffer[0]);
+ if (toupper(buffer[0]) == 'Y')
+ deleteUSERbp(-1);
+ }
+ return 0;
}
/* determine the break point number */
if (sscanf(s,"%d",&bpnum) == 1)
}
/* determine the break point number */
if (sscanf(s,"%d",&bpnum) == 1)
- fprintf(stdout,
- "The program being debugged has been started already.\n");
- fprintf(stdout,"Start it from the beginning? (y or n) ");
- fflush(stdout);
+ fprintf(stdout,
+ "The program being debugged has been started already.\n");
+ fprintf(stdout,"Start it from the beginning? (y or n) ");
+ fflush(stdout);
- fgets(buff,sizeof(buff),stdin);
- if (toupper(buff[0]) == 'Y') {
- simReset();
+ res = fgets(buff,sizeof(buff),stdin);
+ assert(res == &buff[0]);
+ if (toupper(buff[0]) == 'Y') {
+ simReset();
for ( j = 0; j < 8 ; j++ )
{
val = simGetValue (j,'R',1);
for ( j = 0; j < 8 ; j++ )
{
val = simGetValue (j,'R',1);
- fprintf(stdout,"ACC : 0x%02X %d %c\n",val,val,(isprint(val) ? val : '.'));
+ fprintf(stdout,"ACC : 0x%02lX %lu %c\n",val,val,(isprint(val) ? (char)val : '.'));
- fprintf(stdout,"B : 0x%02X %d %c\n",val,val,(isprint(val) ? val : '.'));
+ fprintf(stdout,"B : 0x%02lX %lu %c\n",val,val,(isprint(val) ? (char)val : '.'));
- fprintf(stdout,"DPTR: 0x%04X %d\n",val,val);
+ fprintf(stdout,"DPTR: 0x%04lX %lu\n",val,val);
- fprintf(stdout,"SP : 0x%02X (0x%04X)\n",val,simGetValue (val-1,'B',2));
+ fprintf(stdout,"SP : 0x%02lX (0x%04lX)\n",val,simGetValue (val-1,'B',2));
fprintf(stdout,"PSW : 0x%02X | CY : %c | AC : %c | OV : %c | P : %c\n",
i,(i&0x80)?'1':'0',(i&0x40)?'1':'0',(i&4)?'1':'0',(i&1)?'1':'0');
if ( all )
fprintf(stdout,"PSW : 0x%02X | CY : %c | AC : %c | OV : %c | P : %c\n",
i,(i&0x80)?'1':'0',(i&0x40)?'1':'0',(i&4)?'1':'0',(i&1)?'1':'0');
if ( all )
if (applyToSetFTrue(sfrsymbols,symWithAddr,i,'I',&sym))
{
val = simGetValue (sym->addr,sym->addrspace,sym->size);
if (applyToSetFTrue(sfrsymbols,symWithAddr,i,'I',&sym))
{
val = simGetValue (sym->addr,sym->addrspace,sym->size);
- fprintf(stdout,"%s : 0x%02x",sym->name,val);
+ fprintf(stdout,"%s : 0x%02lx",sym->name,val);
while ((func = STACK_WALK(callStack))) {
Dprintf(D_break, ("break: infoStack: %s %p (%p)\n",func->sym->name, w_callStack,p_callStack));
while ((func = STACK_WALK(callStack))) {
Dprintf(D_break, ("break: infoStack: %s %p (%p)\n",func->sym->name, w_callStack,p_callStack));
- fprintf(stdout,"#%d 0x%08x in %s () at %s:%d\n",i++,
- func->laddr,func->sym->name,
- func->mod->c_name,func->lline+1);
+ fprintf(stdout,"#%d 0x%08x in %s () at %s:%d\n",i++,
+ func->laddr,func->sym->name,
+ func->mod->c_name,func->lline+1);
/*-----------------------------------------------------------------*/
int cmdWhere(char *s, context *cctxt)
{
/*-----------------------------------------------------------------*/
int cmdWhere(char *s, context *cctxt)
{
/*-----------------------------------------------------------------*/
int cmdInfo (char *s, context *cctxt)
{
/*-----------------------------------------------------------------*/
int cmdInfo (char *s, context *cctxt)
{
/* list all break points */
if (strncmp(s,"break",5) == 0) {
/* list all break points */
if (strncmp(s,"break",5) == 0) {
}
/* info stack display call stack */
if (strcmp(s,"stack") == 0) {
}
/* info stack display call stack */
if (strcmp(s,"stack") == 0) {
}
/* info stack display call stack */
if (strcmp(s,"registers") == 0) {
infoRegisters(0,cctxt);
}
/* info stack display call stack */
if (strcmp(s,"registers") == 0) {
infoRegisters(0,cctxt);
- /* case a) LINE */
- if (isdigit(*s)) {
- if (!cctxt || !cctxt->func || !cctxt->func->mod) {
- if (!list_mod) {
- fprintf(stdout,"Sdcdb fails to have a proper context at %d.\n", __LINE__);
- return 0;
- }
- }
- else
- list_mod = cctxt->func->mod;
+ /* case a) LINE */
+ if (isdigit(*s)) {
+ if (!cctxt || !cctxt->func || !cctxt->func->mod) {
+ if (!list_mod) {
+ fprintf(stdout,"Sdcdb fails to have a proper context at %d.\n", __LINE__);
+ return 0;
+ }
+ }
+ else
+ list_mod = cctxt->func->mod;
pline = strtol(s,&s,10) - 1;
if (s && (s = strchr(s,',')))
{
pline = strtol(s,&s,10) - 1;
if (s && (s = strchr(s,',')))
{
- }
- else {
- char *bp;
-
- /* if ':' present then FILE:LINE || FILE:FUNCTION */
- if ((bp = strchr(s,':'))) {
- *bp = '\0';
- bp ++;
- if (isdigit(*bp)) {
- /* FILE:LINE */
- list_mod=NULL; /* bug fix 2-09-02, moduleWithCName expects mod to be null */
- if (srcMode == SRC_CMODE) {
- if (!applyToSet(modules,moduleWithCName,s,&list_mod)) {
- fprintf (stderr,"No c source file named %s.\n",s);
- return 0;
- }
- } else {
- if (!applyToSet(modules,moduleWithAsmName,s,&list_mod)) {
- fprintf (stderr,"No source file named %s.\n",s);
- return 0;
- }
- }
- pline = strtol(bp,&bp,10) - 1;
+ }
+ else {
+ char *bp;
+
+ /* if ':' present then FILE:LINE || FILE:FUNCTION */
+ if ((bp = strchr(s,':'))) {
+ *bp = '\0';
+ bp ++;
+ if (isdigit(*bp)) {
+ /* FILE:LINE */
+ list_mod=NULL; /* bug fix 2-09-02, moduleWithCName expects mod to be null */
+ if (srcMode == SRC_CMODE) {
+ if (!applyToSet(modules,moduleWithCName,s,&list_mod)) {
+ fprintf (stderr,"No c source file named %s.\n",s);
+ return 0;
+ }
+ } else {
+ if (!applyToSet(modules,moduleWithAsmName,s,&list_mod)) {
+ fprintf (stderr,"No source file named %s.\n",s);
+ return 0;
+ }
+ }
+ pline = strtol(bp,&bp,10) - 1;
- } else {
- /* FILE:FUCTION */
- if (!applyToSet(functions,funcWithNameModule,bp,s,&func)) {
- fprintf(stdout,"Function \"%s\" not defined.\n",bp);
- return 0;
- }
- list_mod = func->mod;
- if (srcMode == SRC_CMODE) {
- pline = func->entryline;
- llines = func->exitline - func->entryline + 1;
- } else {
- pline = func->aentryline;
- llines = func->aexitline - func->aentryline + 1;
- }
- }
- }
- else {
- /* FUNCTION */
+ } else {
+ /* FILE:FUCTION */
+ if (!applyToSet(functions,funcWithNameModule,bp,s,&func)) {
+ fprintf(stdout,"Function \"%s\" not defined.\n",bp);
+ return 0;
+ }
+ list_mod = func->mod;
+ if (srcMode == SRC_CMODE) {
+ pline = func->entryline;
+ llines = func->exitline - func->entryline + 1;
+ } else {
+ pline = func->aentryline;
+ llines = func->aexitline - func->aentryline + 1;
+ }
+ }
+ }
+ else {
+ /* FUNCTION */
- if (!applyToSet(functions,funcWithName,s,&func)) {
- fprintf(stderr,"Function \"%s\" not defined.\n",s);
- return 0;
- }
- else {
- list_mod = func->mod;
- if (srcMode == SRC_CMODE) {
- pline = func->entryline;
- llines = func->exitline - func->entryline + 1;
- } else {
- pline = func->aentryline;
- llines = func->aexitline - func->aentryline + 1;
- }
- }
- }
- }
+ if (!applyToSet(functions,funcWithName,s,&func)) {
+ fprintf(stderr,"Function \"%s\" not defined.\n",s);
+ return 0;
+ }
+ else {
+ list_mod = func->mod;
+ if (srcMode == SRC_CMODE) {
+ pline = func->entryline;
+ llines = func->exitline - func->entryline + 1;
+ } else {
+ pline = func->aentryline;
+ llines = func->aexitline - func->aentryline + 1;
+ }
+ }
+ }
+ }
- /* if no line specified & we had listed
- before then continue from that listing */
- if (currline)
- pline = currline ;
- else {
- if (!cctxt || !cctxt->func || !cctxt->func->mod) {
- fprintf(stdout,"Missing context at %d. Try list filename:lineno\n", __LINE__);
- return 0;
- }
- list_mod = cctxt->func->mod;
- if (srcMode == SRC_CMODE)
- pline = cctxt->cline;
- else
- pline = cctxt->asmline;
- }
+ /* if no line specified & we had listed
+ before then continue from that listing */
+ if (currline)
+ pline = currline ;
+ else {
+ if (!cctxt || !cctxt->func || !cctxt->func->mod) {
+ fprintf(stdout,"Missing context at %d. Try list filename:lineno\n", __LINE__);
+ return 0;
+ }
+ list_mod = cctxt->func->mod;
+ if (srcMode == SRC_CMODE)
+ pline = cctxt->cline;
+ else
+ pline = cctxt->asmline;
+ }
pline+1,
list_mod->c_name, lastaddr,
func ? func->sym->name : "?",
pline+1,
list_mod->c_name, lastaddr,
func ? func->sym->name : "?",
- if (srcMode == SRC_CMODE) {
- if ( (pline + i) >= list_mod->ncLines )
- break;
- fprintf(stdout,"%d\t%s",pline + i,
- list_mod->cLines[pline +i]->src);
- } else {
- if ( (pline + i) >= list_mod->nasmLines )
- break;
- fprintf(stdout,"%d\t%s",pline + i,
- list_mod->asmLines[pline +i]->src);
- }
+ if (srcMode == SRC_CMODE) {
+ if ( (pline + i) >= list_mod->ncLines )
+ break;
+ fprintf(stdout,"%d\t%s",pline + i,
+ list_mod->cLines[pline +i]->src);
+ } else {
+ if ( (pline + i) >= list_mod->nasmLines )
+ break;
+ fprintf(stdout,"%d\t%s",pline + i,
+ list_mod->asmLines[pline +i]->src);
+ }
v.i.lo = strtol(val,NULL,0);
else
v.val = strtol(val,NULL,0);
v.i.lo = strtol(val,NULL,0);
else
v.val = strtol(val,NULL,0);
};
static int radixOfFormat[] = { 0 , 2, 8 ,10, 16 };
static int olenOfSize[] = { 0 , 3, 6 , 8, 11 };
};
static int radixOfFormat[] = { 0 , 2, 8 ,10, 16 };
static int olenOfSize[] = { 0 , 3, 6 , 8, 11 };
v.val = simGetValue(addr,mem,size);
/* if this a floating point number then */
if (IS_FLOAT(type))
v.val = simGetValue(addr,mem,size);
/* if this a floating point number then */
if (IS_FLOAT(type))
- if (IS_PTR(type))
- fprintf(stdout,"0x%*x",size<<1,v.val);
- else
+ if (IS_PTR(type))
+ fprintf(stdout,"0x%*lx",size<<1,v.val);
+ else
- fprintf(stdout,"0x%0*x",size<<1,v.val);
+ fprintf(stdout,"0x%0*lx",size<<1,v.val);
- } else
- fprintf(stdout,"0x%0*x",size<<1,v.val);
+ } else
+ fprintf(stdout,"0x%0*lx",size<<1,v.val);
static void printArrayValue (symbol *sym, link *type,
char space, unsigned int addr, int fmt)
{
static void printArrayValue (symbol *sym, link *type,
char space, unsigned int addr, int fmt)
{
- fprintf(stdout,"{");
- for (i = 0 ; i < DCL_ELEM(type) ; i++) {
- if (IS_AGGREGATE(elem_type)) {
- printValAggregates(sym,elem_type,space,addr,fmt);
- } else {
- printValBasic(sym,elem_type,space,addr,getSize(elem_type),fmt);
- }
- addr += getSize(elem_type);
- if (i != DCL_ELEM(type) -1)
- fprintf(stdout,",");
- }
+ fprintf(stdout,"{");
+ for (i = 0 ; i < DCL_ELEM(type) ; i++) {
+ if (IS_AGGREGATE(elem_type)) {
+ printValAggregates(sym,elem_type,space,addr,fmt);
+ } else {
+ printValBasic(sym,elem_type,space,addr,getSize(elem_type),fmt);
+ }
+ addr += getSize(elem_type);
+ if (i != DCL_ELEM(type) -1)
+ fprintf(stdout,",");
+ }
static void printStructValue (symbol *sym, link *type,
char space, unsigned int addr, int fmt)
{
static void printStructValue (symbol *sym, link *type,
char space, unsigned int addr, int fmt)
{
- fprintf(stdout," { ");
- while (fields) {
- fprintf(stdout,"%s%s = ",(first ? "": ", "),fields->name);
- first = 0;
+ fprintf(stdout," { ");
+ while (fields) {
+ fprintf(stdout,"%s%s = ",(first ? "": ", "),fields->name);
+ first = 0;
- printValAggregates(fields,fields->type,space, addr, fmt);
- } else {
- printValBasic(fields,fields->type,space,addr,getSize(fields->type), fmt);
- }
- addr += getSize(fields->type);
- fields = fields->next;
- }
- fprintf(stdout,"}");
+ printValAggregates(fields,fields->type,space, addr, fmt);
+ } else {
+ printValBasic(fields,fields->type,space,addr,getSize(fields->type), fmt);
+ }
+ addr += getSize(fields->type);
+ fields = fields->next;
+ }
+ fprintf(stdout,"}");
- if (IS_ARRAY(type)) {
- printArrayValue(sym, type, space, addr, fmt);
- return ;
- }
+ if (IS_ARRAY(type)) {
+ printArrayValue(sym, type, space, addr, fmt);
+ return ;
+ }
- if (IS_STRUCT(type)) {
- printStructValue(sym, type, space, addr, fmt);
- return;
- }
+ if (IS_STRUCT(type)) {
+ printStructValue(sym, type, space, addr, fmt);
+ return;
+ }
printValAggregates(sym,type,sym->addrspace,addr,fmt);
}
else
printValAggregates(sym,type,sym->addrspace,addr,fmt);
}
else
printValBasic(sym,type,sym->addrspace,addr,size,fmt);
}
if ( flg > 0 ) fprintf(stdout,"\n");
printValBasic(sym,type,sym->addrspace,addr,size,fmt);
}
if ( flg > 0 ) fprintf(stdout,"\n");
}
fprintf(stdout,"%s %s {\n",(i ? "struct" : "union" ), sdef->tag);
field = sdef->fields;
while (field) {
}
fprintf(stdout,"%s %s {\n",(i ? "struct" : "union" ), sdef->tag);
field = sdef->fields;
while (field) {
- printTypeInfo (field->type);
- fprintf(stdout," %s ;\n",field->name);
- field = field->next ;
+ printTypeInfo (field->type);
+ fprintf(stdout," %s ;\n",field->name);
+ field = field->next ;
- switch (DCL_TYPE(p)) {
- case FUNCTION:
- printTypeInfo (p->next);
- fprintf(stdout,"()");
- break;
- case ARRAY:
- printTypeInfo (p->next);
- fprintf(stdout,"[%d]",DCL_ELEM(p));
- break;
-
- case IPOINTER:
- case PPOINTER:
- case POINTER:
- printTypeInfo (p->next);
- fprintf(stdout,"(_near *)");
- break;
-
- case FPOINTER:
- printTypeInfo (p->next);
- fprintf(stdout,"(_xdata *)");
- break;
-
- case CPOINTER:
- printTypeInfo( p->next);
- fprintf(stdout,"(_code *)");
- break;
-
- case GPOINTER:
- printTypeInfo( p->next);
- fprintf(stdout,"(_generic *)");
- break;
- }
+ switch (DCL_TYPE(p)) {
+ case FUNCTION:
+ printTypeInfo (p->next);
+ fprintf(stdout,"()");
+ break;
+ case ARRAY:
+ printTypeInfo (p->next);
+ fprintf(stdout,"[%d]",DCL_ELEM(p));
+ break;
+
+ case IPOINTER:
+ case PPOINTER:
+ case POINTER:
+ printTypeInfo (p->next);
+ fprintf(stdout,"(_near *)");
+ break;
+
+ case FPOINTER:
+ printTypeInfo (p->next);
+ fprintf(stdout,"(_xdata *)");
+ break;
+
+ case CPOINTER:
+ printTypeInfo( p->next);
+ fprintf(stdout,"(_code *)");
+ break;
+
+ case GPOINTER:
+ printTypeInfo( p->next);
+ fprintf(stdout,"(_generic *)");
+ break;
+ }
- switch (SPEC_NOUN(p)) { /* depending on the specifier type */
- case V_INT:
- (IS_LONG(p) ? fputs("long ",stdout) :
- ( IS_SHORT(p) ? fputs("short ",stdout) :
- fputs("int ",stdout))) ;
- break;
- case V_FLOAT:
- fputs("float ",stdout);
- break;
+ switch (SPEC_NOUN(p)) { /* depending on the specifier type */
+ case V_INT:
+ (IS_LONG(p) ? fputs("long ",stdout) :
+ ( IS_SHORT(p) ? fputs("short ",stdout) :
+ fputs("int ",stdout))) ;
+ break;
+ case V_FLOAT:
+ fputs("float ",stdout);
+ break;
fmt = printOrSetSymValue(sym,cctxt,0,0,0,rs,s,cmp_char);
}
Safe_free(dup);
fmt = printOrSetSymValue(sym,cctxt,0,0,0,rs,s,cmp_char);
}
Safe_free(dup);
/*-----------------------------------------------------------------*/
int cmdPrintType (char *s, context *cctxt)
{
/*-----------------------------------------------------------------*/
int cmdPrintType (char *s, context *cctxt)
{
/* case a) nothing */
/* if nothing given then current location : we know
the current execution location from the currentContext */
if (! *s ) {
/* case a) nothing */
/* if nothing given then current location : we know
the current execution location from the currentContext */
if (! *s ) {
- /* if current context is known */
- if (cctxt->func)
- /* clear the break point @ current location */
- clearUSERbp (cctxt->addr);
- else
- fprintf(stderr,"No default breakpoint address now.\n");
+ /* if current context is known */
+ if (cctxt->func)
+ /* clear the break point @ current location */
+ clearUSERbp (cctxt->addr);
+ else
+ fprintf(stderr,"No default breakpoint address now.\n");
- /* get the lineno */
- int line = atoi(s);
-
- /* if current context not present then we must get the module
- which has main & set the break point @ line number provided
- of that module : if current context known then set the bp
- at the line number given for the current module
- */
- if (cctxt->func) {
- if (!cctxt->func->mod) {
- if (!applyToSet(functions,funcWithName,"main"))
- fprintf(stderr,"Function \"main\" not defined.\n");
- else
- clearBPatModLine(func->mod,line);
- } else
- clearBPatModLine(cctxt->func->mod,line);
- }
-
- goto ret;
+ /* get the lineno */
+ int line = atoi(s);
+
+ /* if current context not present then we must get the module
+ which has main & set the break point @ line number provided
+ of that module : if current context known then set the bp
+ at the line number given for the current module
+ */
+ if (cctxt->func) {
+ if (!cctxt->func->mod) {
+ if (!applyToSet(functions,funcWithName,"main"))
+ fprintf(stderr,"Function \"main\" not defined.\n");
+ else
+ clearBPatModLine(func->mod,line);
+ } else
+ clearBPatModLine(cctxt->func->mod,line);
+ }
+
+ goto ret;
- if (!applyToSet(modules,moduleWithCName,s,&mod)) {
- fprintf (stderr,"No source file named %s.\n",s);
- goto ret;
- }
+ if (!applyToSet(modules,moduleWithCName,s,&mod)) {
+ fprintf (stderr,"No source file named %s.\n",s);
+ goto ret;
+ }
- }
- /* case d) filename:function */
- if (!applyToSet(functions,funcWithNameModule,bp+1,s,&func))
- fprintf(stderr,"Function \"%s\" not defined.\n",bp+1);
- else
- clearBPatModLine (mod,func->entryline);
+ }
+ /* case d) filename:function */
+ if (!applyToSet(functions,funcWithNameModule,bp+1,s,&func))
+ fprintf(stderr,"Function \"%s\" not defined.\n",bp+1);
+ else
+ clearBPatModLine (mod,func->entryline);
}
/* case e) function */
if (!applyToSet(functions,funcWithName,s,&func))
}
/* case e) function */
if (!applyToSet(functions,funcWithName,s,&func))
/*-----------------------------------------------------------------*/
int cmdUp(char *s, context *cctxt)
{
/*-----------------------------------------------------------------*/
int cmdUp(char *s, context *cctxt)
{
/*-----------------------------------------------------------------*/
int cmdDown(char *s, context *cctxt)
{
/*-----------------------------------------------------------------*/
int cmdDown(char *s, context *cctxt)
{
int cmdFinish (char *s, context *ctxt)
{
if (STACK_EMPTY(callStack)) {
int cmdFinish (char *s, context *ctxt)
{
if (STACK_EMPTY(callStack)) {
- setBreakPoint (ctxt->func->sym->eaddr, CODE, STEP,
- stepBpCB, ctxt->func->mod->c_name,
- ctxt->func->exitline);
+ setBreakPoint (ctxt->func->sym->eaddr, CODE, STEP,
+ stepBpCB, ctxt->func->mod->c_name,
+ ctxt->func->exitline);
- setBreakPoint (ctxt->func->sym->eaddr, CODE, STEP,
- stepBpCB, ctxt->func->mod->asm_name,
- ctxt->func->aexitline);
+ setBreakPoint (ctxt->func->sym->eaddr, CODE, STEP,
+ stepBpCB, ctxt->func->mod->asm_name,
+ ctxt->func->aexitline);