Re: [PATCH v3 3/7 UPDATE] perf tools: Add option for the path of buildid dsos under symfs

From: Hekuang
Date: Sun May 15 2016 - 21:32:32 EST




å 2016/5/14 22:43, David Ahern åé:
On 5/14/16 2:19 AM, He Kuang wrote:
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. For
the reason that to have every single file opened by perf is relative
to symfs dirctory, perf skips the buildid dir if symfs is given.

This patch references the buildid dir under symfs if '--symfs' is
used, and adds new option '--dso-prefix' to specify the subdir path in
symfs which contains the buildid dsos.

In the previous version of this patch you just wanted to drop the symfs check. That means there is a path that perf searches for buildid files and reading it worked for you. Why is adding symsfs to that path not enough? ie., Why do you need to specify a different location under the symfs?

In previous patch, I use 'perf buildid-cache -a' to add vdso
binary into the HOST buildid dir.

Currently, $(BUILDID_ROOT)/.debug/.buildid has a directory
structure organized by the buildid value, like this:

.build-id
- 3a
| e5ba6d4e532ad529e43ccf1ce1ddf8a64a4fdd
- 84
dbd75729adba57cc42f5544b25de571c0c8731

perf searchs for buildid binaries by the buildid value.

And symfs is a normal file tree and perf searchs for binaryies
by the file name.

lib
- libc.so
- ld.so

Tt's inappropriate to add symfs to .build-id dir becuase they
have different dirctory structure and perf searchs for them by
differnt ways.

So in this patch I add .buildid to symfs and got dirctory tree
like this:

symfs
- $(DSO_PREFIX)
- .build-id
- 3a
- 84
- libc.so
- ld.so

Thanks