NewRMTW.mesa
Copyright Ó 1992 by Xerox Corporation. All rights reserved.
Sturgis, April 20, 1990 2:43 pm PDT
Last tweaked by Mike Spreitzer on May 15, 1991 7:46 am PDT
Coolidge, July 29, 1990 1:44 pm PDT
Laurie Horton, March 31, 1992 11:21 am PST
Philip James, December 26, 1991 11:10 am PST
DIRECTORY
BasicTime USING[GMT],
CirioNubAccess USING[Handle, RemoteAddress],
CirioTypes USING[BitAddr, CompilerContext, ModuleScope, Node],
IO USING[STREAM],
LoadStateAccess USING[LoadedModuleInfo, LoadStateHandle],
MobAccess USING[MobCookie],
ObjectFiles USING[FileSegmentPC],
MobObjectFiles USING[JointMobParsedInfo],
PFSNames USING [PATH],
Rope USING[ROPE],
SystemInterface USING[CirioFile, FileSet];
NewRMTW: CEDAR DEFINITIONS =
BEGIN OPEN MA: MobAccess, MOF: MobObjectFiles, LSA: LoadStateAccess;
PATH: TYPE ~ PFSNames.PATH;
CirioFile: TYPE = SystemInterface.CirioFile;
CC: TYPE = CirioTypes.CompilerContext;
Modules
this stuff is implemented in NewRMTWImplC
CedarModuleSet: TYPE = REF CedarModuleSetBody;
CedarModuleSetBody: TYPE;
CreateCedarModuleSet: PROC[fileSet: SystemInterface.FileSet, remoteServer: Rope.ROPE ¬ NIL] RETURNS[CedarModuleSet];
ResetSearchPaths: PROC[modules: CedarModuleSet, searchPaths: LIST OF PATH, flushTime: BasicTime.GMT];
FlushUnknownFileCache: PROC[modules: CedarModuleSet, flushTime: BasicTime.GMT];
LoadedModuleInfo: TYPE = RECORD[
stem: PATH,
jmpi: MOF.JointMobParsedInfo,
mob: MA.MobCookie,
loadedModule: REF LSA.LoadedModuleInfo];
This procedure attempts to find the mob file and construct the mob and jmpi if they have not already been found. If there have been changes in the search paths, subsequent calls may report information that previous calls failed to find.
GetLoadedModuleInfo: PROC[modules: CedarModuleSet, loadedModule: REF LoadStateAccess.LoadedModuleInfo] RETURNS[REF LoadedModuleInfo];
CedarSourcePosition: TYPE = RECORD[
relativePC: CARD,
mesa: CirioFile,
mesaPosition: CARD,
cFile: CirioFile,
cLineNum: CARD,
remarks: Rope.ROPE];
GetCedarSourcePosition: PROC[modules: CedarModuleSet, loadedModule: REF LoadStateAccess.LoadedModuleInfo, absPC: CARD] RETURNS[REF CedarSourcePosition];
GetRopesForSourcePosInfo: PROC[info: REF CedarSourcePosition] RETURNS[LIST OF Rope.ROPE];
CedarBreakAddress: TYPE = RECORD[
mesa: CirioFile,
mesaPosition: CARD,
cFile: CirioFile,
cLineNum: CARD,
moduleRelativePC: ObjectFiles.FileSegmentPC,
correspondingCLineNum: CARD,
correspondingMesaPosition: CARD,
loadedModule: REF LoadStateAccess.LoadedModuleInfo,
absPC: CARD];
NIL means failure to compute
GetAbsAddressForBreak: PROC[modules: CedarModuleSet, mesa: CirioFile, loadState: LoadStateAccess.LoadStateHandle, sourcePos: CARD] RETURNS[REF CedarBreakAddress];
GetRopesForCedarBreakAddress: PROC[addr: REF CedarBreakAddress] RETURNS[LIST OF Rope.ROPE];
Probably belongs elsewhere:
BaToCnra: PROC [nub: CirioNubAccess.Handle, ba: CirioTypes.BitAddr] RETURNS [CirioNubAccess.RemoteAddress];
frames
this stuff is implemented in NewRMTWImplA
RemoteMimosaTargetWorld: TYPE = REF RemoteMimosaTargetWorldBody;
RemoteMimosaTargetWorldBody: TYPE;
CreateRemoteMimosaTargetWorld: PROC[serverName: Rope.ROPE, handle: CirioNubAccess.Handle, cc: CC, cedarModules: CedarModuleSet, lsh: LSA.LoadStateHandle, reports: IO.STREAM, setCTC: BOOL] RETURNS[RemoteMimosaTargetWorld];
reports is only used during the creation. setCTC indicates that cc should be told of the standard types.
GetRMTWInfo: PROC [RemoteMimosaTargetWorld] RETURNS [serverName: Rope.ROPE, handle: CirioNubAccess.Handle, cc: CC, cedarModules: CedarModuleSet, lsh: LSA.LoadStateHandle];
GetModuleScope: PROC [RemoteMimosaTargetWorld] RETURNS [CirioTypes.ModuleScope];
FlushUnknownSymbolCache: PROC[rmtw: RemoteMimosaTargetWorld, flushTime: BasicTime.GMT, reports: IO.STREAM];
RawFrameInfo: TYPE = RECORD[
absPC: CARD,
framePointer: CARD,
stackPointer: CARD];
FrameNodeInfo: TYPE = RECORD[
node: CirioTypes.Node,
following permits the debugger to display diagnostic info
getDiagnosticInfo: PROC[frame: REF FrameNodeInfo] RETURNS[LIST OF Rope.ROPE],
data: REF ANY
];
GetNodeForCedarFrame: PROC[rmtw: RemoteMimosaTargetWorld, loadedModuleInfo: REF LoadedModuleInfo, rawFrameInfo: REF RawFrameInfo] RETURNS[REF FrameNodeInfo];
FlushUnknownTypeCodes: PROC [rmtw: RemoteMimosaTargetWorld];
ShowReportByLevel: PROC [s: IO.STREAM, r: Rope.ROPE, level: ATOM];
END..