1*4882a593Smuzhiyun[PATCH] fix build on uClibc without UCLIBC_HAS_BACKTRACE 2*4882a593Smuzhiyun 3*4882a593SmuzhiyunBacktrace support is only used for logging on signal errors, which 4*4882a593Smuzhiyunisn't really critical, so simply remove backtrace info if not 5*4882a593Smuzhiyunavailable in uClibc. 6*4882a593Smuzhiyun 7*4882a593SmuzhiyunNOTE: based on patch from Peter Korsgaard <jacmet@sunsite.dk> 8*4882a593Smuzhiyun 9*4882a593SmuzhiyunSigned-off-by: Petr Vorel <petr.vorel@gmail.com> 10*4882a593Smuzhiyun--- 11*4882a593Smuzhiyun--- ofono-1.7.orig/src/log.c 12*4882a593Smuzhiyun+++ ofono-1.7/src/log.c 13*4882a593Smuzhiyun@@ -30,7 +30,8 @@ 14*4882a593Smuzhiyun #include <stdlib.h> 15*4882a593Smuzhiyun #include <string.h> 16*4882a593Smuzhiyun #include <syslog.h> 17*4882a593Smuzhiyun-#ifdef __GLIBC__ 18*4882a593Smuzhiyun+#if defined(__GLIBC__) && !(defined(__UCLIBC__) && !defined (__UCLIBC_HAS_BACKTRACE__)) 19*4882a593Smuzhiyun+#define HAVE_BACKTRACE 20*4882a593Smuzhiyun #include <execinfo.h> 21*4882a593Smuzhiyun #endif 22*4882a593Smuzhiyun #include <dlfcn.h> 23*4882a593Smuzhiyun@@ -115,7 +116,7 @@ 24*4882a593Smuzhiyun va_end(ap); 25*4882a593Smuzhiyun } 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun-#ifdef __GLIBC__ 28*4882a593Smuzhiyun+#ifdef HAVE_BACKTRACE 29*4882a593Smuzhiyun static void print_backtrace(unsigned int offset) 30*4882a593Smuzhiyun { 31*4882a593Smuzhiyun void *frames[99]; 32*4882a593Smuzhiyun@@ -312,7 +313,7 @@ 33*4882a593Smuzhiyun if (detach == FALSE) 34*4882a593Smuzhiyun option |= LOG_PERROR; 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun-#ifdef __GLIBC__ 37*4882a593Smuzhiyun+#ifdef HAVE_BACKTRACE 38*4882a593Smuzhiyun signal_setup(signal_handler); 39*4882a593Smuzhiyun #endif 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun@@ -329,7 +330,7 @@ 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun closelog(); 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun-#ifdef __GLIBC__ 46*4882a593Smuzhiyun+#ifdef HAVE_BACKTRACE 47*4882a593Smuzhiyun signal_setup(SIG_DFL); 48*4882a593Smuzhiyun #endif 49*4882a593Smuzhiyun 50