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