1 //===------------------------ libunwind_ext.h -----------------------------===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is dual licensed under the MIT and the University of Illinois Open 6 // Source Licenses. See LICENSE.TXT for details. 7 // 8 // 9 // Extensions to libunwind API. 10 // 11 //===----------------------------------------------------------------------===// 12 13 #ifndef __LIBUNWIND_EXT__ 14 #define __LIBUNWIND_EXT__ 15 16 #include "config.h" 17 #include <libunwind.h> 18 #include <unwind.h> 19 20 #define UNW_STEP_SUCCESS 1 21 #define UNW_STEP_END 0 22 23 #ifdef __cplusplus 24 extern "C" { 25 #endif 26 // SPI 27 extern void unw_iterate_dwarf_unwind_cache(void (*func)(unw_word_t ip_start, 28 unw_word_t ip_end, 29 unw_word_t fde, 30 unw_word_t mh)); 31 32 // IPI 33 extern void _unw_add_dynamic_fde(unw_word_t fde); 34 extern void _unw_remove_dynamic_fde(unw_word_t fde); 35 36 #if defined(_LIBUNWIND_ARM_EHABI) 37 extern const uint32_t* decode_eht_entry(const uint32_t*, size_t*, size_t*); 38 extern _Unwind_Reason_Code _Unwind_VRS_Interpret(_Unwind_Context *context, 39 const uint32_t *data, 40 size_t offset, size_t len); 41 #endif 42 43 #ifdef __cplusplus 44 } 45 #endif 46 47 #endif // __LIBUNWIND_EXT__ 48