Re: [PATCH 1/2] perf: support specify vdso path in cmdline

From: duchangbin
Date: Thu Jun 13 2024 - 23:55:37 EST


On Thu, Jun 13, 2024 at 01:19:20PM +0300, Adrian Hunter wrote:
> On 13/06/24 12:49, duchangbin wrote:
> > On Thu, Jun 13, 2024 at 11:23:26AM +0300, Adrian Hunter wrote:
> >> On 13/06/24 09:35, Changbin Du wrote:
> >>> The vdso dumped from process memory (in buildid-cache) lacks debugging
> >>> info. To annotate vdso symbols with source lines we need specify a
> >>> debugging version.
> >>>
> >>> For x86, we can find them from your local build as
> >>> arch/x86/entry/vdso/vdso{32,64}.so.dbg. Or they may reside in
> >>> /lib/modules/<version>/vdso/vdso{32,64}.so on Ubuntu. But notice that
> >>> the buildid has to match.
> >>>
> >>> $ sudo perf record -a
> >>> $ sudo perf report --objdump=llvm-objdump \
> >>> --vdso arch/x86/entry/vdso/vdso64.so.dbg,arch/x86/entry/vdso/vdso32.so.dbg
> >>>
> >>> When doing cross platform analysis, we also need specify the vdso path if
> >>> we are interested in its symbols.
> >>
> >> We already have logic to find debug files, and to deal with a symbol source
> >> (syms_ss) and runtime symbol source (runtime_ss).
> >>
> >> Can't we make that work transparently for vdso so that the user does
> >> not have to.
> >>
> > For Ubuntu, we can find the debug files of vdso in
> > /lib/modules/<version>/vdso/vdso{32,64}.so. These two are debug version.
> >
> > For local build, seems vdso{32,64}.so.dbg are not installed in /lib/modules/ nor
> > other locations.
>
> Isn't there /lib/modules/<version>/build symbolic link to follow?
>
hm, we can try /lib/modules/<version>/build/arch/x86/entry/vdso/vdso*.so.dbg.
Other arches are similar.

So, we will try these pathes internally. And keep '--vdso' if someone really
want a special path. (just like vmlinux)

--
Cheers,
Changbin Du