[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 00/10] Support the Capstone disassembler
From: |
Richard Henderson |
Subject: |
[Qemu-devel] [PATCH 00/10] Support the Capstone disassembler |
Date: |
Thu, 14 Sep 2017 11:35:06 -0700 |
As occasionally discussed on this list, due to licensing conflicts,
we are restricted to a version of libopcodes that pre-dates its
upstream re-licensing to gplv3. That makes our copy rather old
and dated.
I've already seen this as problematic for s390x guest. I'm sure
the same problem exists for Power8+, though I haven't looked.
As we go forward with vector operations we'll see this for x86 host.
An alternative is to use a BSD-licensed disassembler:
https://www.capstone-engine.org/
This is an actively maintained project derived from llvm. Moreover,
it is already in the major Linux distributions, which makes it easy
to phase in its use.
I've arranged the code such that we attempt to use capstone first,
and if that initialization fails, fall back to the existing code
from binutils.
r~
Richard Henderson (10):
target/i386: Convert to disas_set_info hook
target/ppc: Convert to disas_set_info hook
disas: Remove unused flags arguments
disas: Support the Capstone disassembler library
target/i386: Support Capstone in disas_set_info
target/arm: Support Capstone in disas_set_info
target/ppc: Support Capstone in disas_set_info
target/s390x: Support Capstone in disas_set_info
target/sparc: Support Capstone in disas_set_info
target/mips: Support Capstone in disas_set_info
include/disas/bfd.h | 4 ++
include/disas/capstone.h | 38 ++++++++++
include/disas/disas.h | 4 +-
include/exec/log.h | 4 +-
target/mips/cpu.h | 2 +
disas.c | 161 +++++++++++++++++++++++-------------------
monitor.c | 29 +-------
target/alpha/translate.c | 2 +-
target/arm/cpu.c | 21 +++++-
target/arm/translate-a64.c | 3 +-
target/arm/translate.c | 3 +-
target/cris/translate.c | 3 +-
target/hppa/translate.c | 2 +-
target/i386/cpu.c | 19 +++++
target/i386/translate.c | 8 +--
target/lm32/translate.c | 2 +-
target/m68k/translate.c | 2 +-
target/microblaze/translate.c | 2 +-
target/mips/cpu.c | 8 ---
target/mips/translate.c | 2 +-
target/mips/translate_init.c | 36 ++++++++++
target/nios2/translate.c | 2 +-
target/openrisc/translate.c | 2 +-
target/ppc/translate.c | 5 +-
target/ppc/translate_init.c | 27 +++++++
target/s390x/cpu.c | 2 +
target/s390x/translate.c | 2 +-
target/sh4/translate.c | 2 +-
target/sparc/cpu.c | 3 +
target/sparc/translate.c | 2 +-
target/tricore/translate.c | 2 +-
target/unicore32/translate.c | 2 +-
target/xtensa/translate.c | 2 +-
configure | 17 +++++
34 files changed, 279 insertions(+), 146 deletions(-)
create mode 100644 include/disas/capstone.h
--
2.13.5
- [Qemu-devel] [PATCH 00/10] Support the Capstone disassembler,
Richard Henderson <=
- [Qemu-devel] [PATCH 02/10] target/ppc: Convert to disas_set_info hook, Richard Henderson, 2017/09/14
- [Qemu-devel] [PATCH 05/10] target/i386: Support Capstone in disas_set_info, Richard Henderson, 2017/09/14
- [Qemu-devel] [PATCH 01/10] target/i386: Convert to disas_set_info hook, Richard Henderson, 2017/09/14
- [Qemu-devel] [PATCH 03/10] disas: Remove unused flags arguments, Richard Henderson, 2017/09/14
- [Qemu-devel] [PATCH 07/10] target/ppc: Support Capstone in disas_set_info, Richard Henderson, 2017/09/14
- [Qemu-devel] [PATCH 04/10] disas: Support the Capstone disassembler library, Richard Henderson, 2017/09/14