Copyright Digital Equipment Corp. All rights reserved.

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)