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 15struct 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 41int symsrc__init(struct symsrc *ss, struct dso *dso, const char *name, enum dso_binary_type type); 42void symsrc__destroy(struct symsrc *ss); 43 44bool symsrc__has_symtab(struct symsrc *ss); 45bool symsrc__possibly_runtime(struct symsrc *ss); 46 47#endif /* __PERF_SYMSRC_ */ 48