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