Guardian Procedure Calls Reference Manual
The default FormatSelect value set by the HIST_INIT_ procedure is HF_trace unless the
HO_OneLine or HO_Init_address bit is set in the options parameter of the HIST_INIT_ procedure
call; in that case, the default value is HF_base + HF_Parent.
HF_withContext causes the full context to be displayed whenever a new context is available, such
as at the invocation of a signal handler. HF_full causes all available state information to be displayed
for native frames.
Typically, the name, offset, and code space are displayed on one line, but that can spill onto
multiple lines when necessary. Individual procedure names, subprocedure names, and SRL names
longer than 65 characters are truncated. Truncated names have a greater-than sign (>) shown as
the last character.
Any output generated by the HF_LocLineTNS or HF_LocLineRISC option appears on a separate
line, unless the HO_OneLine bit is set in the options parameter of the HIST_INIT_ call. Register
displays occupy the last three to ten lines, depending upon the registers available.
Protected Context Considerations
When a run-time event that requires immediate attention, such as a hardware trap, causes a signal
to be generated, the uContext structure presented to the signal handler contains either one or two
contexts. The primary context is a complete record of the procedure context at the site of the event.
If that site was in protected code, a secondary context contains part of the state at the site of
transition into protected code.
A context is protected if the process was privileged when the signal was generated but the signal
handler was installed from nonprivileged code.
For example, if a user program invokes a CALLABLE procedure (switching into privileged mode)
and an attempt to access an invalid address occurs within the privileged code, the primary context
is that of the invalid operation, and the secondary context is that of the user procedure at the site
of the call to the CALLABLE procedure.
The secondary context is limited to those registers that, by convention, are saved and restored by
all subsequent callers. Registers used as temporary values (including procedure parameters and
return values) are not available; see the earlier discussion of the HF_Registers literal.
If the signal handler in the previous example performed a stack trace, calling the HIST_INIT_
procedure and specifying the options HO_Init_Here, HO_ShowProtected, and HO_NoSuppress,
the trace would look something like this:
ExplanationReturned Text
Indicates the current procedure (that is, the signal handler) and the offset.HANDLER + 0x28 (UCr)
Indicates the procedure that called the handler and the offset of the call. The
system procedure that called the handler is considered a transition frame and
is suppressed by default.
PK_SIG_HANDLER_JACKET_ + 0x54
(SLr)
Denotes a break in the calling sequence. In this case, PRIV_PROC_ did not
call PK_SIG_HANDLER_JACKET_; the operating system intervened in response
to a trap.
---
Indicates the procedure in which and the offset where the trap occurred. This
context is the primary context in the uContext generated at the time of the trap.
PRIV_PROC_ + 0x5C (SCr)
It is found automatically when tracing through the special jacket procedure.
This context is suppressed unless the HO_ShowProtected option of HIST_INIT_
is in effect.
Denotes one or more stack frames that are not shown; although a complete
chain of procedure calls did take place, they are not all displayed. In this case,
...
USER_PROC did not call PRIV_PROC_ directly; the activation record of the
original CALLABLE procedure (and perhaps others in the chain of calls leading
to the failure) was discarded as the signal was delivered to the user's handler.
Indicates the caller of the CALLABLE procedure most recently invoked from
nonprivileged code. This is the secondary context in the uContext structure. It
USER_PROC + 0x1C0 (UCr)
HIST_FORMAT_ Procedure 701