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 size_t symtab_idx; 30 GElf_Shdr symshdr; 31 32 Elf_Scn *dynsym; 33 size_t dynsym_idx; 34 GElf_Shdr dynshdr; 35 36 bool adjust_symbols; 37 bool is_64_bit; 38 #endif 39 }; 40 41 int symsrc__init(struct symsrc *ss, struct dso *dso, const char *name, enum dso_binary_type type); 42 void symsrc__destroy(struct symsrc *ss); 43 44 bool symsrc__has_symtab(struct symsrc *ss); 45 bool symsrc__possibly_runtime(struct symsrc *ss); 46 47 #endif /* __PERF_SYMSRC_ */ 48