瀏覽代碼

pass our compiler -fasynchronous-unwind-tables by default

This should make more platforms (in particular, ones with compilers
where -fomit-frame-pointer is on by default but table generation
isn't) support backtrace generation.  Thanks to cypherpunks for this
one.

Fixes bug 11047; bugfix on 0.2.5.2-alpha.
Nick Mathewson 11 年之前
父節點
當前提交
68ed4878ca
共有 2 個文件被更改,包括 16 次插入0 次删除
  1. 9 0
      changes/bug11047
  2. 7 0
      configure.ac

+ 9 - 0
changes/bug11047

@@ -0,0 +1,9 @@
+  o Minor bugfixes:
+
+    - Build using the -fasynchronous-unwind-tables option so that more
+      platforms (in particular, ones like 32-bit Intel where the
+      -fomit-frame-pointer option is on by default and table
+      generation is not) will support generating backtraces. This
+      doesn't yet add Windows support yet; only Linux, OSX, and some BSD
+      are affected. Reported by 'cypherpunks'; fixes bug 11047; bugfix
+      on 0.2.5.2-alpha.

+ 7 - 0
configure.ac

@@ -648,6 +648,13 @@ fi
 CFLAGS="$saved_CFLAGS"
 CFLAGS="$saved_CFLAGS"
 AC_SUBST(F_OMIT_FRAME_POINTER)
 AC_SUBST(F_OMIT_FRAME_POINTER)
 
 
+dnl ------------------------------------------------------
+dnl If we are adding -fomit-frame-pointer (or if the compiler's doing it
+dnl for us, as GCC 4.6 and later do at many optimization levels), then
+dnl we should try to add -fasynchronous-unwind-tables so that our backtrace
+dnl code will work.
+TOR_CHECK_CFLAGS(-fasynchronous-unwind-tables)
+
 dnl ------------------------------------------------------
 dnl ------------------------------------------------------
 dnl Where do you live, libnatpmp?  And how do we call you?
 dnl Where do you live, libnatpmp?  And how do we call you?
 dnl There are no packages for Debian or Redhat as of this patch
 dnl There are no packages for Debian or Redhat as of this patch