2013-09-17 12:02:31

by Jean Pihet

[permalink] [raw]
Subject: perf: cannot resolve kernel symbols

Hi,

I am running the perf record and report commands, which are running OK
but I do not get any kernel symbol resolved when using a built and
installed kernel.
Using the distro installed kernel is OK though.
The setup is: Marvell ARMv7 quad core, Linaro Ubuntu release.

Here are the commands in use:
- perf record -g dwarf -- stress --cpu 2 --io 2 --vm 2 --timeout 1s
- perf report -vvv

With a vmlinux found at /lib/modules/<version>/build I get the
following in the trace output:
...
Looking at the vmlinux_path (6 entries long)
Using /lib/modules/3.11.0-00003-g0d4d4a1/build/vmlinux for symbols
...
dso: [kernel.kallsyms]
(/lib/modules/3.11.0-00003-g0d4d4a1/build/vmlinux, Functions, loaded,
0000000000000000000000000000000000000000)
c00081c0-c00081c3 g asm_do_IRQ
...
dso: [kernel.kallsyms].head.text ([kernel.kallsyms], Functions, loaded, 00000000
00000000000000000000000000000000)
c0008000-c0008077 g stext
c0008000-c0008000 g _text
c0008084-c0008127 l __create_page_tables
...
dso: [kernel.kallsyms].init.text ([kernel.kallsyms], Functions, loaded, 00000000
00000000000000000000000000000000)
c04f3260-c04f32af l __fixup_smp


Without any vmlinux found I get the following:
...
Looking at the vmlinux_path (6 entries long)
Using /proc/kallsyms for symbols
...
dso: [kernel.kallsyms] ([kernel.kallsyms], Functions, loaded,
0000000000000000000000000000000000000000)
0-beffffff l __vectors_start
dso: [kernel.kallsyms] ([kernel.kallsyms], Variables, NOT loaded,
0000000000000000000000000000000000000000)
dso: stress (/usr/bin/stress, Functions, loaded,
bdf57306ab106fb0ce9835c95dae5b173f238b61)
...


In any case the symbols are not resolved although vmlinux contains
symbols and /proc/kallsyms is accessible and working correctly.
Any idea on where to look at? I guess the problem is in the kernel installation.

Thx & regards,
Jean


2013-09-19 13:24:59

by Jean Pihet

[permalink] [raw]
Subject: Re: perf: cannot resolve kernel symbols

Hi,

Ping on this issue. Any idea or pointer.

Cheers,
Jean

On 17 September 2013 14:02, Jean Pihet <[email protected]> wrote:
> Hi,
>
> I am running the perf record and report commands, which are running OK
> but I do not get any kernel symbol resolved when using a built and
> installed kernel.
> Using the distro installed kernel is OK though.
> The setup is: Marvell ARMv7 quad core, Linaro Ubuntu release.
>
> Here are the commands in use:
> - perf record -g dwarf -- stress --cpu 2 --io 2 --vm 2 --timeout 1s
> - perf report -vvv
>
> With a vmlinux found at /lib/modules/<version>/build I get the
> following in the trace output:
> ...
> Looking at the vmlinux_path (6 entries long)
> Using /lib/modules/3.11.0-00003-g0d4d4a1/build/vmlinux for symbols
> ...
> dso: [kernel.kallsyms]
> (/lib/modules/3.11.0-00003-g0d4d4a1/build/vmlinux, Functions, loaded,
> 0000000000000000000000000000000000000000)
> c00081c0-c00081c3 g asm_do_IRQ
> ...
> dso: [kernel.kallsyms].head.text ([kernel.kallsyms], Functions, loaded, 00000000
> 00000000000000000000000000000000)
> c0008000-c0008077 g stext
> c0008000-c0008000 g _text
> c0008084-c0008127 l __create_page_tables
> ...
> dso: [kernel.kallsyms].init.text ([kernel.kallsyms], Functions, loaded, 00000000
> 00000000000000000000000000000000)
> c04f3260-c04f32af l __fixup_smp
>
>
> Without any vmlinux found I get the following:
> ...
> Looking at the vmlinux_path (6 entries long)
> Using /proc/kallsyms for symbols
> ...
> dso: [kernel.kallsyms] ([kernel.kallsyms], Functions, loaded,
> 0000000000000000000000000000000000000000)
> 0-beffffff l __vectors_start
> dso: [kernel.kallsyms] ([kernel.kallsyms], Variables, NOT loaded,
> 0000000000000000000000000000000000000000)
> dso: stress (/usr/bin/stress, Functions, loaded,
> bdf57306ab106fb0ce9835c95dae5b173f238b61)
> ...
>
>
> In any case the symbols are not resolved although vmlinux contains
> symbols and /proc/kallsyms is accessible and working correctly.
> Any idea on where to look at? I guess the problem is in the kernel installation.
>
> Thx & regards,
> Jean

2013-09-23 06:58:33

by Namhyung Kim

[permalink] [raw]
Subject: Re: perf: cannot resolve kernel symbols

Hi Jean,

On Thu, 19 Sep 2013 15:24:56 +0200, Jean Pihet wrote:
> Hi,
>
> Ping on this issue. Any idea or pointer.

Did you build perf without libelf?

Thanks,
Namhyung

