xref: /openbmc/linux/tools/perf/util/unwind.h (revision 9ff125d132001c02d32a193a9423be0690526e11)
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