Commit | Line | Data |
---|---|---|
b1d1b094 ACM |
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; | |
a1ab1285 | 29 | size_t symtab_idx; |
b1d1b094 ACM |
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_ */ |