perf: util: use capstone disasm engine to show assembly instructions
authorChangbin Du <changbin.du@huawei.com>
Sat, 17 Feb 2024 07:40:43 +0000 (15:40 +0800)
committerNamhyung Kim <namhyung@kernel.org>
Wed, 21 Feb 2024 02:06:48 +0000 (18:06 -0800)
commit8f0ec15ff66243896ff3e534696c6af7ff013901
tree647a2194beecb6836df3f8d62288fd7dea96d344
parent8b767db3309595a23eff1c3f2498f17b1f3a9bbc
perf: util: use capstone disasm engine to show assembly instructions

Currently, the instructions of samples are shown as raw hex strings
which are hard to read. x86 has a special option '--xed' to disassemble
the hex string via intel XED tool.

Here we use capstone as our disassembler engine to give more friendly
instructions. We select libcapstone because capstone can provide more
insn details. Perf will fallback to raw instructions if libcapstone is
not available.

The advantages compared to XED tool:
 * Support arm, arm64, x86-32, x86_64 (more could be supported),
   xed only for x86_64.
 * Immediate address operands are shown as symbol+offs.

Signed-off-by: Changbin Du <changbin.du@huawei.com>
Reviewed-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: changbin.du@gmail.com
Cc: Thomas Richter <tmricht@linux.ibm.com>
Cc: Andi Kleen <ak@linux.intel.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Link: https://lore.kernel.org/r/20240217074046.4100789-3-changbin.du@huawei.com
tools/perf/builtin-script.c
tools/perf/util/Build
tools/perf/util/print_insn.c [new file with mode: 0644]
tools/perf/util/print_insn.h [new file with mode: 0644]
tools/perf/util/thread.h