diff options
author | Brian Carlstrom <bdc@google.com> | 2014-09-14 20:34:17 -0700 |
---|---|---|
committer | Brian Carlstrom <bdc@google.com> | 2014-09-16 12:50:08 -0700 |
commit | 2cbaccb67e22c0b313a9785bfc65bcb4b25d0676 (patch) | |
tree | daeb766e19880b651fd9c4a719c9a07dd7d4bd0e /disassembler/disassembler_arm.cc | |
parent | bace0378d720a1d2938ec7f6be17e2814671d20a (diff) | |
download | android_art-2cbaccb67e22c0b313a9785bfc65bcb4b25d0676.tar.gz android_art-2cbaccb67e22c0b313a9785bfc65bcb4b25d0676.tar.bz2 android_art-2cbaccb67e22c0b313a9785bfc65bcb4b25d0676.zip |
Avoid printing absolute addresses in oatdump
- Added printing of OatClass offsets.
- Added printing of OatMethod offsets.
- Added bounds checks for code size size, code size, mapping table, gc map, vmap table.
- Added sanity check of 100k for code size.
- Added partial disassembly of questionable code.
- Added --no-disassemble to disable disassembly.
- Added --no-dump:vmap to disable vmap dumping.
- Reordered OatMethod info to be in file order.
Bug: 15567083
(cherry picked from commit 34fa79ece5b3a1940d412cd94dbdcc4225aae72f)
Change-Id: I2c368f3b81af53b735149a866f3e491c9ac33fb8
Diffstat (limited to 'disassembler/disassembler_arm.cc')
-rw-r--r-- | disassembler/disassembler_arm.cc | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/disassembler/disassembler_arm.cc b/disassembler/disassembler_arm.cc index 56023c1595..54e77612a3 100644 --- a/disassembler/disassembler_arm.cc +++ b/disassembler/disassembler_arm.cc @@ -94,7 +94,7 @@ void DisassemblerArm::DumpMemoryDomain(std::ostream& os, uint32_t domain) { } void DisassemblerArm::DumpBranchTarget(std::ostream& os, const uint8_t* instr_ptr, int32_t imm32) { - os << StringPrintf("%+d (%p)", imm32, instr_ptr + imm32); + os << StringPrintf("%+d (", imm32) << FormatInstructionPointer(instr_ptr + imm32) << ")"; } static uint32_t ReadU16(const uint8_t* ptr) { @@ -356,7 +356,9 @@ void DisassemblerArm::DumpArm(std::ostream& os, const uint8_t* instr_ptr) { opcode += kConditionCodeNames[cond]; opcode += suffixes; // TODO: a more complete ARM disassembler could generate wider opcodes. - os << StringPrintf("%p: %08x\t%-7s ", instr_ptr, instruction, opcode.c_str()) << args.str() << '\n'; + os << FormatInstructionPointer(instr_ptr) + << StringPrintf(": %08x\t%-7s ", instruction, opcode.c_str()) + << args.str() << '\n'; } int32_t ThumbExpand(int32_t imm12) { @@ -1608,7 +1610,9 @@ size_t DisassemblerArm::DumpThumb32(std::ostream& os, const uint8_t* instr_ptr) opcode << "UNKNOWN " << op2; } - os << StringPrintf("%p: %08x\t%-7s ", instr_ptr, instr, opcode.str().c_str()) << args.str() << '\n'; + os << FormatInstructionPointer(instr_ptr) + << StringPrintf(": %08x\t%-7s ", instr, opcode.str().c_str()) + << args.str() << '\n'; return 4; } // NOLINT(readability/fn_size) @@ -1936,7 +1940,9 @@ size_t DisassemblerArm::DumpThumb16(std::ostream& os, const uint8_t* instr_ptr) it_conditions_.pop_back(); } - os << StringPrintf("%p: %04x \t%-7s ", instr_ptr, instr, opcode.str().c_str()) << args.str() << '\n'; + os << FormatInstructionPointer(instr_ptr) + << StringPrintf(": %04x \t%-7s ", instr, opcode.str().c_str()) + << args.str() << '\n'; } return 2; } |