On Tuesday 22 November 2016 02:19 PM, Ravi Bangoria wrote: > Hi Anton, > > On Tuesday 22 November 2016 02:10 PM, Ravi Bangoria wrote: >> perf report (with TUI) exits with error when it finds a sample of zero >> length symbol(i.e. addr == sym->start == sym->end). Actually these are >> valid samples. Don't exit TUI and show report with such symbols. >> >> Link: https://lkml.org/lkml/2016/10/8/189 > This will solve 2nd issue. > > 3rd doesn't sound simple to fix.
Sorry, I mean 1st doesn't sound ... > I tried to fix it by replacing pr_debug to > pr_err when addr is out of symbol address range. But error message will > get overwritten every time when subsequent pr_err gets executed. > > Arnaldo, any suggestions? > > -Ravi > >> Reported-by: Anton Blanchard <an...@samba.org> >> Signed-off-by: Ravi Bangoria <ravi.bango...@linux.vnet.ibm.com> >> --- >> tools/perf/util/annotate.c | 3 ++- >> 1 file changed, 2 insertions(+), 1 deletion(-) >> >> diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c >> index aeb5a44..430d039 100644 >> --- a/tools/perf/util/annotate.c >> +++ b/tools/perf/util/annotate.c >> @@ -593,7 +593,8 @@ static int __symbol__inc_addr_samples(struct symbol >> *sym, struct map *map, >> >> pr_debug3("%s: addr=%#" PRIx64 "\n", __func__, map->unmap_ip(map, >> addr)); >> >> - if (addr < sym->start || addr >= sym->end) { >> + if ((addr < sym->start || addr >= sym->end) && >> + (addr != sym->end || sym->start != sym->end)) { >> pr_debug("%s(%d): ERANGE! sym->name=%s, start=%#" PRIx64 ", >> addr=%#" PRIx64 ", end=%#" PRIx64 "\n", >> __func__, __LINE__, sym->name, sym->start, addr, >> sym->end); >> return -ERANGE;