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_LIBDW_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_LIBDW_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 typedef void Dwarf_Addr; 44 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_LIBDW_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 */ 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