On Sun, Feb 21, 2016 at 11:22:36PM +0900, Namhyung Kim wrote: > Normally the hist entry's srcline and/or srcfile is set during sorting. > However sometime it's possible to a hist entry's srcline is not set yet > after the sorting. This is because the entry is so unique and other > sort keys already make it distinct. Then the srcline/file sort didn't > have a chance to be called during the sorting. In that case it has NULL > srcline/srcfile field and shows nothing. > > Before: > > $ perf report -s comm,sym,srcline > ... > Overhead Command Symbol > ----------------------------------------------------------------- > 34.42% swapper [k] intel_idle intel_idle.c:0 > 2.44% perf [.] __poll_nocancel (null) > 1.70% gnome-shell [k] fw_domains_get (null) > 1.04% Xorg [k] sock_poll (null) > > After: > > 34.42% swapper [k] intel_idle intel_idle.c:0 > 2.44% perf [.] __poll_nocancel .:0 > 1.70% gnome-shell [k] fw_domains_get fw_domains_get+42 > 1.04% Xorg [k] sock_poll socket.c:0 > > Signed-off-by: Namhyung Kim <namhy...@kernel.org> > --- > tools/perf/util/sort.c | 16 ++++++++++++++++ > 1 file changed, 16 insertions(+) > > diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c > index 7daea71691df..6808d73164b5 100644 > --- a/tools/perf/util/sort.c > +++ b/tools/perf/util/sort.c > @@ -315,6 +315,16 @@ sort__srcline_cmp(struct hist_entry *left, struct > hist_entry *right) > static int hist_entry__srcline_snprintf(struct hist_entry *he, char *bf, > size_t size, unsigned int width) > { > + if (!he->srcline) { > + if (!he->ms.map) > + he->srcline = SRCLINE_UNKNOWN; > + else { > + struct map *map = he->ms.map; > + he->srcline = get_srcline(map->dso, > + map__rip_2objdump(map, he->ip), > + he->ms.sym, true); > + } > + }
could you put this into the function and use it also within sort__srcline_cmp? it's already 3 places duplicating the same code thanks, jirka