MODULE FoxGenericObjectFile; IMPORT StringPool, Streams, Commands, Basic := FoxBasic, Formats := FoxFormats, Sections := FoxSections, IntermediateCode := FoxIntermediateCode, SyntaxTree := FoxSyntaxTree, BinaryCode := FoxBinaryCode, Fingerprinter := FoxFingerprinter, Files, Options, ObjectFile, SymbolFileFormat := FoxTextualSymbolFile, Strings, KernelLog, D := Debugging; CONST Version = 6; Trace = FALSE; TraceAliases = FALSE; WarnDuplicateFingerprints = FALSE; PatchFixups = TRUE; AliasOnlyExported = TRUE; DetailedStatistics = FALSE; TYPE SectionStat = POINTER TO RECORD name: ARRAY 64 OF CHAR; entries: LONGINT; size: LONGINT; END; ObjectFileFormat* = OBJECT (Formats.ObjectFileFormat) VAR binary: BOOLEAN; mergeSections: BOOLEAN; PROCEDURE ^ & InitObjectFileFormat; PROCEDURE ^ Export*(module: Formats.GeneratedModule; symbolFileFormat: Formats.SymbolFileFormat): BOOLEAN; PROCEDURE ^ DefineOptions*(options: Options.Options); PROCEDURE ^ GetOptions*(options: Options.Options); PROCEDURE ^ DefaultSymbolFileFormat*(): Formats.SymbolFileFormat; END ObjectFileFormat; VAR statModules, statModulesSize: LONGINT; statHeaders, statHeadersSize: LONGINT; statPool: Basic.HashTableInt; PROCEDURE ^ GetFingerprint(section: Sections.Section; fingerprinter: Fingerprinter.Fingerprinter): ObjectFile.Fingerprint; PROCEDURE ^ CheckAlias(sections: Sections.SectionList; VAR identifier: ObjectFile.Identifier; VAR offset: LONGINT); PROCEDURE ^ CopyFixups(sections: Sections.SectionList; from, to: BinaryCode.Section; offset: LONGINT); PROCEDURE ^ UpdateAliases(section: BinaryCode.Section; fingerprinter: Fingerprinter.Fingerprinter); PROCEDURE ^ Get*(): Formats.ObjectFileFormat; PROCEDURE ^ ReadHeader(reader: Streams.Reader; VAR binary: BOOLEAN; VAR poolMap: ObjectFile.PoolMap; VAR offers, requires: ObjectFile.NameList): WORD; PROCEDURE ^ WriteHeader(writer: Streams.Writer; binary: BOOLEAN; sections: Sections.SectionList; VAR poolMap: ObjectFile.PoolMap; offers, requires: ObjectFile.NameList; fingerprinter: Fingerprinter.Fingerprinter); PROCEDURE ^ GCD(a, b: LONGINT): LONGINT; PROCEDURE ^ SCM(a, b: LONGINT): LONGINT; PROCEDURE ^ CommonAlignment(a, b: LONGINT): LONGINT; PROCEDURE ^ Show*(context: Commands.Context); PROCEDURE ^ MakeLibrary*(context: Commands.Context); PROCEDURE ^ Statistics*; PROCEDURE ^ ResetStatistics*; BEGIN END FoxGenericObjectFile.