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 */ 65