summaryrefslogtreecommitdiff
path: root/disassembler/disassembler_arm64.cc
diff options
context:
space:
mode:
Diffstat (limited to 'disassembler/disassembler_arm64.cc')
-rw-r--r--disassembler/disassembler_arm64.cc11
1 files changed, 11 insertions, 0 deletions
diff --git a/disassembler/disassembler_arm64.cc b/disassembler/disassembler_arm64.cc
index 23472a8dca..ef27e75c8c 100644
--- a/disassembler/disassembler_arm64.cc
+++ b/disassembler/disassembler_arm64.cc
@@ -60,6 +60,17 @@ void CustomDisassembler::AppendRegisterNameToOutput(const Instruction* instr,
Disassembler::AppendRegisterNameToOutput(instr, reg);
}
+void CustomDisassembler::AppendCodeRelativeAddressToOutput(const Instruction* instr,
+ const void* addr) {
+ USE(instr);
+ int64_t rel_addr = CodeRelativeAddress(addr);
+ if (rel_addr >= 0) {
+ AppendToOutput("(addr 0x%08" PRIx64 ")", rel_addr);
+ } else {
+ AppendToOutput("(addr -0x%08" PRIx64 ")", -rel_addr);
+ }
+}
+
void CustomDisassembler::Visit(vixl::aarch64::Metadata* metadata, const Instruction* instr) {
vixl::aarch64::Disassembler::Visit(metadata, instr);
const std::string& form = (*metadata)["form"];