static void gnat_parse_file (void) { int seh[2]; /* Call the target specific initializations. */ __gnat_initialize (NULL); /* ??? Call the SEH initialization routine. This is to workaround a bootstrap path problem. The call below should be removed at some point and the SEH pointer passed to __gnat_initialize() above. */ __gnat_install_SEH_handler((void *)seh); /* Call the front-end elaboration procedures. */ adainit (); /* Call the front end. */ _ada_gnat1drv (); }
void __gnat_initialize (void *eh) { /* Initialize floating-point coprocessor. This call is needed because the MS libraries default to 64-bit precision instead of 80-bit precision, and we require the full precision for proper operation, given that we have set Max_Digits etc with this in mind */ __gnat_init_float (); /* Note that we do not activate this for the compiler itself to avoid a bootstrap path problem. Older version of gnatbind will generate a call to __gnat_initialize() without argument. Therefore we cannot use eh in this case. It will be possible to remove the following #ifdef at some point. */ #ifdef IN_RTS /* Install the Structured Exception handler. */ if (eh) __gnat_install_SEH_handler (eh); #endif }