diff options
Diffstat (limited to 'disassembler/disassembler_arm64.h')
-rw-r--r-- | disassembler/disassembler_arm64.h | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/disassembler/disassembler_arm64.h b/disassembler/disassembler_arm64.h index 57f11c822f..3fb5c7f2c6 100644 --- a/disassembler/disassembler_arm64.h +++ b/disassembler/disassembler_arm64.h @@ -30,8 +30,12 @@ namespace arm64 { class CustomDisassembler FINAL : public vixl::Disassembler { public: - explicit CustomDisassembler(bool read_literals) : - vixl::Disassembler(), read_literals_(read_literals) {} + explicit CustomDisassembler(DisassemblerOptions* options) : + vixl::Disassembler(), read_literals_(options->can_read_literals_) { + if (!options->absolute_addresses_) { + MapCodeAddress(0, reinterpret_cast<const vixl::Instruction*>(options->base_address_)); + } + } // Use register aliases in the disassembly. void AppendRegisterNameToOutput(const vixl::Instruction* instr, @@ -55,11 +59,8 @@ class CustomDisassembler FINAL : public vixl::Disassembler { class DisassemblerArm64 FINAL : public Disassembler { public: - // TODO: Update this code once VIXL provides the ability to map code addresses - // to disassemble as a different address (the way FormatInstructionPointer() - // does). explicit DisassemblerArm64(DisassemblerOptions* options) : - Disassembler(options), disasm(options->can_read_literals_) { + Disassembler(options), disasm(options) { decoder.AppendVisitor(&disasm); } |