<<>> <> <> <> <> <> <> DIRECTORY IO USING[STREAM], MobAccess USING[BTH, BTR, CTXH, CTXR, MobCookie, SEH, SER], ObjectFiles USING[BracketPair, Module, Parsed, VarLoc, VarLocBody], Rope USING[ROPE]; MobObjectFiles: CEDAR DEFINITIONS = BEGIN <> <<>> <<1) Given a pc, delivers the bth of the block most tightly enclosing the given pc. (Actually, the most tightly enclosing recognized block.) In addition, ensures that an association between bracket pairs and bths is constructed for the result bth and for all enclosing bths. (In so far as the association can be constructed from the dotO and mob.)>> <<>> <<2) Given a bth and the seh for a variable occurring in the context of the bth, returns the field offset information for that variable. (This works only for blocks for which the bracket-pair-bth association has been constructed.) [Not yet installed]>> <<>> <<>> BTH: TYPE = MobAccess.BTH; BTR: TYPE = MobAccess.BTR; CTXH: TYPE = MobAccess.CTXH; CTXR: TYPE = MobAccess.CTXR; SEH: TYPE = MobAccess.SEH; SER: TYPE = MobAccess.SER; <> <<>> JointMobParsedInfo: TYPE = REF JointMobParsedInfoBody; JointMobParsedInfoBody: TYPE; CreateJointMobParsedInfo: PROC[mob: MobAccess.MobCookie, whole: ObjectFiles.Parsed, module: ObjectFiles.Module] RETURNS[JointMobParsedInfo]; <> <> GetSPOffset: PROC[callableBTH: BTH, jmpi: JointMobParsedInfo] RETURNS[INT]; <> <<>> <> <> <<1) Finds the BTH for the tightest recognized block enclosing the given PC>> <<2) assures the BTH/BracketPair association for the found BTH and for the BTHs of all enclosing blocks (in so far as they are recognizable).>> <<>> <> <<>> <> FindNearBTHAncestorsForPC: PROC[pc: CARD, jmpi: JointMobParsedInfo] RETURNS[LIST OF BTH]; <<>> <> <<>> <> FindNearBTHAncestorsForBlock: PROC[block: BTH, jmpi: JointMobParsedInfo] RETURNS[LIST OF BTH]; GetRootBTH: PROC[jmdi: JointMobParsedInfo] RETURNS[BTH]; GetEntryPCofCallableBTH: PROC[callableBTH: BTH, jmpi: JointMobParsedInfo] RETURNS [CARD]; <<>> <<>> <> VarLoc: TYPE = ObjectFiles.VarLoc; VarLocBody: TYPE = ObjectFiles.VarLocBody; GetVarLoc: PROC[seh: SEH, bth: BTH, jmpi: JointMobParsedInfo] RETURNS[VarLoc]; <> <<>> GetLocalFrameExtensionVar: PROC[bth: BTH, jmpi: JointMobParsedInfo] RETURNS[SEH]; <> <<>> GetGlobalLinkVar: PROC[bth: BTH, jmpi: JointMobParsedInfo] RETURNS[SEH]; <> <<>> GetStaticLinkVar: PROC[bth: BTH, jmpi: JointMobParsedInfo] RETURNS[SEH]; <> GetStrandedStaticLinkLoc: PROC[bth: BTH, jmpi: JointMobParsedInfo] RETURNS[VarLoc]; <> <<>> GetCatchPhraseStrandedStaticLinkLoc: PROC[bth: BTH, jmpi: JointMobParsedInfo] RETURNS[VarLoc]; <> GetGlobalFrameVarLoc: PROC[jmpi: JointMobParsedInfo] RETURNS[VarLoc]; <> <<>> <<>> <> <> <<>> PerformJMDITest: PROC[what: Rope.ROPE, jmpi: JointMobParsedInfo, out: IO.STREAM]; <> <<>> GenInterestingPCs: PROC[module: ObjectFiles.Module, for: PROC[bp: ObjectFiles.BracketPair, pc: CARD]]; <<>> <<>> END..