]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/projects/libunwind/src/libunwind_ext.h
Merge LLVM libunwind trunk r351319, from just before upstream's
[FreeBSD/FreeBSD.git] / contrib / llvm / projects / libunwind / src / libunwind_ext.h
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__