2 PMU_DUMP_MEMORY Post Mortem Utility to dump a specified range of memory in both hexadecimal and ASCII. CALL PMU_DUMP_MEMORY( range.ra.ra [,action.rzem.r]) range array containing the beginning (first element) and ending (second element) addresses of the memory range to be dumped. Passed by reference. action address of a action routine to do the output I/O. This routine has the same calling sequence as LIB$PUT_OUTPUT. Passed by reference. Any errors (from the action routine) are signalled. This routine rounds the range addresses to permit full lines of 8 longwords (32 bytes) to be printed in the dump. The beginning address will be rounded down and the ending address up to the next 32-byte address boundaries. In some circumstances this may cause access violations so beware of this effect. If the action routine address is 0, PMU_DUMP_MEMORY calls LIB$PUT_OUTPUT to perform output. 3 Impure_Range The module PMU_IMPURE defines the global symbol PMU_AA_IMPURE_RANGE as the label of the range array which defines the standard impure data areas in a normal process (which uses High-Level Languages and the normal PSECT linking order). The start of the impure area is defined by the special PSECT $DAT0 (REL,LCL,NOSHR,NOEXE,WRT) which will be linked before PSECT's named $DATA or $LOCAL (local variables from HLL's like C and FORTRAN). The end of the impure area is also defined by a special PSECT, $COD0 (REL,LCL,SHR,EXE,NOWRT) which will be linked just before the $CODE PSECT which normally contains the executable code and pure data. Note that FORTRAN commons are usually linked into this "impure" range. The array pointed to by PMU_AA_IMPURE_RANGE (global array of addresses) is suitable for input to PMU_DUMP_MEMORY as the range argument. 2 PMU_DUMP_REGISTERS Post Mortem Utility to dump the general registers at the point of the signal. CALL PMU_DUMP_REGISTERS( siga.rl.ra, mecha.rl.ra, frame.rr.r [,array.rl.r] [,action.rzem.r]) siga signal array as passed to the condition handler. Passed by reference. mecha mechanism array as passed to the condition handler. Passed by reference. frame stack frame of the condition handler (usually the caller of this routine). Passed by reference. array (optional) array in which the contents of the registers R2-R11 from the signal (same as at start of the condition handler) are saved. If not given, these must be saved in the condition handler's stack frame. action address of a action routine to do the output I/O. This routine has the same calling sequence as LIB$PUT_OUTPUT. Passed by reference. Any errors (from the action routine) are signalled. If the action routine address is 0, PMU_DUMP_REGISTERS calls LIB$PUT_OUTPUT to perform output. The R0 and R1 register contents are gotten from the mechanism array. The AP and FP register contents are extracted from the condition handler's stack frame. The original stack pointer (SP) is calculated to have been just above the end of the signal array. The old PC is gotten from the signal array (PC of the signal). The contents of registers R2-R11 are provided in the optional array; if this argument is not provided the registers are expected to have been saved in the condition handler's stack frame by its entry mask.