compat_execinfo.h revision c7f5f8508d98d5952d42ed7648c2a8f30a4da156
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.
20extern "C" {
21
22extern int backtrace(void**, int) __attribute__((weak_import));
23extern char** backtrace_symbols(void* const*, int)
24    __attribute__((weak_import));
25extern 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