70 lines
2.2 KiB
Diff
70 lines
2.2 KiB
Diff
|
From 93ae1bcd8005216baf7361ba860b53a2cf2e0401 Mon Sep 17 00:00:00 2001
|
||
|
From: Floris Bos <bos@je-eigen-domein.nl>
|
||
|
Date: Sun, 25 Nov 2012 19:05:07 +0100
|
||
|
Subject: [PATCH] Test for the existence of execinfo.h
|
||
|
|
||
|
Previous code assumed that on Linux the execinfo.h functions are always available, which is a glibc extension.
|
||
|
This change fixes building the library under buildroot, which uses uClibc by default
|
||
|
---
|
||
|
interface/vcos/glibc/vcos_backtrace.c | 7 +++++--
|
||
|
makefiles/cmake/arm-linux.cmake | 4 ++++
|
||
|
makefiles/cmake/cmake_config.h.in | 3 +++
|
||
|
3 files changed, 12 insertions(+), 2 deletions(-)
|
||
|
|
||
|
diff --git a/interface/vcos/glibc/vcos_backtrace.c b/interface/vcos/glibc/vcos_backtrace.c
|
||
|
index 474a328..3bb8aa3 100644
|
||
|
--- a/interface/vcos/glibc/vcos_backtrace.c
|
||
|
+++ b/interface/vcos/glibc/vcos_backtrace.c
|
||
|
@@ -26,7 +26,10 @@
|
||
|
*/
|
||
|
|
||
|
#include <interface/vcos/vcos.h>
|
||
|
-#ifdef __linux__
|
||
|
+#ifdef HAVE_CMAKE_CONFIG
|
||
|
+#include "cmake_config.h"
|
||
|
+#endif
|
||
|
+#ifdef HAVE_EXECINFO_H
|
||
|
#include <execinfo.h>
|
||
|
#endif
|
||
|
#include <stdio.h>
|
||
|
@@ -35,7 +38,7 @@
|
||
|
|
||
|
void vcos_backtrace_self(void)
|
||
|
{
|
||
|
-#ifdef __linux__
|
||
|
+#ifdef HAVE_EXECINFO_H
|
||
|
void *stack[64];
|
||
|
int depth = backtrace(stack, sizeof(stack)/sizeof(stack[0]));
|
||
|
char **names = backtrace_symbols(stack, depth);
|
||
|
diff --git a/makefiles/cmake/arm-linux.cmake b/makefiles/cmake/arm-linux.cmake
|
||
|
index 89d8bbf..6f2114f 100644
|
||
|
--- a/makefiles/cmake/arm-linux.cmake
|
||
|
+++ b/makefiles/cmake/arm-linux.cmake
|
||
|
@@ -115,6 +115,10 @@ try_compile(HAVE_MTRACE
|
||
|
${CMAKE_SOURCE_DIR}/makefiles/cmake/srcs/test-mtrace.c
|
||
|
OUTPUT_VARIABLE foo)
|
||
|
|
||
|
+# test for existence of execinfo.h header
|
||
|
+include(CheckIncludeFile)
|
||
|
+check_include_file(execinfo.h HAVE_EXECINFO_H)
|
||
|
+
|
||
|
add_definitions(-DHAVE_CMAKE_CONFIG)
|
||
|
configure_file (
|
||
|
"makefiles/cmake/cmake_config.h.in"
|
||
|
diff --git a/makefiles/cmake/cmake_config.h.in b/makefiles/cmake/cmake_config.h.in
|
||
|
index 5f08ad5..080b8e8 100644
|
||
|
--- a/makefiles/cmake/cmake_config.h.in
|
||
|
+++ b/makefiles/cmake/cmake_config.h.in
|
||
|
@@ -8,5 +8,8 @@
|
||
|
/** Do we have support for GLIBC mtrace() ? */
|
||
|
#cmakedefine HAVE_MTRACE
|
||
|
|
||
|
+/** Do we have the execinfo.h include file ? */
|
||
|
+#cmakedefine HAVE_EXECINFO_H
|
||
|
+
|
||
|
#endif
|
||
|
|
||
|
--
|
||
|
1.7.10
|
||
|
|