perf symbols: Introduce ELF counterparts to symbol_type__is_a
For selecting the right types of symbols in ELF symtabs. Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Frédéric Weisbecker <fweisbec@gmail.com> Cc: Mike Galbraith <efault@gmx.de> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Paul Mackerras <paulus@samba.org> LKML-Reference: <1260550239-5372-3-git-send-email-acme@infradead.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
		
					parent
					
						
							
								6893d4ee67
							
						
					
				
			
			
				commit
				
					
						d45868d38c
					
				
			
		
					 1 changed files with 22 additions and 2 deletions
				
			
		|  | @ -751,6 +751,26 @@ out: | |||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| static bool elf_sym__is_a(GElf_Sym *self, enum map_type type) | ||||
| { | ||||
| 	switch (type) { | ||||
| 	case MAP__FUNCTION: | ||||
| 		return elf_sym__is_function(self); | ||||
| 	default: | ||||
| 		return false; | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| static bool elf_sec__is_a(GElf_Shdr *self, Elf_Data *secstrs, enum map_type type) | ||||
| { | ||||
| 	switch (type) { | ||||
| 	case MAP__FUNCTION: | ||||
| 		return elf_sec__is_text(self, secstrs); | ||||
| 	default: | ||||
| 		return false; | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| static int dso__load_sym(struct dso *self, struct map *map, | ||||
| 			 struct map_groups *mg, const char *name, int fd, | ||||
| 			 symbol_filter_t filter, int kernel, int kmodule) | ||||
|  | @ -825,7 +845,7 @@ static int dso__load_sym(struct dso *self, struct map *map, | |||
| 		int is_label = elf_sym__is_label(&sym); | ||||
| 		const char *section_name; | ||||
| 
 | ||||
| 		if (!is_label && !elf_sym__is_function(&sym)) | ||||
| 		if (!is_label && !elf_sym__is_a(&sym, map->type)) | ||||
| 			continue; | ||||
| 
 | ||||
| 		sec = elf_getscn(elf, sym.st_shndx); | ||||
|  | @ -834,7 +854,7 @@ static int dso__load_sym(struct dso *self, struct map *map, | |||
| 
 | ||||
| 		gelf_getshdr(sec, &shdr); | ||||
| 
 | ||||
| 		if (is_label && !elf_sec__is_text(&shdr, secstrs)) | ||||
| 		if (is_label && !elf_sec__is_a(&shdr, secstrs, map->type)) | ||||
| 			continue; | ||||
| 
 | ||||
| 		elf_name = elf_sym__name(&sym, symstrs); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Arnaldo Carvalho de Melo
				Arnaldo Carvalho de Melo