diff options
Diffstat (limited to 'tools/perf/util/symbol-elf.c')
| -rw-r--r-- | tools/perf/util/symbol-elf.c | 37 | 
1 files changed, 14 insertions, 23 deletions
| diff --git a/tools/perf/util/symbol-elf.c b/tools/perf/util/symbol-elf.c index 53bb5f59ec58..475d88d0a1c9 100644 --- a/tools/perf/util/symbol-elf.c +++ b/tools/perf/util/symbol-elf.c @@ -38,7 +38,7 @@ static inline char *bfd_demangle(void __maybe_unused *v,  #endif  #ifndef HAVE_ELF_GETPHDRNUM_SUPPORT -int elf_getphdrnum(Elf *elf, size_t *dst) +static int elf_getphdrnum(Elf *elf, size_t *dst)  {  	GElf_Ehdr gehdr;  	GElf_Ehdr *ehdr; @@ -1271,8 +1271,6 @@ out_close:  static int kcore__init(struct kcore *kcore, char *filename, int elfclass,  		       bool temp)  { -	GElf_Ehdr *ehdr; -  	kcore->elfclass = elfclass;  	if (temp) @@ -1289,9 +1287,7 @@ static int kcore__init(struct kcore *kcore, char *filename, int elfclass,  	if (!gelf_newehdr(kcore->elf, elfclass))  		goto out_end; -	ehdr = gelf_getehdr(kcore->elf, &kcore->ehdr); -	if (!ehdr) -		goto out_end; +	memset(&kcore->ehdr, 0, sizeof(GElf_Ehdr));  	return 0; @@ -1348,23 +1344,18 @@ static int kcore__copy_hdr(struct kcore *from, struct kcore *to, size_t count)  static int kcore__add_phdr(struct kcore *kcore, int idx, off_t offset,  			   u64 addr, u64 len)  { -	GElf_Phdr gphdr; -	GElf_Phdr *phdr; - -	phdr = gelf_getphdr(kcore->elf, idx, &gphdr); -	if (!phdr) -		return -1; - -	phdr->p_type	= PT_LOAD; -	phdr->p_flags	= PF_R | PF_W | PF_X; -	phdr->p_offset	= offset; -	phdr->p_vaddr	= addr; -	phdr->p_paddr	= 0; -	phdr->p_filesz	= len; -	phdr->p_memsz	= len; -	phdr->p_align	= page_size; - -	if (!gelf_update_phdr(kcore->elf, idx, phdr)) +	GElf_Phdr phdr = { +		.p_type		= PT_LOAD, +		.p_flags	= PF_R | PF_W | PF_X, +		.p_offset	= offset, +		.p_vaddr	= addr, +		.p_paddr	= 0, +		.p_filesz	= len, +		.p_memsz	= len, +		.p_align	= page_size, +	}; + +	if (!gelf_update_phdr(kcore->elf, idx, &phdr))  		return -1;  	return 0; |