Commit 6ae98ba6 authored by He Kuang's avatar He Kuang Committed by Arnaldo Carvalho de Melo

perf symbols: Store vdso buildid unconditionally

When unwinding callchains on a different machine, vdso info should be
available so the unwind process won't be interrupted if address falls
into vdso region. But in most cases, the addresses of sample events are
not in vdso range, the buildid of a zero hit vdso won't be stored into
perf.data.

This patch stores vdso buildid regardless of whether the vdso is hit or
not.
Signed-off-by: default avatarHe Kuang <hekuang@huawei.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Ekaterina Tumanova <tumanova@linux.vnet.ibm.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Kan Liang <kan.liang@intel.com>
Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Pekka Enberg <penberg@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1463042596-61703-3-git-send-email-hekuang@huawei.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent e3b03b6c
...@@ -256,7 +256,7 @@ static int machine__write_buildid_table(struct machine *machine, int fd) ...@@ -256,7 +256,7 @@ static int machine__write_buildid_table(struct machine *machine, int fd)
size_t name_len; size_t name_len;
bool in_kernel = false; bool in_kernel = false;
if (!pos->hit) if (!pos->hit && !dso__is_vdso(pos))
continue; continue;
if (dso__is_vdso(pos)) { if (dso__is_vdso(pos)) {
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include "auxtrace.h" #include "auxtrace.h"
#include "util.h" #include "util.h"
#include "debug.h" #include "debug.h"
#include "vdso.h"
char dso__symtab_origin(const struct dso *dso) char dso__symtab_origin(const struct dso *dso)
{ {
...@@ -1169,7 +1170,7 @@ bool __dsos__read_build_ids(struct list_head *head, bool with_hits) ...@@ -1169,7 +1170,7 @@ bool __dsos__read_build_ids(struct list_head *head, bool with_hits)
struct dso *pos; struct dso *pos;
list_for_each_entry(pos, head, node) { list_for_each_entry(pos, head, node) {
if (with_hits && !pos->hit) if (with_hits && !pos->hit && !dso__is_vdso(pos))
continue; continue;
if (pos->has_build_id) { if (pos->has_build_id) {
have_build_id = true; have_build_id = true;
......
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