aboutsummaryrefslogtreecommitdiff
path: root/libgfortran
diff options
context:
space:
mode:
authorJohn David Anglin <danglin@gcc.gnu.org>2016-01-23 23:32:13 +0000
committerJohn David Anglin <danglin@gcc.gnu.org>2016-01-23 23:32:13 +0000
commitc55879c8721a47e288679c6a887f05e162c35af2 (patch)
treeb44087841eaf6762c6bc6a3cf8ad284c54367930 /libgfortran
parent3676c0871fa9cb1df58a32f78efd01d2c95d5038 (diff)
downloadgcc-c55879c8721a47e288679c6a887f05e162c35af2.zip
gcc-c55879c8721a47e288679c6a887f05e162c35af2.tar.gz
gcc-c55879c8721a47e288679c6a887f05e162c35af2.tar.bz2
re PR libfortran/68744 (FAIL: gfortran.dg/backtrace_1.f90 -O0 execution test)
PR libfortran/68744 * runtime/backtrace.c: Include gthr.h. (show_backtrace): Use __gthread_active_p() to determine whether threads are active. Return if lbstate is NULL. From-SVN: r232770
Diffstat (limited to 'libgfortran')
-rw-r--r--libgfortran/ChangeLog7
-rw-r--r--libgfortran/runtime/backtrace.c8
2 files changed, 14 insertions, 1 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index c993191..4c7befa 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,10 @@
+2016-01-23 John David Anglin <danglin@gcc.gnu.org>
+
+ PR libfortran/68744
+ * runtime/backtrace.c: Include gthr.h.
+ (show_backtrace): Use __gthread_active_p() to determine whether threads
+ are active. Return if lbstate is NULL.
+
2016-01-15 Jakub Jelinek <jakub@redhat.com>
* intrinsics/execute_command_line.c (set_cmdstat): Use "%s", msg
diff --git a/libgfortran/runtime/backtrace.c b/libgfortran/runtime/backtrace.c
index a61363a..5b8735d 100644
--- a/libgfortran/runtime/backtrace.c
+++ b/libgfortran/runtime/backtrace.c
@@ -24,6 +24,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#include "libgfortran.h"
+#include <gthr.h>
+
#include <string.h>
#include <stdlib.h>
#include <errno.h>
@@ -137,7 +139,11 @@ show_backtrace (bool in_signal_handler)
struct backtrace_state *lbstate;
struct mystate state = { 0, false, in_signal_handler };
- lbstate = backtrace_create_state (NULL, 1, error_callback, NULL);
+ lbstate = backtrace_create_state (NULL, __gthread_active_p (),
+ error_callback, NULL);
+
+ if (lbstate == NULL)
+ return;
if (!BACKTRACE_SUPPORTED || (in_signal_handler && BACKTRACE_USES_MALLOC))
{