xref: /OK3568_Linux_fs/kernel/tools/perf/util/symsrc.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun #ifndef __PERF_SYMSRC_
3*4882a593Smuzhiyun #define __PERF_SYMSRC_ 1
4*4882a593Smuzhiyun 
5*4882a593Smuzhiyun #include <stdbool.h>
6*4882a593Smuzhiyun #include <stddef.h>
7*4882a593Smuzhiyun #include "dso.h"
8*4882a593Smuzhiyun 
9*4882a593Smuzhiyun #ifdef HAVE_LIBELF_SUPPORT
10*4882a593Smuzhiyun #include <libelf.h>
11*4882a593Smuzhiyun #include <gelf.h>
12*4882a593Smuzhiyun #endif
13*4882a593Smuzhiyun #include <elf.h>
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun struct symsrc {
16*4882a593Smuzhiyun 	char		     *name;
17*4882a593Smuzhiyun 	int		     fd;
18*4882a593Smuzhiyun 	enum dso_binary_type type;
19*4882a593Smuzhiyun 
20*4882a593Smuzhiyun #ifdef HAVE_LIBELF_SUPPORT
21*4882a593Smuzhiyun 	Elf		     *elf;
22*4882a593Smuzhiyun 	GElf_Ehdr	     ehdr;
23*4882a593Smuzhiyun 
24*4882a593Smuzhiyun 	Elf_Scn		     *opdsec;
25*4882a593Smuzhiyun 	size_t		     opdidx;
26*4882a593Smuzhiyun 	GElf_Shdr	     opdshdr;
27*4882a593Smuzhiyun 
28*4882a593Smuzhiyun 	Elf_Scn		     *symtab;
29*4882a593Smuzhiyun 	GElf_Shdr	     symshdr;
30*4882a593Smuzhiyun 
31*4882a593Smuzhiyun 	Elf_Scn		     *dynsym;
32*4882a593Smuzhiyun 	size_t		     dynsym_idx;
33*4882a593Smuzhiyun 	GElf_Shdr	     dynshdr;
34*4882a593Smuzhiyun 
35*4882a593Smuzhiyun 	bool		     adjust_symbols;
36*4882a593Smuzhiyun 	bool		     is_64_bit;
37*4882a593Smuzhiyun #endif
38*4882a593Smuzhiyun };
39*4882a593Smuzhiyun 
40*4882a593Smuzhiyun int symsrc__init(struct symsrc *ss, struct dso *dso, const char *name, enum dso_binary_type type);
41*4882a593Smuzhiyun void symsrc__destroy(struct symsrc *ss);
42*4882a593Smuzhiyun 
43*4882a593Smuzhiyun bool symsrc__has_symtab(struct symsrc *ss);
44*4882a593Smuzhiyun bool symsrc__possibly_runtime(struct symsrc *ss);
45*4882a593Smuzhiyun 
46*4882a593Smuzhiyun #endif /* __PERF_SYMSRC_ */
47