GCC_DRIVER_HOST_INITIALIZATION happens before diagnostic_initialize,
this can cause crashes if it call diagnostics such as warning, or
fatal_error are used in the macro. One example would be in
darwin-driver.c where darwin_find_version_from_kernel can call
warning(). Another example is in xm-djgpp.h where it calls fatal (this
appears to have bit-rotted with the fatal -> fatal_error switch)
Would moving the GCC_DRIVER_HOST_INITIALIZATION after
diagnostic_initialize be OK?
Index: gcc.c
===================================================================
--- gcc.c (revision 189681)
+++ gcc.c (working copy)
@@ -6189,17 +6189,18 @@
CL_DRIVER,
&decoded_options, &decoded_options_count);
-#ifdef GCC_DRIVER_HOST_INITIALIZATION
- /* Perform host dependent initialization when needed. */
- GCC_DRIVER_HOST_INITIALIZATION;
-#endif
-
/* Unlock the stdio streams. */
unlock_std_streams ();
gcc_init_libintl ();
diagnostic_initialize (global_dc, 0);
+
+#ifdef GCC_DRIVER_HOST_INITIALIZATION
+ /* Perform host dependent initialization when needed. */
+ GCC_DRIVER_HOST_INITIALIZATION;
+#endif
+
if (atexit (delete_temp_files) != 0)
fatal_error ("atexit failed");
Regards,
Ryan Mansfield