From c70b1a9a29a0edd25fe17ef0374635da71310076 Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Sat, 6 Jul 2019 13:43:58 -0700 Subject: [PATCH] libcom: detect uclibc support for backtrace() --- .../src/osi/os/posix/osdExecinfoBackTrace.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/modules/libcom/src/osi/os/posix/osdExecinfoBackTrace.cpp b/modules/libcom/src/osi/os/posix/osdExecinfoBackTrace.cpp index ae13d28fc..8ed1bb283 100644 --- a/modules/libcom/src/osi/os/posix/osdExecinfoBackTrace.cpp +++ b/modules/libcom/src/osi/os/posix/osdExecinfoBackTrace.cpp @@ -7,12 +7,30 @@ * Author: Till Straumann , 2011, 2014 */ +// pull in libc feature test macros +#include + +// execinfo.h may not be present if uclibc is configured to omit backtrace() +#if !defined(__UCLIBC_MAJOR__) || defined(__UCLIBC_HAS_EXECINFO__) +# define HAS_EXECINFO 1 +#else +# define HAS_EXECINFO 0 +#endif + +#if HAS_EXECINFO + #include +#endif + #define epicsExportSharedSymbols #include "epicsStackTracePvt.h" int epicsBackTrace(void **buf, int buf_sz) { +#if HAS_EXECINFO return backtrace(buf, buf_sz); +#else + return -1; +#endif }