VMS Help  —  CRTL  VAXC$ESTABLISH  Description
    VAXC$ESTABLISH must be used in place of LIB$ESTABLISH when
    programs use the C RTL routines setjmp or longjmp. See
    setjmp and longjmp, or sigsetjmp and siglongjmp.

    You can only invoke the VAXC$ESTABLISH function from an VSI C
    for OpenVMS function, because it relies on the allocation of data
    space on the run-time stack by the VSI C compiler. Calling
    the OpenVMS system library routine LIB$ESTABLISH directly from an
    VSI C function results in undefined behavior from the setjmp
    and longjmp functions.

    To cause an OpenVMS exception to generate a UNIX style signal,
    user exception handlers must return SS$_RESIGNAL upon receiving
    any exception that they do not want to handle. Returning SS$_
    NORMAL prevents the generation of a UNIX style signal. UNIX
    signals are generated as if by an exception handler in the
    stack frame of the main C program. Not all OpenVMS exceptions
    correspond to UNIX signals. See the "Error and Signal Handling"
    chapter of the VSI C RTL Reference Manual. for more information on
    the interaction of OpenVMS exceptions and UNIX style signals.

    Calling VAXC$ESTABLISH with an argument of NULL cancels an
    existing handler in that routine.

                                  NOTES

       On OpenVMS Alpha systems, VAXC$ESTABLISH is implemented as a
       compiler built-in function, not as an C RTL function.
       (Alpha only)
Close Help