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 */
13struct 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 */
22struct debuginfo *debuginfo__new(const char *path);
23void debuginfo__delete(struct debuginfo *dbg);
24
25int 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 */
31struct debuginfo {
32};
33
34static inline struct debuginfo *debuginfo__new(const char *path __maybe_unused)
35{
36 return NULL;
37}
38
39static inline void debuginfo__delete(struct debuginfo *dbg __maybe_unused)
40{
41}
42
43static 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
53int get_source_from_debuginfod(const char *raw_path, const char *sbuild_id,
54 char **new_path);
55#else /* HAVE_DEBUGINFOD_SUPPORT */
56static 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 */
65

source code of linux/tools/perf/util/debuginfo.h