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>
|
2015-03-11 Janne Blomqvist <jb@gcc.gnu.org>
|
||||||
|
|
||||||
PR libfortran/65200
|
PR libfortran/65200
|
||||||
|
|
|
||||||
|
|
@ -48,14 +48,13 @@ caf_static_t *caf_static_list = NULL;
|
||||||
static void
|
static void
|
||||||
caf_runtime_error (const char *message, ...)
|
caf_runtime_error (const char *message, ...)
|
||||||
{
|
{
|
||||||
#ifndef LIBGFOR_MINIMAL
|
|
||||||
va_list ap;
|
va_list ap;
|
||||||
fprintf (stderr, "Fortran runtime error: ");
|
fprintf (stderr, "Fortran runtime error: ");
|
||||||
va_start (ap, message);
|
va_start (ap, message);
|
||||||
vfprintf (stderr, message, ap);
|
vfprintf (stderr, message, ap);
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
fprintf (stderr, "\n");
|
fprintf (stderr, "\n");
|
||||||
#endif
|
|
||||||
/* FIXME: Shutdown the Fortran RTL to flush the buffer. PR 43849. */
|
/* FIXME: Shutdown the Fortran RTL to flush the buffer. PR 43849. */
|
||||||
exit (EXIT_FAILURE);
|
exit (EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,10 @@ recursion_check (void)
|
||||||
magic = MAGIC;
|
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
|
void
|
||||||
os_error (const char *message)
|
os_error (const char *message)
|
||||||
|
|
@ -85,6 +88,10 @@ os_error (const char *message)
|
||||||
}
|
}
|
||||||
iexport(os_error);
|
iexport(os_error);
|
||||||
|
|
||||||
|
|
||||||
|
/* void runtime_error()-- These are errors associated with an
|
||||||
|
* invalid fortran program. */
|
||||||
|
|
||||||
void
|
void
|
||||||
runtime_error (const char *message, ...)
|
runtime_error (const char *message, ...)
|
||||||
{
|
{
|
||||||
|
|
@ -109,7 +116,8 @@ runtime_error_at (const char *where, const char *message, ...)
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
|
||||||
recursion_check ();
|
recursion_check ();
|
||||||
printf ("Fortran runtime error: ");
|
printf ("%s", where);
|
||||||
|
printf ("\nFortran runtime error: ");
|
||||||
va_start (ap, message);
|
va_start (ap, message);
|
||||||
vprintf (message, ap);
|
vprintf (message, ap);
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
|
|
@ -118,6 +126,43 @@ runtime_error_at (const char *where, const char *message, ...)
|
||||||
}
|
}
|
||||||
iexport(runtime_error_at);
|
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. */
|
/* Return the full path of the executable. */
|
||||||
char *
|
char *
|
||||||
full_exe_path (void)
|
full_exe_path (void)
|
||||||
|
|
@ -153,6 +198,13 @@ get_args (int *argc, char ***argv)
|
||||||
void
|
void
|
||||||
sys_abort (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();
|
abort();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue