mirror of https://github.com/OpenIPC/firmware.git
				
				
				
			
		
			
				
	
	
		
			64 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Diff
		
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Diff
		
	
	
| From b7a166acaddc4c78afa2b653e25114d9114699f3 Mon Sep 17 00:00:00 2001
 | |
| From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
 | |
| Date: Sat, 6 Aug 2016 11:24:50 +0200
 | |
| Subject: [PATCH] Proper detection of cxxabi.h and execinfo.h
 | |
| 
 | |
| The current code in webrtc/base/checks.cc assumes that if __GLIBCXX__ is
 | |
| defined and __UCLIBC__ is not defined, then both cxxabi.h and execinfo.h
 | |
| will be available.
 | |
| 
 | |
| Unfortunately, this is not correct with the musl C library:
 | |
| 
 | |
|  - It defines __GLIBCXX__
 | |
|  - It does not define __UCLIBC__ (it's not uClibc after all!)
 | |
|  - But it also doesn't provide execinfo.h
 | |
| 
 | |
| Therefore, in order to make things work properly, we switch to proper
 | |
| autoconf checks for cxxabi.h and execinfo.h, and only use the backtrace
 | |
| functionality if both are provided.
 | |
| 
 | |
| Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
 | |
| ---
 | |
|  configure.ac          | 2 ++
 | |
|  webrtc/base/checks.cc | 4 ++--
 | |
|  2 files changed, 4 insertions(+), 2 deletions(-)
 | |
| 
 | |
| diff --git a/configure.ac b/configure.ac
 | |
| index acbb3e2..ff4c752 100644
 | |
| --- a/configure.ac
 | |
| +++ b/configure.ac
 | |
| @@ -45,6 +45,8 @@ AC_SUBST(GNUSTL_CFLAGS)
 | |
|  # Borrowed from gst-plugins-bad
 | |
|  AC_CHECK_HEADER(MobileCoreServices/MobileCoreServices.h, HAVE_IOS="yes", HAVE_IOS="no", [-])
 | |
|  
 | |
| +AC_CHECK_HEADERS([cxxabi.h execinfo.h])
 | |
| +
 | |
|  # Based on gst-plugins-bad configure.ac and defines in
 | |
|  # <chromium source>/build/config/BUILDCONFIG.gn and
 | |
|  # webrtc/BUILD.gn
 | |
| diff --git a/webrtc/base/checks.cc b/webrtc/base/checks.cc
 | |
| index 49a31f2..05d23a6 100644
 | |
| --- a/webrtc/base/checks.cc
 | |
| +++ b/webrtc/base/checks.cc
 | |
| @@ -16,7 +16,7 @@
 | |
|  #include <cstdio>
 | |
|  #include <cstdlib>
 | |
|  
 | |
| -#if defined(__GLIBCXX__) && !defined(__UCLIBC__)
 | |
| +#if defined(HAVE_CXX_ABI_H) && defined(HAVE_EXECINFO_H)
 | |
|  #include <cxxabi.h>
 | |
|  #include <execinfo.h>
 | |
|  #endif
 | |
| @@ -55,7 +55,7 @@ void PrintError(const char* format, ...) {
 | |
|  // to get usable symbols on Linux. This is copied from V8. Chromium has a more
 | |
|  // advanced stace trace system; also more difficult to copy.
 | |
|  void DumpBacktrace() {
 | |
| -#if defined(__GLIBCXX__) && !defined(__UCLIBC__)
 | |
| +#if defined(HAVE_CXX_ABI_H) && defined(HAVE_EXECINFO_H)
 | |
|    void* trace[100];
 | |
|    int size = backtrace(trace, sizeof(trace) / sizeof(*trace));
 | |
|    char** symbols = backtrace_symbols(trace, size);
 | |
| -- 
 | |
| 2.7.4
 | |
| 
 |