static void WipeSym( symbol *sym ) /********************************/ { if( IS_SYM_IMPORTED(sym) && !(FmtData.type & MK_ELF) ) { if( FmtData.type & MK_NOVELL ) { if( sym->p.import != DUMMY_IMPORT_PTR ) { _LnkFree( sym->p.import ); } } else { FreeImport( sym->p.import ); } sym->p.import = NULL; } else if( IS_SYM_ALIAS(sym) ) { if( sym->info & SYM_FREE_ALIAS ) { _LnkFree( sym->p.alias ); } sym->u.aliaslen = 0; // make sure this is nulled again } }
void FreeObjData (ObjData* O) /* Free an ObjData object. NOTE: This function works only for unused object * data, that is, ObjData objects that aren't used because they aren't * referenced. */ { unsigned I; for (I = 0; I < CollCount (&O->Files); ++I) { CollDeleteItem (&((FileInfo*) CollAtUnchecked (&O->Files, I))->Modules, O); } DoneCollection (&O->Files); DoneCollection (&O->Sections); for (I = 0; I < CollCount (&O->Exports); ++I) { FreeExport (CollAtUnchecked (&O->Exports, I)); } DoneCollection (&O->Exports); for (I = 0; I < CollCount (&O->Imports); ++I) { FreeImport (CollAtUnchecked (&O->Imports, I)); } DoneCollection (&O->Imports); DoneCollection (&O->DbgSyms); DoneCollection (&O->HLLDbgSyms); for (I = 0; I < CollCount (&O->LineInfos); ++I) { FreeLineInfo (CollAtUnchecked (&O->LineInfos, I)); } DoneCollection (&O->LineInfos); xfree (O->Strings); DoneCollection (&O->Assertions); DoneCollection (&O->Scopes); for (I = 0; I < CollCount (&O->Spans); ++I) { FreeSpan (CollAtUnchecked (&O->Spans, I)); } DoneCollection (&O->Spans); xfree (O); }
static void DoSavedImport( symbol *sym ) /**************************************/ { dll_sym_info *dll; length_name modname; length_name extname; if( FmtData.type & (MK_OS2 | MK_PE) ) { dll = sym->p.import; sym->p.import = NULL; sym->info &= ~SYM_DEFINED; modname.name = dll->m.modname; modname.len = strlen( modname.name ); if( dll->isordinal ) { MSImportKeyword( sym, &modname, NULL, dll->u.ordinal ); } else { extname.name = dll->u.entname; extname.len = strlen( extname.name ); MSImportKeyword( sym, &modname, &extname, NOT_IMP_BY_ORDINAL ); } FreeImport( dll ); } }