From c55879c8721a47e288679c6a887f05e162c35af2 Mon Sep 17 00:00:00 2001
From: John David Anglin <danglin@gcc.gnu.org>
Date: Sat, 23 Jan 2016 23:32:13 +0000
Subject: 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
---
 libgfortran/ChangeLog           | 7 +++++++
 libgfortran/runtime/backtrace.c | 8 +++++++-
 2 files changed, 14 insertions(+), 1 deletion(-)

(limited to 'libgfortran')

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))
     {
-- 
cgit v1.1