|
@@ -0,0 +1,65 @@
|
|
|
+From 30642d5b1a3f479987c4d50a237311d84d5f0581 Mon Sep 17 00:00:00 2001
|
|
|
+From: "Yann E. MORIN" <yann.morin.1998@free.fr>
|
|
|
+Date: Thu, 24 Dec 2015 12:04:57 +0100
|
|
|
+Subject: [PATCH] configure: check for execinfo.h
|
|
|
+
|
|
|
+Not all toolchains have execinfo.h. For example, support for it is
|
|
|
+optional in uClibc, while it is entirely missing from musl.
|
|
|
+
|
|
|
+Add a check in configure to look for it.
|
|
|
+
|
|
|
+Since execinfo.h is /only/ used to dump a backtrace in case of failure,
|
|
|
+just do nothing when execinfo.h is missing.
|
|
|
+
|
|
|
+Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
|
|
|
+---
|
|
|
+ configure.ac | 2 ++
|
|
|
+ src/log.c | 4 ++++
|
|
|
+ 2 files changed, 6 insertions(+)
|
|
|
+
|
|
|
+diff --git a/configure.ac b/configure.ac
|
|
|
+index b51d6b3..28e657b 100644
|
|
|
+--- a/configure.ac
|
|
|
++++ b/configure.ac
|
|
|
+@@ -182,6 +182,8 @@ AC_CHECK_LIB(resolv, ns_initparse, dummy=yes, [
|
|
|
+ AC_MSG_ERROR(resolver library support is required))
|
|
|
+ ])
|
|
|
+
|
|
|
++AC_CHECK_HEADERS([execinfo.h])
|
|
|
++
|
|
|
+ AC_CHECK_FUNC(signalfd, dummy=yes,
|
|
|
+ AC_MSG_ERROR(signalfd support is required))
|
|
|
+
|
|
|
+diff --git a/src/log.c b/src/log.c
|
|
|
+index a693bd0..76e10e7 100644
|
|
|
+--- a/src/log.c
|
|
|
++++ b/src/log.c
|
|
|
+@@ -30,7 +30,9 @@
|
|
|
+ #include <stdlib.h>
|
|
|
+ #include <string.h>
|
|
|
+ #include <syslog.h>
|
|
|
++#if defined(HAVE_EXECINFO_H)
|
|
|
+ #include <execinfo.h>
|
|
|
++#endif
|
|
|
+ #include <dlfcn.h>
|
|
|
+
|
|
|
+ #include "connman.h"
|
|
|
+@@ -112,6 +114,7 @@ void connman_debug(const char *format, ...)
|
|
|
+
|
|
|
+ static void print_backtrace(unsigned int offset)
|
|
|
+ {
|
|
|
++#if defined(HAVE_EXECINFO_H)
|
|
|
+ void *frames[99];
|
|
|
+ size_t n_ptrs;
|
|
|
+ unsigned int i;
|
|
|
+@@ -210,6 +213,7 @@ static void print_backtrace(unsigned int offset)
|
|
|
+
|
|
|
+ close(outfd[1]);
|
|
|
+ close(infd[0]);
|
|
|
++#endif /* HAVE_EXECINFO_H */
|
|
|
+ }
|
|
|
+
|
|
|
+ static void signal_handler(int signo)
|
|
|
+--
|
|
|
+1.9.1
|
|
|
+
|