diff options
author | Aliaksey Kandratsenka <alkondratenko@gmail.com> | 2021-02-28 17:52:17 -0800 |
---|---|---|
committer | Aliaksey Kandratsenka <alkondratenko@gmail.com> | 2021-02-28 17:52:17 -0800 |
commit | c2f60400a86a5211bf009941bf1ccf9b2947a7c1 (patch) | |
tree | 7367c0f444340091f626e75f2b0dd6d0630a2118 | |
parent | a015377a54eb09fca4b893ae530187a705164df5 (diff) | |
download | gperftools-c2f60400a86a5211bf009941bf1ccf9b2947a7c1.tar.gz |
prefer backtrace() on OSX
It seems to work and _Unwind_Backtrace which is configured otherwise
doesn't.
-rw-r--r-- | CMakeLists.txt | 5 | ||||
-rw-r--r-- | cmake/DefineTargetVariables.cmake | 1 | ||||
-rw-r--r-- | configure.ac | 15 |
3 files changed, 17 insertions, 4 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 46ef2d0..b217d52 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -65,7 +65,7 @@ include(PCFromUContext) define_target_variables() # Currently only backtrace works on s390. -if(s390) +if(s390 OR OSX) set(default_enable_libunwind OFF) set(default_enable_backtrace ON) else() @@ -308,6 +308,9 @@ check_c_source_compiles(" #include <unwind.h> int main() { +#if __APPLE__ +#error OSX _Unwind_Backtrace recurses back to malloc +#endif &_Unwind_Backtrace; return 0; }" diff --git a/cmake/DefineTargetVariables.cmake b/cmake/DefineTargetVariables.cmake index 5b7c5da..ada0152 100644 --- a/cmake/DefineTargetVariables.cmake +++ b/cmake/DefineTargetVariables.cmake @@ -11,4 +11,5 @@ macro(define_target_variables) check_cxx_source_compiles("int main() { return __FreeBSD__; }" FreeBSD) check_cxx_source_compiles("int main() { return __MINGW__; }" MINGW) check_cxx_source_compiles("int main() { return __linux; }" LINUX) + check_cxx_source_compiles("int main() { return __APPLE__; }" OSX) endmacro() diff --git a/configure.ac b/configure.ac index 9b1bec4..dbbbbf8 100644 --- a/configure.ac +++ b/configure.ac @@ -55,8 +55,13 @@ case "$host" in *-darwin*) default_enable_heap_checker=no;; esac -# Currently only backtrace works on s390. -AC_COMPILE_IFELSE([AC_LANG_PROGRAM(, [return __s390__])], +# Currently only backtrace works on s390 and OSX. +AC_COMPILE_IFELSE([AC_LANG_PROGRAM(, [ +#if !defined(__s390__) && !defined(__APPLE__) +#error not s390 and not osx +#endif +return 1 +])], [default_enable_libunwind=no default_enable_backtrace=yes], [default_enable_libunwind=yes @@ -416,7 +421,11 @@ AC_CACHE_CHECK([if target has _Unwind_Backtrace], [perftools_cv_have_unwind_backtrace], [AC_LANG_PUSH(C++) AC_COMPILE_IFELSE([AC_LANG_PROGRAM( - [[#include <unwind.h>]], + [[#include <unwind.h> +#if defined(__APPLE__) +#error OSX _Unwind_Backtrace recurses back to malloc +#endif +]], [[&_Unwind_Backtrace]])], [perftools_cv_have_unwind_backtrace=yes], [perftools_cv_have_unwind_backtrace=no]) |