47 lines
		
	
	
		
			907 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			907 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /* 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_ */
 |