Commit 28071f51 authored by Milian Wolff's avatar Milian Wolff Committed by Ingo Molnar

perf report: Always honor callchain order for inlined nodes

So far, the inlined nodes where only reversed when we built perf
against libbfd. If that was not available, the addr2line fallback
code path was missing the inline_list__reverse call.

Now we always add the nodes in the correct order within
inline_list__append. This removes the need to reverse the list
and also ensures that all callers construct the list in the right
order.
Signed-off-by: default avatarMilian Wolff <milian.wolff@kdab.com>
Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Yao Jin <yao.jin@linux.intel.com>
Cc: kernel-team@lge.com
Link: http://lkml.kernel.org/r/20170524062129.32529-6-namhyung@kernel.orgSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
parent 325fbff5
...@@ -56,7 +56,10 @@ static int inline_list__append(char *filename, char *funcname, int line_nr, ...@@ -56,7 +56,10 @@ static int inline_list__append(char *filename, char *funcname, int line_nr,
} }
} }
list_add_tail(&ilist->list, &node->val); if (callchain_param.order == ORDER_CALLEE)
list_add_tail(&ilist->list, &node->val);
else
list_add(&ilist->list, &node->val);
return 0; return 0;
} }
...@@ -200,14 +203,6 @@ static void addr2line_cleanup(struct a2l_data *a2l) ...@@ -200,14 +203,6 @@ static void addr2line_cleanup(struct a2l_data *a2l)
#define MAX_INLINE_NEST 1024 #define MAX_INLINE_NEST 1024
static void inline_list__reverse(struct inline_node *node)
{
struct inline_list *ilist, *n;
list_for_each_entry_safe_reverse(ilist, n, &node->val, list)
list_move_tail(&ilist->list, &node->val);
}
static int addr2line(const char *dso_name, u64 addr, static int addr2line(const char *dso_name, u64 addr,
char **file, unsigned int *line, struct dso *dso, char **file, unsigned int *line, struct dso *dso,
bool unwind_inlines, struct inline_node *node) bool unwind_inlines, struct inline_node *node)
...@@ -250,11 +245,6 @@ static int addr2line(const char *dso_name, u64 addr, ...@@ -250,11 +245,6 @@ static int addr2line(const char *dso_name, u64 addr,
ret = 1; ret = 1;
} }
} }
if ((node != NULL) &&
(callchain_param.order != ORDER_CALLEE)) {
inline_list__reverse(node);
}
} }
if (file) { if (file) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment