re PR fortran/51197 (Backtrace information less useful)
2012-01-09 Harald Anlauf <anlauf@gmx.de> Tobias Burnus <burnus@net-b.de> PR fortran/51197 * runtime/backtrace.c (show_backtrace): Modify wording written before the backtrace. * runtime/compile_options.c (show_signal): New function. (backtrace_handler): Use it. Co-Authored-By: Tobias Burnus <burnus@net-b.de> From-SVN: r183030
This commit is contained in:
parent
96db412196
commit
3881a3dee8
@ -1,3 +1,12 @@
|
||||
2012-01-09 Harald Anlauf <anlauf@gmx.de>
|
||||
Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
PR fortran/51197
|
||||
* runtime/backtrace.c (show_backtrace): Modify wording written
|
||||
before the backtrace.
|
||||
* runtime/compile_options.c (show_signal): New function.
|
||||
(backtrace_handler): Use it.
|
||||
|
||||
2012-01-09 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||
|
||||
* Makefile.am (libgfortran_la_LDFLAGS): Add -Wc,-shared-libgcc.
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2006, 2007, 2009, 2011 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2006, 2007, 2009, 2011, 2012 Free Software Foundation, Inc.
|
||||
Contributed by François-Xavier Coudert
|
||||
|
||||
This file is part of the GNU Fortran runtime library (libgfortran).
|
||||
@ -197,7 +197,7 @@ show_backtrace (void)
|
||||
state.frame_number = 0;
|
||||
state.error = 0;
|
||||
|
||||
estr_write ("\nA fatal error occurred! Backtrace for this error:\n");
|
||||
estr_write ("\nBacktrace for this error:\n");
|
||||
|
||||
#if CAN_PIPE
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
/* Handling of compile-time options that influence the library.
|
||||
Copyright (C) 2005, 2007, 2009, 2010, 2011 Free Software Foundation, Inc.
|
||||
Copyright (C) 2005, 2007, 2009, 2010, 2011, 2012
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU Fortran runtime library (libgfortran).
|
||||
|
||||
@ -32,6 +33,52 @@ compile_options_t compile_options;
|
||||
|
||||
volatile sig_atomic_t fatal_error_in_progress = 0;
|
||||
|
||||
|
||||
/* Helper function for backtrace_handler to write information about the
|
||||
received signal to stderr before actually giving the backtrace. */
|
||||
static void
|
||||
show_signal (int signum)
|
||||
{
|
||||
const char * name = NULL, * desc = NULL;
|
||||
|
||||
switch (signum)
|
||||
{
|
||||
#if defined(SIGSEGV)
|
||||
case SIGSEGV:
|
||||
name = "SIGSEGV";
|
||||
desc = "Segmentation fault";
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if defined(SIGBUS)
|
||||
case SIGBUS:
|
||||
name = "SIGBUS";
|
||||
desc = "Bus error";
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if defined(SIGILL)
|
||||
case SIGILL:
|
||||
name = "SIGILL";
|
||||
desc = "Illegal instruction";
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if defined(SIGFPE)
|
||||
case SIGFPE:
|
||||
name = "SIGFPE";
|
||||
desc = "Floating-point exception";
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
|
||||
if (name)
|
||||
st_printf ("\nProgram received signal %d (%s): %s.\n", signum, name, desc);
|
||||
else
|
||||
st_printf ("\nProgram received signal %d.\n", signum);
|
||||
}
|
||||
|
||||
|
||||
/* A signal handler to allow us to output a backtrace. */
|
||||
void
|
||||
backtrace_handler (int signum)
|
||||
@ -43,6 +90,7 @@ backtrace_handler (int signum)
|
||||
raise (signum);
|
||||
fatal_error_in_progress = 1;
|
||||
|
||||
show_signal (signum);
|
||||
show_backtrace();
|
||||
|
||||
/* Now reraise the signal. We reactivate the signal's
|
||||
|
Loading…
Reference in New Issue
Block a user