171ad0f5eSJiri Olsa #ifndef __UNWIND_H 271ad0f5eSJiri Olsa #define __UNWIND_H 371ad0f5eSJiri Olsa 471ad0f5eSJiri Olsa #include "types.h" 571ad0f5eSJiri Olsa #include "event.h" 671ad0f5eSJiri Olsa #include "symbol.h" 771ad0f5eSJiri Olsa 871ad0f5eSJiri Olsa struct unwind_entry { 971ad0f5eSJiri Olsa struct map *map; 1071ad0f5eSJiri Olsa struct symbol *sym; 1171ad0f5eSJiri Olsa u64 ip; 1271ad0f5eSJiri Olsa }; 1371ad0f5eSJiri Olsa 1471ad0f5eSJiri Olsa typedef int (*unwind_entry_cb_t)(struct unwind_entry *entry, void *arg); 1571ad0f5eSJiri Olsa 16*9ff125d1SJiri Olsa #ifdef HAVE_DWARF_UNWIND_SUPPORT 1771ad0f5eSJiri Olsa int unwind__get_entries(unwind_entry_cb_t cb, void *arg, 1871ad0f5eSJiri Olsa struct machine *machine, 1971ad0f5eSJiri Olsa struct thread *thread, 2037676af1SArnaldo Carvalho de Melo struct perf_sample *data, int max_stack); 21*9ff125d1SJiri Olsa /* libunwind specific */ 22*9ff125d1SJiri Olsa #ifdef HAVE_LIBUNWIND_SUPPORT 23ea3da69dSJiri Olsa int libunwind__arch_reg_id(int regnum); 24*9ff125d1SJiri Olsa #endif 2571ad0f5eSJiri Olsa #else 2671ad0f5eSJiri Olsa static inline int 271d037ca1SIrina Tirdea unwind__get_entries(unwind_entry_cb_t cb __maybe_unused, 281d037ca1SIrina Tirdea void *arg __maybe_unused, 291d037ca1SIrina Tirdea struct machine *machine __maybe_unused, 301d037ca1SIrina Tirdea struct thread *thread __maybe_unused, 3137676af1SArnaldo Carvalho de Melo struct perf_sample *data __maybe_unused, 3237676af1SArnaldo Carvalho de Melo int max_stack __maybe_unused) 3371ad0f5eSJiri Olsa { 3471ad0f5eSJiri Olsa return 0; 3571ad0f5eSJiri Olsa } 36*9ff125d1SJiri Olsa #endif /* HAVE_DWARF_UNWIND_SUPPORT */ 3771ad0f5eSJiri Olsa #endif /* __UNWIND_H */ 38