Chromium Code Reviews| 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 { |