Commit 17abb5ac by Thomas Schwinge Committed by Thomas Schwinge

libgfortran LIBGFOR_MINIMAL enhancements.

Based on GCC trunk r220892, for nvptx-none:

                    === gfortran Summary ===

    # of expected passes            [-31320-]{+32117+}
    # of unexpected failures        [-7222-]{+6821+}
    # of expected failures          78
    # of unresolved testcases       [-6441-]{+6158+}
    # of untested testcases         [-432-]{+391+}
    # of unsupported tests          639

	libgfortran/
	* 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.

From-SVN: r221363
parent d94fae04
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
......
......@@ -48,14 +48,13 @@ caf_static_t *caf_static_list = NULL;
static void
caf_runtime_error (const char *message, ...)
{
#ifndef LIBGFOR_MINIMAL
va_list ap;
fprintf (stderr, "Fortran runtime error: ");
va_start (ap, message);
vfprintf (stderr, message, ap);
va_end (ap);
fprintf (stderr, "\n");
#endif
/* FIXME: Shutdown the Fortran RTL to flush the buffer. PR 43849. */
exit (EXIT_FAILURE);
}
......
......@@ -73,7 +73,10 @@ recursion_check (void)
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)
......@@ -85,6 +88,10 @@ 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, ...)
{
......@@ -109,7 +116,8 @@ runtime_error_at (const char *where, 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);
......@@ -118,6 +126,43 @@ runtime_error_at (const char *where, const char *message, ...)
}
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)
......@@ -153,6 +198,13 @@ get_args (int *argc, char ***argv)
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();
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment