diff options
author | Ian Rogers <irogers@google.com> | 2012-04-09 22:51:43 -0700 |
---|---|---|
committer | Ian Rogers <irogers@google.com> | 2012-04-09 22:51:43 -0700 |
commit | 5b9b1bc168e1198e287cf013254c89389efca70d (patch) | |
tree | b14c088555ea020e4af8645b4a862f164a88f9d8 /src/disassembler_arm.cc | |
parent | d3fb569391be72184248a78bd1d920ecf5bc3b55 (diff) | |
download | art-5b9b1bc168e1198e287cf013254c89389efca70d.zip art-5b9b1bc168e1198e287cf013254c89389efca70d.tar.gz art-5b9b1bc168e1198e287cf013254c89389efca70d.tar.bz2 |
Disassemble PC relative literals.
Change-Id: I9b60e0efc9e311c085abb60dc867407ee17dc61b
Diffstat (limited to 'src/disassembler_arm.cc')
-rw-r--r-- | src/disassembler_arm.cc | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/disassembler_arm.cc b/src/disassembler_arm.cc index cb5bd48..57fcec3 100644 --- a/src/disassembler_arm.cc +++ b/src/disassembler_arm.cc @@ -696,6 +696,10 @@ size_t DisassemblerArm::DumpThumb32(std::ostream& os, const uint8_t* instr_ptr) if (Rn.r == 9) { args << " ; "; Thread::DumpThreadOffset(args, imm12, 4); + } else if (Rn.r == 15) { + intptr_t lit_adr = reinterpret_cast<intptr_t>(instr_ptr); + lit_adr = RoundDown(lit_adr, 4) + 4 + imm12; + args << " ; " << reinterpret_cast<void*>(*reinterpret_cast<int32_t*>(lit_adr)); } } else if (op4 == 0) { // LDR.W Rt, [Rn, Rm{, LSL #imm2}] - 111 11 00 00 101 nnnn tttt 000000iimmmm |