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