• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2006-2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 // A file you can include instead of <execinfo.h> if your project might need
6 // to run on Mac OS X 10.4.
7 
8 #ifndef BASE_COMPAT_EXECINFO_H_
9 #define BASE_COMPAT_EXECINFO_H_
10 #pragma once
11 
12 #include "build/build_config.h"
13 
14 #if defined(OS_MACOSX)
15 #include <AvailabilityMacros.h>
16 #endif
17 
18 #if defined(OS_MACOSX) && MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5
19 // Manually define these here as weak imports, rather than including execinfo.h.
20 // This lets us launch on 10.4 which does not have these calls.
21 extern "C" {
22 
23 extern int backtrace(void**, int) __attribute__((weak_import));
24 extern char** backtrace_symbols(void* const*, int)
25     __attribute__((weak_import));
26 extern void backtrace_symbols_fd(void* const*, int, int)
27     __attribute__((weak_import));
28 
29 }  // extern "C"
30 #elif defined(ANDROID)
31 extern "C" {
32 extern int backtrace(void**, int);
33 extern char** backtrace_symbols(void* const*, int);
34 extern void backtrace_symbols_fd(void* const*, int, int);
35 }  // extern "C"
36 #else
37 #include <execinfo.h>
38 #endif
39 
40 #endif  // BASE_COMPAT_EXECINFO_H_
41