static void PrepSymbol( void *_sym, void *info ) /**********************************************/ { symbol *sym = _sym; char *save; symbol *mainsym; if( sym->info & SYM_IS_FREE ) { *((unsigned_32 *)sym) = CARVE_INVALID_INDEX; return; } sym->hash = CarveGetIndex( CarveSymbol, sym->hash ); sym->link = CarveGetIndex( CarveSymbol, sym->link ); sym->publink = CarveGetIndex( CarveSymbol, sym->publink ); if( sym->info & SYM_IS_ALTDEF ) { mainsym = sym->e.mainsym; if( !(mainsym->info & SYM_NAME_XLATED) ) { mainsym->name = GetString( info, mainsym->name ); mainsym->info |= SYM_NAME_XLATED; } sym->name = mainsym->name; } else if( !(sym->info & SYM_NAME_XLATED) ) { sym->name = GetString( info, sym->name ); sym->info |= SYM_NAME_XLATED; } sym->mod = CarveGetIndex( CarveModEntry, sym->mod ); if( IS_SYM_ALIAS( sym ) ) { save = sym->p.alias; sym->p.alias = GetString( info, sym->p.alias ); if( sym->info & SYM_FREE_ALIAS ) { _LnkFree( save ); } } else if( IS_SYM_IMPORTED(sym) ) { if( FmtData.type & (MK_OS2 | MK_PE) ) { sym->p.import = CarveGetIndex( CarveDLLInfo, sym->p.import ); } } else if( !(sym->info & SYM_IS_ALTDEF) || IS_SYM_COMDAT(sym) ) { sym->p.seg = CarveGetIndex( CarveSegData, sym->p.seg ); sym->u.altdefs = CarveGetIndex( CarveSymbol, sym->u.altdefs ); } if( sym->info & SYM_EXPORTED ) { if( FmtData.type & (MK_OS2 | MK_PE | MK_WIN_VXD) ) { sym->e.export = CarveGetIndex( CarveExportInfo, sym->e.export ); } } else if( sym->e.def != NULL ) {
void ProcLinsym( void ) /****************************/ { list_of_names * symname; symbol * sym; bool is32bit; unsigned sym_len; ObjBuff++; /* skip flags */ symname = FindName( GetIdx() ); sym_len = strlen( symname->name ); sym = SymOp( ST_FIND | ST_STATIC, symname->name, sym_len ); if( sym == NULL ) sym = SymOp( ST_FIND, symname->name, sym_len ); if( sym == NULL ) { BadObject(); return; } if( !IS_SYM_COMDAT(sym) ) return; is32bit = (ObjFormat & FMT_32BIT_REC) != 0; if( sym->mod == CurrMod && !(sym->info & SYM_DEAD) ) { DBIAddLines( sym->p.seg, ObjBuff, EOObjRec - ObjBuff, is32bit ); } }