Commit | Line | Data |
---|---|---|
6f1b6291 NK |
1 | /* SPDX-License-Identifier: GPL-2.0-or-later */ |
2 | #ifndef _PERF_DEBUGINFO_H | |
3 | #define _PERF_DEBUGINFO_H | |
4 | ||
5 | #include <errno.h> | |
6 | #include <linux/compiler.h> | |
7 | ||
8 | #ifdef HAVE_DWARF_SUPPORT | |
9 | ||
10 | #include "dwarf-aux.h" | |
11 | ||
12 | /* debug information structure */ | |
13 | struct debuginfo { | |
14 | Dwarf *dbg; | |
15 | Dwfl_Module *mod; | |
16 | Dwfl *dwfl; | |
17 | Dwarf_Addr bias; | |
18 | const unsigned char *build_id; | |
19 | }; | |
20 | ||
21 | /* This also tries to open distro debuginfo */ | |
22 | struct debuginfo *debuginfo__new(const char *path); | |
23 | void debuginfo__delete(struct debuginfo *dbg); | |
24 | ||
25 | int debuginfo__get_text_offset(struct debuginfo *dbg, Dwarf_Addr *offs, | |
26 | bool adjust_offset); | |
27 | ||
28 | #else /* HAVE_DWARF_SUPPORT */ | |
29 | ||
30 | /* dummy debug information structure */ | |
31 | struct debuginfo { | |
32 | }; | |
33 | ||
34 | static inline struct debuginfo *debuginfo__new(const char *path __maybe_unused) | |
35 | { | |
36 | return NULL; | |
37 | } | |
38 | ||
39 | static inline void debuginfo__delete(struct debuginfo *dbg __maybe_unused) | |
40 | { | |
41 | } | |
42 | ||
43 | static inline int debuginfo__get_text_offset(struct debuginfo *dbg __maybe_unused, | |
44 | Dwarf_Addr *offs __maybe_unused, | |
45 | bool adjust_offset __maybe_unused) | |
46 | { | |
47 | return -EINVAL; | |
48 | } | |
49 | ||
50 | #endif /* HAVE_DWARF_SUPPORT */ | |
51 | ||
52 | #ifdef HAVE_DEBUGINFOD_SUPPORT | |
53 | int get_source_from_debuginfod(const char *raw_path, const char *sbuild_id, | |
54 | char **new_path); | |
55 | #else /* HAVE_DEBUGINFOD_SUPPORT */ | |
56 | static inline int get_source_from_debuginfod(const char *raw_path __maybe_unused, | |
57 | const char *sbuild_id __maybe_unused, | |
58 | char **new_path __maybe_unused) | |
59 | { | |
60 | return -ENOTSUP; | |
61 | } | |
62 | #endif /* HAVE_DEBUGINFOD_SUPPORT */ | |
63 | ||
64 | #endif /* _PERF_DEBUGINFO_H */ |