static void CleanSubSystems( void ) /*********************************/ { if( MapFile != NIL_HANDLE ) { QClose( MapFile, MapFName ); MapFile = NIL_HANDLE; } FreeOutFiles(); _LnkFree( MapFName ); BurnSystemList(); FreeList( LibPath ); CloseSpillFile(); CleanTraces(); FreePaths(); FreeUndefs(); FreeLocalImports(); CleanLoadFile(); CleanLinkStruct(); FreeFormatStuff(); FreeObjInfo(); FreeVirtMem(); CleanToc(); CleanSym(); CleanPermData(); }
unsigned long ObjPass1( void ) /****************************/ /* Pass 1 of 8086 linker. */ { unsigned long loc; char *savename; DEBUG(( DBG_BASE, "1 : file = %s, module = %s", CurrMod->f.source->file->name, CurrMod->name )); CurrMod->modinfo |= MOD_DONE_PASS_1; SymModStart(); DBIInitModule( CurrMod ); RelocStartMod(); P1Start(); loc = CallPass1[ GET_FMT_IDX( ObjFormat ) ](); CollapseLazyExtdefs(); SymModEnd(); if( !(CurrMod->modinfo & MOD_GOT_NAME) ) { savename = CurrMod->name; CurrMod->name = AddStringStringTable( &PermStrings, savename ); _LnkFree( savename ); CurrMod->modinfo |= MOD_GOT_NAME; } DBIP1ModuleScanned(); ReleaseNames(); PermEndMod( CurrMod ); FreeObjInfo(); ObjFormat = 0; //clear flags for processing obj file return( loc ); }