void CVBlkBeg( dbg_block *blk, offset lc ) /*******************************************/ { block_patch *bpatch; dbg_patch *dpatch; cv_out out[1]; offset start; cg_sym_handle sym; cs_block *ptr; byte *nm; bpatch = CGAlloc( sizeof( block_patch ) ); blk->patches = bpatch; NewBuff( out, CVSyms ); ptr = StartSym( out, SG_BLOCK ); ptr->pParent = 0; ptr->pEnd = 0; ptr->length = 0; ptr->offset = 0; ptr->segment = 0; nm = out->ptr; /* mark name */ CVPutNullStr( out ); EndSym( out ); dpatch = &blk->patches->patch; BuffPatchSet( CVSyms, dpatch ); BuffWrite( out, &ptr->offset ); sym = AskForLblSym( CurrProc->label ); start = lc - CurrProc->targ.debug->blk->start; SymReloc( CVSyms, sym, start ); BuffSkip( out, nm ); /* skip addr */ buffEnd( out ); DumpLocals( blk->locals ); }
static void DumpFunction(TProtoFunc* tf, FILE* D) { DumpWord(tf->lineDefined,D); DumpTString(tf->fileName,D); DumpCode(tf,D); DumpConstants(tf,D); DumpLocals(tf,D); DumpSubFunctions(tf,D); }
void CVProEnd( dbg_rtn *rtn, offset lc ) /*****************************************/ { cg_sym_handle sym; dbg_type tipe; fe_attr attr; const char *name; cs_gproc *ptr; sg_index kind; cv_out out[1]; /* unused parameters */ (void)lc; sym = AskForLblSym( CurrProc->label ); attr = FEAttr( sym ); if( attr & FE_GLOBAL ){ kind = SG_GPROC; }else{ kind = SG_LPROC; } NewBuff( out, CVSyms ); ptr = StartSym( out, kind ); ptr->pParent = 0; ptr->pEnd = 0; ptr->pNext = 0; ptr->proc_length = 0; ptr->debug_start = rtn->pro_size; ptr->debug_end = 0; ptr->offset = 0; ptr->segment = 0; tipe = FEDbgType( sym ); ptr->proctype = tipe; ptr->flags.s = 0; #if _TARGET & ( _TARG_IAPX86 | _TARG_80386 ) if( *(call_class *)FindAuxInfoSym( sym, CALL_CLASS ) & FAR_CALL ) { ptr->flags.f.far_ret = true; } #endif if( rtn->obj_type != DBG_NIL_TYPE ) { name = FEAuxInfo( sym, CLASS_APPENDED_NAME ); } else { name = FEName( sym ); } CVPutStr( out, name ); EndSym( out ); BuffPatchSet( CVSyms, RtnPatch ); BuffWrite( out, &ptr->offset ); SymReloc( CVSyms, sym, 0 ); BuffSkip( out, &ptr->proctype ); buffEnd( out ); DBLocFini( rtn->reeturn ); DBLocFini( rtn->obj_loc ); if( rtn->parms != NULL ){ DumpParms( rtn->parms, &rtn->rtn_blk->locals ); } DumpLocals( rtn->rtn_blk->locals ); }
static void DumpFunction(const Proto* tf, void* D) { DumpString(tf->source,D); DumpInt(tf->lineDefined,D); DumpInt(tf->numparams,D); DumpByte(tf->is_vararg,D); DumpInt(tf->maxstacksize,D); DumpLocals(tf,D); DumpLines(tf,D); DumpConstants(tf,D); DumpCode(tf,D); }
static void DumpFunction(const Proto* f, const TString* p, DumpState* D) { DumpString((f->source==p) ? NULL : f->source,D); DumpInt(f->lineDefined,D); DumpByte(f->nups,D); DumpByte(f->numparams,D); DumpByte(f->is_vararg,D); DumpByte(f->maxstacksize,D); DumpLines(f,D); DumpLocals(f,D); DumpUpvalues(f,D); DumpConstants(f,D); DumpCode(f,D); }
void DlgCmd( void ) { char buff[256]; printf( "DBG>" ); fflush( stdout ); // not really necessary gets( buff ); if( buff[0] != NULLCHAR && buff[1] == NULLCHAR ) { switch( tolower( buff[0] ) ) { case 'u': WndAsmInspect( GetCodeDot() ); break; case 's': DumpSource(); break; case 'l': DumpLocals(); break; case 'i': RunRequest( REQ_TRACE_INTO ); break; case 'o': RunRequest( REQ_TRACE_OVER ); break; case 'g': RunRequest( REQ_GO ); break; case 'x': if( _IsOn( SW_REMOTE_LINK ) ) { printf( "Can't break remote task!\n" ); } else { HMODULE hmod; PFN proc = NULL; DosQueryModuleHandle( TrapParms, &hmod ); DosQueryProcAddr( hmod, 5, 0, &proc ); // if( proc != NULL ) // proc(); } // break the task break; default: printf( "Error - unrecognized command\n" ); } } else { DoCmd( DupStr( buff ) ); DoInput(); } }
void DlgCmd( void ) { char buff[256]; printf( "DBG>" ); fflush( stdout ); gets( buff ); if( buff[0] != NULLCHAR && buff[1] == NULLCHAR ) { switch( tolower( buff[0] ) ) { case 'u': WndAsmInspect( GetCodeDot() ); break; case 's': DumpSource(); break; case 'l': DumpLocals(); break; case 'i': RunRequest( REQ_TRACE_INTO ); break; case 'o': RunRequest( REQ_TRACE_OVER ); break; case 'g': RunRequest( REQ_GO ); break; case 'x': if( _IsOn( SW_REMOTE_LINK ) ) { printf( "Can't break remote task!\n" ); } else { HANDLE hmod; FARPROC proc; hmod = GetModuleHandle( TrapParms ); proc = GetProcAddress( hmod, (LPSTR)5 ); if( proc != NULL ) proc(); CloseHandle( hmod ); } // break the task break; default: printf( "Error - unrecognized command\n" ); } } else { DoCmd( DupStr( buff ) ); DoInput(); } }
static void DumpFunction(const Proto* tf, FILE* D) { DumpString(tf->source,D); DumpInt(tf->lineDefined,D); DumpInt(tf->numparams,D); DumpByte(tf->is_vararg,D); DumpInt(tf->maxstacksize,D); DumpLocals(tf,D); DumpLines(tf,D); DumpConstants(tf,D); DumpCode(tf,D); if (ferror(D)) { perror("luac: write error"); exit(1); } }