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