summaryrefslogtreecommitdiff
path: root/disassembler/disassembler_arm64.h
diff options
context:
space:
mode:
author Alexandre Rames <alexandre.rames@arm.com> 2015-03-06 09:11:12 +0000
committer Alexandre Rames <alexandre.rames@arm.com> 2015-03-06 10:45:10 +0000
commitd737ab33a458537fca6207e9e4e25198a1511113 (patch)
tree5d365b8def0e9a8a87ff86c5b12559ff74e8f831 /disassembler/disassembler_arm64.h
parent65405378f4fd207dcd7d99916c2397a0da08438f (diff)
ART: Enable the use of relative addresses in the arm64 disassembler.
Also, only keep register aliases for the link register 'lr' and the thread register 'tr' in the arm64 disassembler. Other aliases are not very important, and this way we don't have to provide aliases specialised for Quick or Optimizing. Change-Id: Ie7a04910f0c587710a0cf2648203d7e89eab5d1f
Diffstat (limited to 'disassembler/disassembler_arm64.h')
-rw-r--r--disassembler/disassembler_arm64.h13
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);
}