1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef __PERF_SYMSRC_ 3 #define __PERF_SYMSRC_ 1 4 5 #include <stdbool.h> 6 #include <stddef.h> 7 #include "dso.h" 8 9 #ifdef HAVE_LIBELF_SUPPORT 10 #include <libelf.h> 11 #include <gelf.h> 12 #endif 13 #include <elf.h> 14 15 struct symsrc { 16 char *name; 17 int fd; 18 enum dso_binary_type type; 19 20 #ifdef HAVE_LIBELF_SUPPORT 21 Elf *elf; 22 GElf_Ehdr ehdr; 23 24 Elf_Scn *opdsec; 25 size_t opdidx; 26 GElf_Shdr opdshdr; 27 28 Elf_Scn *symtab; 29 GElf_Shdr symshdr; 30 31 Elf_Scn *dynsym; 32 size_t dynsym_idx; 33 GElf_Shdr dynshdr; 34 35 bool adjust_symbols; 36 bool is_64_bit; 37 #endif 38 }; 39 40 int symsrc__init(struct symsrc *ss, struct dso *dso, const char *name, enum dso_binary_type type); 41 void symsrc__destroy(struct symsrc *ss); 42 43 bool symsrc__has_symtab(struct symsrc *ss); 44 bool symsrc__possibly_runtime(struct symsrc *ss); 45 46 #endif /* __PERF_SYMSRC_ */ 47