<<>> <> <> <> <> <> <> DIRECTORY CStrings; IncrementalLoad: CEDAR DEFINITIONS = BEGIN CString: TYPE ~ CStrings.CString; Bool: TYPE ~ INT32; False: Bool ~ 0; --True is #0 Long: TYPE ~ CARD32; -- transliteration of `long' ErrorRep: TYPE ~ MACHINE DEPENDENT RECORD [fatal: Bool, code: INT32, msg: CString]; Error: TYPE ~ POINTER TO ErrorRep; -- NIL <=> success LockIncrementalLoadState: PROC [wait: BOOL] RETURNS [Error]; <> UnlockIncrementalLoadState: PROC RETURNS [Error]; FileEntry: TYPE ~ POINTER TO FileEntryRep; FileEntryRep: TYPE ~ MACHINE DEPENDENT RECORD [ seqNum: CARD32, commitPoint: Bool, fName: CString, fOffset, fMagic: CARD32, fSize: INT32, fMTime: Long, vMagic, vLen: CARD32, vStamp: CString, rdrData, patch, text, data, bss, common: CountedString]; CountedString: TYPE ~ MACHINE DEPENDENT RECORD [s: CString, len: CARD32]; GetPrevFileEntry: PROC [fe: FileEntry] RETURNS [FileEntry]; <> <> <> AddVersionStamp: PROC [fe: FileEntry, vMagic, vLen: CARD32, vStamp: CString]; AddVersionStampUsingPC: PROC [pc: POINTER, vMagic, vLen: CARD32, vStamp: CString] RETURNS [FileEntry]; <> <> <> SymEntry: TYPE ~ POINTER TO SymEntryRep; SymEntryRep: TYPE ~ MACHINE DEPENDENT RECORD [ name: CString, type, value, size: CARD32, fe: FileEntry]; SETypeUNDF: CARD32 ~ 0h; SETypeEXT: CARD32 ~ 1h; SETypeABS: CARD32 ~ 2h; SETypeTEXT: CARD32 ~ 4h; SETypeDATA: CARD32 ~ 6h; SETypeBSS: CARD32 ~ 8h; SETypePATCH: CARD32 ~ 1ch; SETypeMODULE: CARD32 ~ 1eh; SETypeMask: CARD32 ~ 1eh; <> <> <> LookupSymEntry: PROC [sym: CString, externOnly: BOOL] RETURNS [SymEntry]; <> <> <> <> LookupSymEntryByValue: PROC [val: CARD32] RETURNS [SymEntry]; <> <> GetPrevSymEntry: PROC [se: SymEntry, externOnly: BOOL] RETURNS [SymEntry]; <> <> <> GetPrevSymEntryByValue: PROC [se: SymEntry] RETURNS [SymEntry]; GetNextSymEntryByValue: PROC [se: SymEntry] RETURNS [SymEntry]; <> <> ContinueAction: TYPE ~ CString; ActionContinue: ContinueAction ~ LOOPHOLE[0]; ActionDontBind: ContinueAction ~ LOOPHOLE[1]; SymIsInRecentLoad: PROC [se: SymEntry] RETURNS [Bool]; <> CProc: TYPE = RECORD [CARD32]; NilCProc: CProc ~ [0]; IncrementalLoadFile: PROC [ fName: CString, fOffset: Long ¬ 0, fMagic: CARD32 ¬ 0, refProc: CProc ¬ NilCProc, refClientData: POINTER ¬ NIL, defProc: CProc ¬ NilCProc, defClientData: POINTER ¬ NIL, commonProc: CProc ¬ NilCProc, commonClientData: POINTER ¬ NIL, patchSizeProc: CProc ¬ NilCProc, patchSizeClientData: POINTER ¬ NIL ] RETURNS [Error]; <> <> <> <> <> RefProc: TYPE ~ PROC [sym: CString, seOld: SymEntry] RETURNS [ContinueAction]; <> <> DefProc: TYPE ~ PROC [seNew, seOld: SymEntry] RETURNS [ContinueAction]; <> CommonProc: TYPE ~ PROC [sym: CString, size: CARD32, seOld: SymEntry] RETURNS [ContinueAction]; <> PathProc: TYPE ~ PROC [fe: FileEntry]; <> <> EnumerateUndefinedSymbols: PROC [func: CProc, clientData: POINTER]; <> <<(Note: all such symbols must have been introduced since last commit.)>> UndefinedSymbolProc: TYPE ~ PROC [se: SymEntry] RETURNS [BOOL]; <> CommitIncrementalLoad: PROC RETURNS [Error]; AbortIncrementalLoad: PROC [se: SymEntry ¬ NIL] RETURNS [Error]; InitializeIncrementalLoader: PROC [fName: CString] RETURNS [Error]; <> <> <> END.