Home | History | Annotate | Download | only in base
      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