Messages in this thread | | | Date | Wed, 12 Nov 2014 09:59:14 +0100 | From | Jiri Olsa <> | Subject | Re: [PATCH 2/2] perf tools: Construct LBR call chain |
| |
On Thu, Nov 06, 2014 at 09:58:06AM -0500, kan.liang@intel.com wrote:
SNIP
> > -static void callchain__printf(struct perf_sample *sample) > +static void callchain__printf(struct perf_evsel *evsel, > + struct perf_sample *sample) > { > unsigned int i; > + u64 total_nr, callchain_nr; > + int lbr = 0; > > - printf("... chain: nr:%" PRIu64 "\n", sample->callchain->nr); > + total_nr = callchain_nr = sample->callchain->nr; > > - for (i = 0; i < sample->callchain->nr; i++) > + if (evsel->attr.branch_sample_type & PERF_SAMPLE_BRANCH_CALL_STACK) > + lbr = 1; > + > + if (lbr) { > + struct branch_stack *lbr_stack = sample->branch_stack; > + > + for (i = 0; i < callchain_nr; i++) { > + if (sample->callchain->ips[i] == PERF_CONTEXT_USER) > + break; > + } > + > + if (i != callchain_nr) { > + total_nr = i + 1 + lbr_stack->nr; > + callchain_nr = i + 1; > + } > + } > + > + printf("... chain: nr:%" PRIu64 "\n", total_nr); > + > + for (i = 0; i < callchain_nr + 1; i++) > printf("..... %2d: %016" PRIx64 "\n", > i, sample->callchain->ips[i]);
so if there's lbr callstack info we dont display user stack part from standard callchain? I think the dump code should dump out all the info..
jirka
| |