#ifndef BACKTRACE_H #define BACKTRACE_H #define BIT(x) (1 << x) enum { BT_FLAG_DESTROY = BIT(0), }; #if defined(__x86_64) typedef uint64_t bt_word_t; #else typedef uint32_t bt_word_t; #endif struct bt_symbol; struct bt_map { bt_word_t base; bt_word_t start; bt_word_t end; char *name; struct bt_symbol *symbols; struct bt_map *next; }; struct bt_symbol { bt_word_t start; bt_word_t end; char *name; struct bt_map *map; struct bt_symbol *next; }; /* backtrace user interface */ void dump_backtrace(struct lt_config_shared *cfg, unsigned long flags); /* backtrace implementation helpers */ int bt_dump(struct lt_config_shared *cfg, unsigned long flags); int bt_find_map(struct lt_config_shared *cfg, struct bt_map **map, bt_word_t ip); int bt_find_symbol(struct lt_config_shared *cfg, struct bt_symbol **sym, struct bt_map *map, bt_word_t ip); void bt_display(struct lt_config_shared *cfg, char *text); #endif /* BACKTRACE_H*/