+2015-03-11 Thomas Schwinge <thomas@codesourcery.com>
+
+ * caf/single.c (caf_runtime_error): Revert 2014-11-28 changes.
+ * runtime/minimal.c (STRERR_MAXSZ): Don't define.
+ (runtime_error_at, sys_abort): Bring more in line with the
+ non-LIBGFOR_MINIMAL code.
+ (runtime_warning_at, internal_error): New functions.
+
2015-03-11 Janne Blomqvist <jb@gcc.gnu.org>
PR libfortran/65200
magic = MAGIC;
}
-#define STRERR_MAXSZ 256
+
+/* os_error()-- Operating system error. We get a message from the
+ * operating system, show it and leave. Some operating system errors
+ * are caught and processed by the library. If not, we come here. */
void
os_error (const char *message)
}
iexport(os_error);
+
+/* void runtime_error()-- These are errors associated with an
+ * invalid fortran program. */
+
void
runtime_error (const char *message, ...)
{
va_list ap;
recursion_check ();
- printf ("Fortran runtime error: ");
+ printf ("%s", where);
+ printf ("\nFortran runtime error: ");
va_start (ap, message);
vprintf (message, ap);
va_end (ap);
}
iexport(runtime_error_at);
+
+void
+runtime_warning_at (const char *where, const char *message, ...)
+{
+ va_list ap;
+
+ printf ("%s", where);
+ printf ("\nFortran runtime warning: ");
+ va_start (ap, message);
+ vprintf (message, ap);
+ va_end (ap);
+ printf ("\n");
+}
+iexport(runtime_warning_at);
+
+
+/* void internal_error()-- These are this-can't-happen errors
+ * that indicate something deeply wrong. */
+
+void
+internal_error (st_parameter_common *cmp, const char *message)
+{
+ recursion_check ();
+ printf ("Internal Error: ");
+ printf ("%s", message);
+ printf ("\n");
+
+ /* This function call is here to get the main.o object file included
+ when linking statically. This works because error.o is supposed to
+ be always linked in (and the function call is in internal_error
+ because hopefully it doesn't happen too often). */
+ stupid_function_name_for_static_linking();
+
+ exit (3);
+}
+
+
/* Return the full path of the executable. */
char *
full_exe_path (void)
void
sys_abort (void)
{
- printf ("Abort called.\n");
+ /* If backtracing is enabled, print backtrace and disable signal
+ handler for ABRT. */
+ if (options.backtrace == 1
+ || (options.backtrace == -1 && compile_options.backtrace == 1))
+ {
+ printf ("\nProgram aborted.\n");
+ }
+
abort();
}