perf annotate: Allow whitespace between insn operands

Message ID 20230612230026.3887586-1-namhyung@kernel.org
State New
Headers
Series perf annotate: Allow whitespace between insn operands |

Commit Message

Namhyung Kim June 12, 2023, 11 p.m. UTC
  The llvm-objdump adds a space between the operands while GNU objdump
does not.  Allow a space to handle the both.

In GNU objdump:

  Disassembly of section .text:                                      here
                                                                      |
  ffffffff81000000 <_stext>:                                          v
  ffffffff81000000:	48 8d 25 51 1f 40 01 	lea    0x1401f51(%rip),%rsp
  ffffffff81000007:	e8 d4 00 00 00       	call   ffffffff810000e0 <verify_cpu>
  ffffffff8100000c:	48 8d 3d ed ff ff ff 	lea    -0x13(%rip),%rdi

In llvm-objdump:

  Disassembly of section .text:                                      here
                                                                       |
  ffffffff81000000 <startup_64>:                                       v
  ffffffff81000000: 48 8d 25 51 1f 40 01 	leaq	20979537(%rip), %rsp
  ffffffff81000007: e8 d4 00 00 00       	callq	0xffffffff810000e0 <verify_cpu>
  ffffffff8100000c: 48 8d 3d ed ff ff ff 	leaq	-19(%rip), %rdi

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
 tools/perf/util/annotate.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Ian Rogers June 12, 2023, 11:55 p.m. UTC | #1
On Mon, Jun 12, 2023 at 4:00 PM Namhyung Kim <namhyung@kernel.org> wrote:
>
> The llvm-objdump adds a space between the operands while GNU objdump
> does not.  Allow a space to handle the both.
>
> In GNU objdump:
>
>   Disassembly of section .text:                                      here
>                                                                       |
>   ffffffff81000000 <_stext>:                                          v
>   ffffffff81000000:     48 8d 25 51 1f 40 01    lea    0x1401f51(%rip),%rsp
>   ffffffff81000007:     e8 d4 00 00 00          call   ffffffff810000e0 <verify_cpu>
>   ffffffff8100000c:     48 8d 3d ed ff ff ff    lea    -0x13(%rip),%rdi
>
> In llvm-objdump:
>
>   Disassembly of section .text:                                      here
>                                                                        |
>   ffffffff81000000 <startup_64>:                                       v
>   ffffffff81000000: 48 8d 25 51 1f 40 01        leaq    20979537(%rip), %rsp
>   ffffffff81000007: e8 d4 00 00 00              callq   0xffffffff810000e0 <verify_cpu>
>   ffffffff8100000c: 48 8d 3d ed ff ff ff        leaq    -19(%rip), %rdi
>
> Signed-off-by: Namhyung Kim <namhyung@kernel.org>

Acked-by: Ian Rogers <irogers@google.com>

Thanks,
Ian

> ---
>  tools/perf/util/annotate.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
> index 9171102dd3ad..3eab6c29eaa5 100644
> --- a/tools/perf/util/annotate.c
> +++ b/tools/perf/util/annotate.c
> @@ -585,7 +585,7 @@ static int mov__parse(struct arch *arch, struct ins_operands *ops, struct map_sy
>         if (ops->source.raw == NULL)
>                 return -1;
>
> -       target = ++s;
> +       target = skip_spaces(++s);
>         comment = strchr(s, arch->objdump.comment_char);
>
>         if (comment != NULL)
> --
> 2.41.0.162.gfafddb0af9-goog
>
  

Patch

diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
index 9171102dd3ad..3eab6c29eaa5 100644
--- a/tools/perf/util/annotate.c
+++ b/tools/perf/util/annotate.c
@@ -585,7 +585,7 @@  static int mov__parse(struct arch *arch, struct ins_operands *ops, struct map_sy
 	if (ops->source.raw == NULL)
 		return -1;
 
-	target = ++s;
+	target = skip_spaces(++s);
 	comment = strchr(s, arch->objdump.comment_char);
 
 	if (comment != NULL)