Index: base/debug/stack_trace.h |
diff --git a/base/debug/stack_trace.h b/base/debug/stack_trace.h |
index ab1d2ebe6a3c00244b5d09cb1e4fcadce16ab093..7ee1ef557eb86050027e4ed04a687b23aba53187 100644 |
--- a/base/debug/stack_trace.h |
+++ b/base/debug/stack_trace.h |
@@ -11,6 +11,7 @@ |
#include <string> |
#include "base/base_export.h" |
+#include "base/debug/debugging_flags.h" |
#include "base/macros.h" |
#include "build/build_config.h" |
@@ -23,23 +24,14 @@ struct _EXCEPTION_POINTERS; |
struct _CONTEXT; |
#endif |
-// TODO(699863): Clean up HAVE_TRACE_STACK_FRAME_POINTERS. |
-#if defined(OS_POSIX) |
- |
-#if defined(__i386__) || defined(__x86_64__) |
-#define HAVE_TRACE_STACK_FRAME_POINTERS 1 |
-#elif defined(__arm__) && !defined(__thumb__) |
-#define HAVE_TRACE_STACK_FRAME_POINTERS 1 |
-#else // defined(__arm__) && !defined(__thumb__) |
-#define HAVE_TRACE_STACK_FRAME_POINTERS 0 |
-#endif // defined(__arm__) && !defined(__thumb__) |
- |
-#elif defined(OS_WIN) |
-#define HAVE_TRACE_STACK_FRAME_POINTERS 1 |
- |
-#else // defined(OS_WIN) |
-#define HAVE_TRACE_STACK_FRAME_POINTERS 0 |
-#endif // defined(OS_WIN) |
+// Unwinding using frame pointers requires stack traces to have frame pointers |
+// by default. This still doesn't work on thumb architectures, due to an llvm |
+// bug. https://bugs.llvm.org/show_bug.cgi?id=18505#c5 |
+#if ENABLED_FRAME_POINTERS && !(defined(__arm__) && defined(__thumb__)) |
brettw
2017/04/03 21:17:42
This isn't how you use the buildflag header. So yo
|
+#define CAN_UNWIND_WITH_FRAME_POINTERS 1 |
+#else |
+#define CAN_UNWIND_WITH_FRAME_POINTERS 0 |
+#endif |
namespace base { |
namespace debug { |
@@ -56,7 +48,7 @@ namespace debug { |
BASE_EXPORT bool EnableInProcessStackDumping(); |
// Returns end of the stack, or 0 if we couldn't get it. |
-#if HAVE_TRACE_STACK_FRAME_POINTERS |
+#if CAN_UNWIND_WITH_FRAME_POINTERS |
BASE_EXPORT uintptr_t GetStackEnd(); |
#endif |
@@ -119,7 +111,7 @@ class BASE_EXPORT StackTrace { |
size_t count_; |
}; |
-#if HAVE_TRACE_STACK_FRAME_POINTERS |
+#if CAN_UNWIND_WITH_FRAME_POINTERS |
// Traces the stack by using frame pointers. This function is faster but less |
// reliable than StackTrace. It should work for debug and profiling builds, |
// but not for release builds (although there are some exceptions). |
@@ -184,7 +176,7 @@ class BASE_EXPORT ScopedStackFrameLinker { |
}; |
#endif // !defined(OS_WIN) |
-#endif // HAVE_TRACE_STACK_FRAME_POINTERS |
+#endif // CAN_UNWIND_WITH_FRAME_POINTERS |
namespace internal { |