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
debuginfo__new(const char * path __maybe_unused)34 static inline struct debuginfo *debuginfo__new(const char *path __maybe_unused)
35 {
36 return NULL;
37 }
38
debuginfo__delete(struct debuginfo * dbg __maybe_unused)39 static inline void debuginfo__delete(struct debuginfo *dbg __maybe_unused)
40 {
41 }
42
43 typedef void Dwarf_Addr;
44
debuginfo__get_text_offset(struct debuginfo * dbg __maybe_unused,Dwarf_Addr * offs __maybe_unused,bool adjust_offset __maybe_unused)45 static inline int debuginfo__get_text_offset(struct debuginfo *dbg __maybe_unused,
46 Dwarf_Addr *offs __maybe_unused,
47 bool adjust_offset __maybe_unused)
48 {
49 return -EINVAL;
50 }
51
52 #endif /* HAVE_DWARF_SUPPORT */
53
54 #ifdef HAVE_DEBUGINFOD_SUPPORT
55 int get_source_from_debuginfod(const char *raw_path, const char *sbuild_id,
56 char **new_path);
57 #else /* HAVE_DEBUGINFOD_SUPPORT */
get_source_from_debuginfod(const char * raw_path __maybe_unused,const char * sbuild_id __maybe_unused,char ** new_path __maybe_unused)58 static inline int get_source_from_debuginfod(const char *raw_path __maybe_unused,
59 const char *sbuild_id __maybe_unused,
60 char **new_path __maybe_unused)
61 {
62 return -ENOTSUP;
63 }
64 #endif /* HAVE_DEBUGINFOD_SUPPORT */
65
66 #endif /* _PERF_DEBUGINFO_H */
67