Patchwork libbacktrace patch committed: Check whether -funwind-tables works

login
register
mail settings
Submitter Ian Taylor
Date Oct. 24, 2012, 9:12 p.m.
Message ID <mcrlievo9qy.fsf@google.com>
Download mbox | patch
Permalink /patch/193952/
State New
Headers show

Comments

Ian Taylor - Oct. 24, 2012, 9:12 p.m.
PR 55061 is about a case in which the compiler used to build stage 1
(Xcode 3.1.4 on PPC Darwin) is a version of GCC that does not correctly
support the -funwind-tables option.  The libbacktrace configure script
was assuming that all versions of GCC support -funwind-tables.  This
patch changes it to actually test whether it works, using a test case
that fails with Xcode 3.1.4.  Bootstrapped and ran libbacktrace tests on
x86_64-unknown-linux-gnu.  Committed to mainline.

Ian


2012-10-24  Ian Lance Taylor  <iant@google.com>

	PR target/55061
	* configure.ac: Check whether -funwind-tables option works.
	* configure: Rebuild.

Patch

Index: configure.ac
===================================================================
--- configure.ac	(revision 192781)
+++ configure.ac	(working copy)
@@ -97,8 +97,21 @@  fi
 AC_SUBST(BACKTRACE_FILE)
 
 EXTRA_FLAGS=
-if test "x$GCC" = "xyes"; then
+if test -n "${with_target_subdir}"; then
   EXTRA_FLAGS=-funwind-tables
+else
+  AC_CACHE_CHECK([for -funwind-tables option],
+    [libbacktrace_cv_c_unwind_tables],
+    [CFLAGS_hold="$CFLAGS"
+     CFLAGS="$CFLAGS -funwind-tables"
+     AC_COMPILE_IFELSE(
+       [AC_LANG_PROGRAM([static int f() { return 0; }], [return f();])],
+       [libbacktrace_cv_c_unwind_tables=yes],
+       [libbacktrace_cv_c_unwind_tables=no])
+     CFLAGS="$CFLAGS_hold"])
+   if test "$libbacktrace_cv_c_unwind_tables" = "yes"; then
+     EXTRA_FLAGS=-funwind-tables
+   fi
 fi
 AC_SUBST(EXTRA_FLAGS)