48 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2#ifndef __PERF_SYMSRC_3#define __PERF_SYMSRC_ 14 5#include <stdbool.h>6#include <stddef.h>7#include "dso.h"8 9#ifdef HAVE_LIBELF_SUPPORT10#include <libelf.h>11#include <gelf.h>12#endif13#include <elf.h>14 15struct symsrc {16 char *name;17 int fd;18 enum dso_binary_type type;19 20#ifdef HAVE_LIBELF_SUPPORT21 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#endif39};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