Re: [PATCH v3 3/7] perf tools: Remove the logical that skip buildid cache if symfs is given

From: Hekuang
Date: Fri May 13 2016 - 03:21:20 EST


hi

å 2016/5/13 4:23, David Ahern åé:
On 5/12/16 7:09 AM, Arnaldo Carvalho de Melo wrote:
Em Thu, May 12, 2016 at 08:43:12AM +0000, He Kuang escreveu:
Symfs dir and buildid dir are two places that perf looks into for
symbols, currently, if symfs dir is given, buildid-cache is skipped.

In the cross-platform perf record/script scenario, we need vdsos in
buildid-cache dir and other libs in symfs dir at the same time. And
consider that the binaries indexed by buildid do not cause ambiguity,
this patch simply removes that logical.

Makes perfect sense, David, do you have any concern? Can I have your
Acked-by?

seems odd to me you want to look in the buildid-cache when a symfs is given. The point of symfs was "go look for everything under here."

I believe dso__load is going to hit DSO_BINARY_TYPE__BUILD_ID_CACHE before any of the others and there are probably cases where a stale cache entry would be hit before a build tree entry (e.g., symfs).

Build id entries recorded in perf.data reflect the current dso,
so if buildid is matched , how can it be a stale one?


What about putting the build id cache under the symfs? so instead of dropping the symfs check and it to the path for the build id cache.


I think your intention is to reference symbol files in one place
instead of two. So there're two possible approaches, one is all
in buildid-cache, but in practice, I found lots of binaries in
symfs even not contains valid buildid, so this way is not work.

The other one is all in symfs. It seems ok, but one problem I
should point out, with my test environment as an example, the
symfsdir is $(TARGET_ROOTFS),and by default buildid_dir is
$(TARGET_ROOTFS)/$(HOME)/.debug/, host perf does not know
$(HOME) folder in target and we should copy the debug folder
to $(TARGET_ROOTFS), which is readonly in the target. For me, it's
easier to use 'buildid-cache -a vdso-xxxx' to add that into host
buildid-cache than copy debug folder from $(HOME) to readonly
$(TARGET_ROOTFS).

Without the stale concern, I prefer the two places(buildid-dir in
host and target symfs) way.

Thanks.