Re: [PATCH v3 2/2] Support interactive annotation of code without symbols

From: Jin, Yao
Date: Mon Feb 24 2020 - 10:53:35 EST




On 2/24/2020 10:04 PM, Ravi Bangoria wrote:


On 2/24/20 7:21 PM, Jiri Olsa wrote:
On Mon, Feb 24, 2020 at 06:55:12PM +0530, Ravi Bangoria wrote:
Hi Jin,

On 2/24/20 7:52 AM, Jin Yao wrote:
For perf report on stripped binaries it is currently impossible to do
annotation. The annotation state is all tied to symbols, but there are
either no symbols, or symbols are not covering all the code.

We should support the annotation functionality even without symbols.

This patch fakes a symbol and the symbol name is the string of address.
After that, we just follow current annotation working flow.

For example,

1. perf report

Overhead Command Shared Object Symbol
ÂÂÂ 20.67%Â divÂÂÂÂÂ libc-2.27.soÂÂÂÂÂ [.] __random_r
ÂÂÂ 17.29%Â divÂÂÂÂÂ libc-2.27.soÂÂÂÂÂ [.] __random
ÂÂÂ 10.59%Â divÂÂÂÂÂ divÂÂÂÂÂÂÂÂÂÂÂÂÂÂ [.] 0x0000000000000628
ÂÂÂÂ 9.25%Â divÂÂÂÂÂ divÂÂÂÂÂÂÂÂÂÂÂÂÂÂ [.] 0x0000000000000612
ÂÂÂÂ 6.11%Â divÂÂÂÂÂ divÂÂÂÂÂÂÂÂÂÂÂÂÂÂ [.] 0x0000000000000645

2. Select the line of "10.59%Â divÂÂÂÂÂ divÂÂÂÂÂÂÂÂÂÂÂÂÂÂ [.] 0x0000000000000628" and ENTER.

Annotate 0x0000000000000628
Zoom into div thread
Zoom into div DSO (use the 'k' hotkey to zoom directly into the kernel)
Browse map details
Run scripts for samples of symbol [0x0000000000000628]
Run scripts for all samples
Switch to another data file in PWD
Exit

3. Select the "Annotate 0x0000000000000628" and ENTER.

Percentâ
ÂÂÂÂÂÂÂÂ â
ÂÂÂÂÂÂÂÂ â
 â Disassembly of section .text:
ÂÂÂÂÂÂÂÂ â
 â 0000000000000628 <.text+0x68>:
 â divsd %xmm4,%xmm0
 â divsd %xmm3,%xmm1
 â movsd (%rsp),%xmm2
 â addsd %xmm1,%xmm0
 â addsd %xmm2,%xmm0
 â movsd %xmm0,(%rsp)

Now we can see the dump of object starting from 0x628.

If I press 'a' on address, it's not annotating. But if I annotate
by pressing enter, like you explained, it works. Is it intentional?

I saw that too, but I thought it's unrelated issue,
because we played with that just recently

if you go through the 'enter' way and back, then the
next time 'a' works ;-)

Yes.

I liked the series so I was trying out the patches. Just reporting issues I found...

jump/call arrows are also screwed up.. Like jump instruction is showing call arrows.
But these all are minor issues and can be fixed later on. I don't mind ;)

Ravi


Some jumps will show arrow '->". For example,

â jne 120

Yes, we can check and fix that later.

Thanks
Jin Yao