/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __PERF_SYMSRC_ #define __PERF_SYMSRC_ 1 #include <stdbool.h> #include <stddef.h> #include "dso.h" #ifdef HAVE_LIBELF_SUPPORT #include <libelf.h> #include <gelf.h> #endif #include <elf.h> struct symsrc { char *name; int fd; enum dso_binary_type type; #ifdef HAVE_LIBELF_SUPPORT Elf *elf; GElf_Ehdr ehdr; Elf_Scn *opdsec; size_t opdidx; GElf_Shdr opdshdr; Elf_Scn *symtab; size_t symtab_idx; GElf_Shdr symshdr; Elf_Scn *dynsym; size_t dynsym_idx; GElf_Shdr dynshdr; bool adjust_symbols; bool is_64_bit; #endif }; int symsrc__init(struct symsrc *ss, struct dso *dso, const char *name, enum dso_binary_type type); void symsrc__destroy(struct symsrc *ss); bool symsrc__has_symtab(struct symsrc *ss); bool symsrc__possibly_runtime(struct symsrc *ss); #endif /* __PERF_SYMSRC_ */