mirror of git://gcc.gnu.org/git/gcc.git
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
This commit is contained in:
parent
d94fae044d
commit
17abb5ac38
|
|
@ -1,3 +1,11 @@
|
|||
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();
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue