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