Messages in this thread | | | Date | Sun, 14 Aug 2016 22:26:39 +0530 | From | "Naveen N. Rao" <> | Subject | Re: [PATCH v2] perf symbols: Fix annotation of objects with debuginfo files |
| |
On 2016/08/13 11:55AM, Anton Blanchard wrote: > From: Anton Blanchard <anton@samba.org> > > Commit 73cdf0c6ea9c ("perf symbols: Record text offset in dso > to calculate objdump address") started storing the offset of > the text section for all DSOs: > > if (elf_section_by_name(elf, &ehdr, &tshdr, ".text", NULL)) > dso->text_offset = tshdr.sh_addr - tshdr.sh_offset; > > Unfortunately this breaks debuginfo files, because we need to calculate > the offset of the text section in the associated executable file. As a > result perf annotate returns junk for all debuginfo files. > > Fix this by using runtime_ss->elf which should point at the executable > when parsing a debuginfo file. > > Cc: stable@vger.kernel.org # v4.6+ > Fixes: 73cdf0c6ea9c ("perf symbols: Record text offset in dso to calculate objdump address") > Signed-off-by: Anton Blanchard <anton@samba.org> > --- > > v2: Fix from Naveen > > diff --git a/tools/perf/util/symbol-elf.c b/tools/perf/util/symbol-elf.c > index a34321e..a811c13 100644 > --- a/tools/perf/util/symbol-elf.c > +++ b/tools/perf/util/symbol-elf.c > @@ -837,7 +837,8 @@ int dso__load_sym(struct dso *dso, struct map *map, > sec = syms_ss->symtab; > shdr = syms_ss->symshdr; > > - if (elf_section_by_name(elf, &ehdr, &tshdr, ".text", NULL)) > + if (elf_section_by_name(runtime_ss->elf, &runtime_ss->ehdr, &tshdr, > + ".text", NULL)) > dso->text_offset = tshdr.sh_addr - tshdr.sh_offset; > > if (runtime_ss->opdsec)
Reviewed-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
Thanks Anton! - Naveen
| |