Exemple #1
0
PredictDebug(PLAYERp ppp)
    {    
    static FILE *fout = NULL;
    static char pred_sym_name[80];
    
    if (SymCountCode == 0)
        LoadSymTable("swcode.sym", &SymTableCode, &SymCountCode);
    
    if (SymCountCode <= 0)
        return;
    
    if (!fout)
        {
        if ((fout = fopen("dbgpred.txt", "wb")) == NULL)
            return;
        }
        
    if (ppp->DoPlayerAction != pred_last_func)
        {
        extern ULONG MoveThingsCount;
        SYM_TABLEp st_ptr;
        ULONG unrelocated_offset;
        ULONG offset_from_symbol;
        
        unrelocated_offset = SymCodePtrToOffset((void*)ppp->DoPlayerAction);
        st_ptr = SearchSymTableByOffset(SymTableCode, SymCountCode, unrelocated_offset, &offset_from_symbol);
        ASSERT(st_ptr);
        strcpy(pred_sym_name, st_ptr->Name);
    
        fprintf(fout, "%s, %d\n", pred_sym_name, MoveThingsCount);    
        }
    }
Exemple #2
0
int CoffLoader::ParseCoff(FILE *fp)
{
  if ( !LoadCoffHModule(fp) )
  {
    printf("Failed to load/find COFF hModule header\n");
    return 0;
  }
  if ( !LoadSymTable(fp) ||
       !LoadStringTable(fp) ||
       !LoadSections(fp) )
    return 0;

  PerformFixups();

#ifdef DUMPING_DATA
  PrintSymbolTable();
  PrintStringTable();
#endif
  return 1;
}