May4Exp.mesa
Sturgis, September 18, 1989 9:37:19 am PDT
Last changed by Theimer on October 14, 1989 9:08:55 pm PDT
DIRECTORY
CirioNubAccess USING[FileEntry, Handle, PCInfo],
CirioTypes USING[CompilerContext, Node],
IO USING[STREAM],
Rope USING[ROPE],
SymbolFinding USING[FoundSymbols, SymbolInfo],
SystemInterface USING[CirioFile];
May4Exp: CEDAR DEFINITIONS =
BEGIN
ProcedureFrameInfo: TYPE = REF ProcedureFrameInfoBody;
ProcedureFrameInfoBody: TYPE = RECORD[
folowing concerns the containing dotO of the procedure invoking the frame
dotOInfo: CirioNubAccess.FileEntry,
following concern the frame itself
absPC: CARD,
relativePC: CARD, -- absPC-dotOInfo.textReloc
framePointer: CARD,
stackPointer: CARD,
pcInfo: CirioNubAccess.PCInfo];
the following are implemented in RemoteMimosaTargetWorldImpl
RemoteMimosaTargetWorld: TYPE = REF RemoteMimosaTargetWorldBody;
RemoteMimosaTargetWorldBody: TYPE;
CreateRemoteMimosaTargetWorld: PROC[serverName: Rope.ROPE, handle: CirioNubAccess.Handle, cc: CirioTypes.CompilerContext, si: SymbolFinding.SymbolInfo] RETURNS[RemoteMimosaTargetWorld];
CreateAndShowStack: PROC[hottestFrame: ProcedureFrameInfo, rmtw: RemoteMimosaTargetWorld, out: IO.STREAM];
the cc parameter should include the target world supplied by a previous call to CreateRemoteMimosaTargetWorld
The following break point routines are currently implemented in NewRMTWImplA. They should probably migrate to CirioPCRTW so as to be language independent.
SetBreakAtAbsAddr: PROC[rmtw: RemoteMimosaTargetWorld, cardAddress: CARD32];
ListBreaks: PROC[rmtw: RemoteMimosaTargetWorld];
calls ShowReport for each break
ClearBreakAtAbsAddr: PROC[rmtw: RemoteMimosaTargetWorld, cardAddress: CARD32];
ClearBreakAtIndex: PROC[rmtw: RemoteMimosaTargetWorld, index: CARD];
ClearAllBreaks: PROC[rmtw: RemoteMimosaTargetWorld];
The above procedures may, from time to time, generate reports for the user. These reports are delivered by the following signal. It is expected that the client should, after displaying the text, also produce a CR.
ShowReport: SIGNAL[msgText: Rope.ROPE];
following are added Aug 9, 1989 and September 18, 1989
FrameNodeInfo: TYPE = RECORD[
node: CirioTypes.Node,
kind: FrameKind,
following permits the debugger to display diagnostic info
getDiagnosticInfo: PROC[frame: REF FrameNodeInfo] RETURNS[LIST OF Rope.ROPE],
data: REF ANY
];
FrameKind: TYPE = ATOM; -- possible values include $Cedar and $C.
GetNodeForFrame: PROC[
serverName: Rope.ROPE,
symbols: SymbolFinding.FoundSymbols,
frameInfo: ProcedureFrameInfo,
rmtw: RemoteMimosaTargetWorld] RETURNS[REF FrameNodeInfo];
GetBannerForFrame: PROC[
serverName: Rope.ROPE,
symbols: SymbolFinding.FoundSymbols,
frameInfo: ProcedureFrameInfo,
rmtw: RemoteMimosaTargetWorld] RETURNS[LIST OF Rope.ROPE];
following added September 30, 1989 2:29:43 pm PDT
Should go away and be replaced by module style stuff
CFileInfo: TYPE = REF CFileInfoBody;
CFileInfoBody: TYPE;
CreateCFileInfo: PROC[cFile: SystemInterface.CirioFile] RETURNS[CFileInfo];
LookupMesaSourcePos: PROC[info: CFileInfo, pos: CARD] RETURNS[cLineNum: CARD];
LookupCLineNum: PROC[info: CFileInfo, cLineNum: CARD] RETURNS[pos: CARD];
GetCFileVersionStamp: PROC[info: CFileInfo] RETURNS[Rope.ROPE];
END..