/* 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_ */ |