• 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 
11 #include "build/build_config.h"
12 
13 #if defined(OS_MACOSX)
14 #include <AvailabilityMacros.h>
15 #endif
16 
17 #if defined(OS_MACOSX) && MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5
18 // Manually define these here as weak imports, rather than including execinfo.h.
19 // This lets us launch on 10.4 which does not have these calls.
20 extern "C" {
21 
22 extern int backtrace(void**, int) __attribute__((weak_import));
23 extern char** backtrace_symbols(void* const*, int)
24     __attribute__((weak_import));
25 extern void backtrace_symbols_fd(void* const*, int, int)
26     __attribute__((weak_import));
27 
28 }  // extern "C"
29 #else
30 #include <execinfo.h>
31 #endif
32 
33 #endif  // BASE_COMPAT_EXECINFO_H_
34