>
> Cheers,
> Jean
>
> On 17 September 2013 14:02, Jean Pihet <[email protected]> wrote:
>> Hi,
>>
>> I am running the perf record and report commands, which are running OK
>> but I do not get any kernel symbol resolved when using a built and
>> installed kernel.
>> Using the distro installed kernel is OK though.
>> The setup is: Marvell ARMv7 quad core, Linaro Ubuntu release.
>>
>> Here are the commands in use:
>> - perf record -g dwarf -- stress --cpu 2 --io 2 --vm 2 --timeout 1s
>> - perf report -vvv
>>
>> With a vmlinux found at /lib/modules/<version>/build I get the
>> following in the trace output:
>> ...
>> Looking at the vmlinux_path (6 entries long)
>> Using /lib/modules/3.11.0-00003-g0d4d4a1/build/vmlinux for symbols
>> ...
>> dso: [kernel.kallsyms]
>> (/lib/modules/3.11.0-00003-g0d4d4a1/build/vmlinux, Functions, loaded,
>> 0000000000000000000000000000000000000000)
>> c00081c0-c00081c3 g asm_do_IRQ
>> ...
>> dso: [kernel.kallsyms].head.text ([kernel.kallsyms], Functions, loaded, 00000000
>> 00000000000000000000000000000000)
>> c0008000-c0008077 g stext
>> c0008000-c0008000 g _text
>> c0008084-c0008127 l __create_page_tables
>> ...
>> dso: [kernel.kallsyms].init.text ([kernel.kallsyms], Functions, loaded, 00000000
>> 00000000000000000000000000000000)
>> c04f3260-c04f32af l __fixup_smp
>>
>>
>> Without any vmlinux found I get the following:
>> ...
>> Looking at the vmlinux_path (6 entries long)
>> Using /proc/kallsyms for symbols
>> ...
>> dso: [kernel.kallsyms] ([kernel.kallsyms], Functions, loaded,
>> 0000000000000000000000000000000000000000)
>> 0-beffffff l __vectors_start
>> dso: [kernel.kallsyms] ([kernel.kallsyms], Variables, NOT loaded,
>> 0000000000000000000000000000000000000000)
>> dso: stress (/usr/bin/stress, Functions, loaded,
>> bdf57306ab106fb0ce9835c95dae5b173f238b61)
>> ...
>>
>>
>> In any case the symbols are not resolved although vmlinux contains
>> symbols and /proc/kallsyms is accessible and working correctly.
>> Any idea on where to look at? I guess the problem is in the kernel installation.
>>
>> Thx & regards,
>> Jean

2013-09-23 07:43:35

by Jean Pihet

[permalink] [raw]
Subject: Re: perf: cannot resolve kernel symbols

Hi Namhyung,

On 23 September 2013 08:58, Namhyung Kim <[email protected]> wrote:
> Hi Jean,
>
> On Thu, 19 Sep 2013 15:24:56 +0200, Jean Pihet wrote:
>> Hi,
>>
>> Ping on this issue. Any idea or pointer.
>
> Did you build perf without libelf?
no, libelf is linked to the binary.
What is weird is that the same perf binary works ok with the distro
installed kernel and not with the self built and installed one.
I suspect something with the entries in ~/.debug/.build_id and
~/.debug/[kernel.kallsyms].

Thanks,
Jean

>
> Thanks,
> Namhyung
>
>>
>> Cheers,
>> Jean
>>
>> On 17 September 2013 14:02, Jean Pihet <[email protected]> wrote:
>>> Hi,
>>>
>>> I am running the perf record and report commands, which are running OK
>>> but I do not get any kernel symbol resolved when using a built and
>>> installed kernel.
>>> Using the distro installed kernel is OK though.
>>> The setup is: Marvell ARMv7 quad core, Linaro Ubuntu release.
>>>
>>> Here are the commands in use:
>>> - perf record -g dwarf -- stress --cpu 2 --io 2 --vm 2 --timeout 1s
>>> - perf report -vvv
>>>
>>> With a vmlinux found at /lib/modules/<version>/build I get the
>>> following in the trace output:
>>> ...
>>> Looking at the vmlinux_path (6 entries long)
>>> Using /lib/modules/3.11.0-00003-g0d4d4a1/build/vmlinux for symbols
>>> ...
>>> dso: [kernel.kallsyms]
>>> (/lib/modules/3.11.0-00003-g0d4d4a1/build/vmlinux, Functions, loaded,
>>> 0000000000000000000000000000000000000000)
>>> c00081c0-c00081c3 g asm_do_IRQ
>>> ...
>>> dso: [kernel.kallsyms].head.text ([kernel.kallsyms], Functions, loaded, 00000000
>>> 00000000000000000000000000000000)
>>> c0008000-c0008077 g stext
>>> c0008000-c0008000 g _text
>>> c0008084-c0008127 l __create_page_tables
>>> ...
>>> dso: [kernel.kallsyms].init.text ([kernel.kallsyms], Functions, loaded, 00000000
>>> 00000000000000000000000000000000)
>>> c04f3260-c04f32af l __fixup_smp
>>>
>>>
>>> Without any vmlinux found I get the following:
>>> ...
>>> Looking at the vmlinux_path (6 entries long)
>>> Using /proc/kallsyms for symbols
>>> ...
>>> dso: [kernel.kallsyms] ([kernel.kallsyms], Functions, loaded,
>>> 0000000000000000000000000000000000000000)
>>> 0-beffffff l __vectors_start
>>> dso: [kernel.kallsyms] ([kernel.kallsyms], Variables, NOT loaded,
>>> 0000000000000000000000000000000000000000)
>>> dso: stress (/usr/bin/stress, Functions, loaded,
>>> bdf57306ab106fb0ce9835c95dae5b173f238b61)
>>> ...
>>>
>>>
>>> In any case the symbols are not resolved although vmlinux contains
>>> symbols and /proc/kallsyms is accessible and working correctly.
>>> Any idea on where to look at? I guess the problem is in the kernel installation.
>>>
>>> Thx & regards,
>>> Jean