From a62fe8a3e9ebaba6ccbad3d66cbc17cc4ef69f16 Mon Sep 17 00:00:00 2001 From: akallabeth Date: Fri, 29 Apr 2022 15:04:54 +0200 Subject: [PATCH] Enable unwind.h and dladdr as default backtrace implementation * config option USE_UNWIND to enable/disable --- winpr/CMakeLists.txt | 4 +--- winpr/libwinpr/utils/CMakeLists.txt | 10 +++++++--- winpr/libwinpr/utils/debug.c | 10 +++++----- winpr/libwinpr/utils/unwind/debug.c | 2 -- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/winpr/CMakeLists.txt b/winpr/CMakeLists.txt index ac78c0a03..7ed9c3055 100644 --- a/winpr/CMakeLists.txt +++ b/winpr/CMakeLists.txt @@ -185,9 +185,7 @@ if(NOT IOS) check_include_files(syslog.h HAVE_SYSLOG_H) check_include_files(sys/select.h HAVE_SYS_SELECT_H) check_include_files(sys/eventfd.h HAVE_SYS_EVENTFD_H) - if (ANDROID) - check_include_files(unwind.h HAVE_UNWIND_H) - endif() + check_include_files(unwind.h HAVE_UNWIND_H) if (HAVE_SYS_EVENTFD_H) check_symbol_exists(eventfd_read sys/eventfd.h WITH_EVENTFD_READ_WRITE) endif() diff --git a/winpr/libwinpr/utils/CMakeLists.txt b/winpr/libwinpr/utils/CMakeLists.txt index a110a0636..7d984efe5 100644 --- a/winpr/libwinpr/utils/CMakeLists.txt +++ b/winpr/libwinpr/utils/CMakeLists.txt @@ -129,9 +129,13 @@ if (HAVE_EXECINFO_H) endif() if (HAVE_UNWIND_H) - list(APPEND SRCS - unwind/debug.c - unwind/debug.h) + option(USE_UNWIND "Use unwind.h to generate backtraces" ON) + if (USE_UNWIND) + add_definitions(-DUSE_UNWIND) + list(APPEND SRCS + unwind/debug.c + unwind/debug.h) + endif() endif() winpr_module_add(${SRCS} diff --git a/winpr/libwinpr/utils/debug.c b/winpr/libwinpr/utils/debug.c index d65e3c86a..ebf47484f 100644 --- a/winpr/libwinpr/utils/debug.c +++ b/winpr/libwinpr/utils/debug.c @@ -30,7 +30,7 @@ #include #endif -#if defined(HAVE_UNWIND_H) +#if defined(USE_UNWIND_H) #include #endif @@ -89,7 +89,7 @@ void winpr_backtrace_free(void* buffer) if (!buffer) return; -#if defined(HAVE_UNWIND_H) +#if defined(USE_UNWIND_H) winpr_unwind_backtrace_free(buffer); #elif defined(HAVE_EXECINFO_H) winpr_execinfo_backtrace_free(buffer); @@ -104,7 +104,7 @@ void winpr_backtrace_free(void* buffer) void* winpr_backtrace(DWORD size) { -#if defined(HAVE_UNWIND_H) +#if defined(USE_UNWIND_H) return winpr_unwind_backtrace(size); #elif defined(HAVE_EXECINFO_H) return winpr_execinfo_backtrace(size); @@ -129,7 +129,7 @@ char** winpr_backtrace_symbols(void* buffer, size_t* used) return NULL; } -#if defined(HAVE_UNWIND_H) +#if defined(USE_UNWIND_H) return winpr_unwind_backtrace_symbols(buffer, used); #elif defined(HAVE_EXECINFO_H) return winpr_execinfo_backtrace_symbols(buffer, used); @@ -151,7 +151,7 @@ void winpr_backtrace_symbols_fd(void* buffer, int fd) return; } -#if defined(HAVE_EXECINFO_H) && !defined(HAVE_UNWIND_H) +#if defined(HAVE_EXECINFO_H) && !defined(USE_UNWIND_H) winpr_execinfo_backtrace_symbols_fd(buffer, fd); #elif !defined(ANDROID) { diff --git a/winpr/libwinpr/utils/unwind/debug.c b/winpr/libwinpr/utils/unwind/debug.c index 817365489..4e86f7b1f 100644 --- a/winpr/libwinpr/utils/unwind/debug.c +++ b/winpr/libwinpr/utils/unwind/debug.c @@ -18,11 +18,9 @@ * limitations under the License. */ -/* Required to test on linux #ifndef _GNU_SOURCE #define _GNU_SOURCE #endif -*/ #include #include