| // Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // A file you can include instead of <execinfo.h> if your project might need |
| // to run on Mac OS X 10.4. |
| |
| #ifndef BASE_COMPAT_EXECINFO_H_ |
| #define BASE_COMPAT_EXECINFO_H_ |
| #pragma once |
| |
| #include "build/build_config.h" |
| |
| #if defined(OS_MACOSX) |
| #include <AvailabilityMacros.h> |
| #endif |
| |
| #if defined(OS_MACOSX) && MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 |
| // Manually define these here as weak imports, rather than including execinfo.h. |
| // This lets us launch on 10.4 which does not have these calls. |
| extern "C" { |
| |
| extern int backtrace(void**, int) __attribute__((weak_import)); |
| extern char** backtrace_symbols(void* const*, int) |
| __attribute__((weak_import)); |
| extern void backtrace_symbols_fd(void* const*, int, int) |
| __attribute__((weak_import)); |
| |
| } // extern "C" |
| #elif defined(ANDROID) |
| extern "C" { |
| extern int backtrace(void**, int); |
| extern char** backtrace_symbols(void* const*, int); |
| extern void backtrace_symbols_fd(void* const*, int, int); |
| } // extern "C" |
| #else |
| #include <execinfo.h> |
| #endif |
| |
| #endif // BASE_COMPAT_EXECINFO_H_ |