Hi. This is a rebased and mildly cleaned up version of Claudio's RFC patchset from last year to add libvixl to QEMU and use it for A64 disassembly.
Since this has now got review and the only change is adding the README I'm planning to put it in my next target-arm pull request. Paolo: just a heads-up: I have a feeling the rules.mak changes clash slightly with the ones in your modules patches. NOTE NOTE NOTE * we now link with g++, not gcc (even if the target doesn't happen to need the A64 disassembler, since it's a bit hard to tell whether there's a C++-source .o file in the link) * I've tested Linux (including static link of linux-user) and MacOS hosts, but not Windows Changes v2 -> v3: * added a README clarifying that libvixl's disassembly support is not complete and that contributions should go to libvixl upstream first for preference Changes v1 -> v2: * fixed minor libvixl bugs that meant it didn't build on 32 bit hosts or on Windows * only import the files we need from libvixl, rather than pulling in 10000 lines of code we never even compile * merge aarch64-cxx.cc and aarch64.c into one file * rename 'aarch64' to 'A64' since the instruction set we're disassembling here is named A64, not AArch64 * tidied the makefiles a little so we only apply the libvixl specific flags to those files Changes RFC -> v1: * some support for C++ compilation is already in master, so the rules.mak changes are smaller and simpler * I've fixed the output to better fit in a qemu debug log trace * I simplified the interface between aarch64-cxx.cc and aarch64.c a little bit * correctly handle the "no C++ compiler, so no A64 disassembler" build case * added support for using this as a disassembler for A64 targets as well as hosts You can find a git tree here: git://git.linaro.org/people/peter.maydell/qemu-arm.git a64-vixl web UI: https://git.linaro.org/people/peter.maydell/qemu-arm.git/shortlog/refs/heads/a64-vixl Claudio Fontana (1): disas: Implement disassembly output for A64 Peter Maydell (4): rules.mak: Support .cc as a C++ source file suffix rules.mak: Link with C++ if we have a C++ compiler disas: Add subset of libvixl sources for A64 disassembler disas/libvixl: Fix upstream libvixl compilation issues configure | 4 + disas.c | 14 +- disas/Makefile.objs | 5 + disas/arm-a64.cc | 87 ++ disas/libvixl/LICENCE | 30 + disas/libvixl/Makefile.objs | 8 + disas/libvixl/README | 12 + disas/libvixl/a64/assembler-a64.h | 1784 +++++++++++++++++++++++++++++++++ disas/libvixl/a64/constants-a64.h | 1104 ++++++++++++++++++++ disas/libvixl/a64/cpu-a64.h | 56 ++ disas/libvixl/a64/decoder-a64.cc | 712 +++++++++++++ disas/libvixl/a64/decoder-a64.h | 198 ++++ disas/libvixl/a64/disasm-a64.cc | 1678 +++++++++++++++++++++++++++++++ disas/libvixl/a64/disasm-a64.h | 109 ++ disas/libvixl/a64/instructions-a64.cc | 238 +++++ disas/libvixl/a64/instructions-a64.h | 344 +++++++ disas/libvixl/globals.h | 65 ++ disas/libvixl/platform.h | 43 + disas/libvixl/utils.cc | 120 +++ disas/libvixl/utils.h | 126 +++ include/disas/bfd.h | 1 + rules.mak | 14 +- target-arm/translate-a64.c | 2 +- 23 files changed, 6748 insertions(+), 6 deletions(-) create mode 100644 disas/arm-a64.cc create mode 100644 disas/libvixl/LICENCE create mode 100644 disas/libvixl/Makefile.objs create mode 100644 disas/libvixl/README create mode 100644 disas/libvixl/a64/assembler-a64.h create mode 100644 disas/libvixl/a64/constants-a64.h create mode 100644 disas/libvixl/a64/cpu-a64.h create mode 100644 disas/libvixl/a64/decoder-a64.cc create mode 100644 disas/libvixl/a64/decoder-a64.h create mode 100644 disas/libvixl/a64/disasm-a64.cc create mode 100644 disas/libvixl/a64/disasm-a64.h create mode 100644 disas/libvixl/a64/instructions-a64.cc create mode 100644 disas/libvixl/a64/instructions-a64.h create mode 100644 disas/libvixl/globals.h create mode 100644 disas/libvixl/platform.h create mode 100644 disas/libvixl/utils.cc create mode 100644 disas/libvixl/utils.h -- 1.8.5