Re: [PATCH v3 2/7] perf tools: Store vdso buildid unconditionally

From: Arnaldo Carvalho de Melo
Date: Thu May 12 2016 - 09:10:03 EST


Em Thu, May 12, 2016 at 08:43:11AM +0000, He Kuang escreveu:
> When unwinding callchains on a different machine, vdso info should be
> provided 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.

Looks ok, applied.

> Signed-off-by: He Kuang <hekuang@xxxxxxxxxx>
> ---
> tools/perf/util/build-id.c | 2 +-
> tools/perf/util/dso.c | 3 ++-
> 2 files changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/tools/perf/util/build-id.c b/tools/perf/util/build-id.c
> index 0573c2e..bdc7580 100644
> --- a/tools/perf/util/build-id.c
> +++ b/tools/perf/util/build-id.c
> @@ -256,7 +256,7 @@ static int machine__write_buildid_table(struct machine *machine, int fd)
> size_t name_len;
> bool in_kernel = false;
>
> - if (!pos->hit)
> + if (!pos->hit && !dso__is_vdso(pos))
> continue;
>
> if (dso__is_vdso(pos)) {
> diff --git a/tools/perf/util/dso.c b/tools/perf/util/dso.c
> index 8e639543..b39b80c 100644
> --- a/tools/perf/util/dso.c
> +++ b/tools/perf/util/dso.c
> @@ -7,6 +7,7 @@
> #include "auxtrace.h"
> #include "util.h"
> #include "debug.h"
> +#include "vdso.h"
>
> char dso__symtab_origin(const struct dso *dso)
> {
> @@ -1169,7 +1170,7 @@ bool __dsos__read_build_ids(struct list_head *head, bool with_hits)
> struct dso *pos;
>
> list_for_each_entry(pos, head, node) {
> - if (with_hits && !pos->hit)
> + if (with_hits && !pos->hit && !dso__is_vdso(pos))
> continue;
> if (pos->has_build_id) {
> have_build_id = true;
> --
> 1.8.5.2