Re: [PATCH] perf annotate: Fix objdump comment parsing for Intel mov dissassembly

From: Ravi Bangoria
Date: Wed Nov 29 2017 - 08:23:41 EST




On 11/28/2017 01:26 PM, Thomas Richter wrote:
> The command 'perf annotate' parses the output of objdump and also
> investigates the comments produced by objdump. For example the
> output of objdump produces (on x86):
>
> 23eee: 4c 8b 3d 13 01 21 00 mov 0x210113(%rip),%r15
> # 234008 <stderr@@GLIBC_2.2.5+0x9a8>
>
> and the function mov__parse() is called to investigate the complete
> line. Mov__parse() breaks this line into several parts and finally
> calls function comment__symbol() to parse the data after the comment
> character '#'. Comment__symbol() expects a hexadecimal address followed
> by a symbol in '<' and '>' brackets.
>
> However the 2nd parameter given to function comment__symbol()
> always points to the comment character '#'. The address parsing
> always returns 0 because the character '#' is not a digit and
> strtoull() fails without being noticed.
>
> Fix this by advancing the second parameter to function comment__symbol()
> by one byte before invocation and add an error check after strtoull()
> has been called.

Yeah, looks like it fails to get correct value in 'addrp'.

Can you please show the difference in perf annotate output before
and after patch.

Thanks,
Ravi