From c2687ef3ef95c9888af885ec3fa1516b218906ff Mon Sep 17 00:00:00 2001 From: Brian Carlstrom Date: Thu, 13 Mar 2014 15:12:11 -0700 Subject: Avoid bus error from reading unaligned 64-bit literal Change-Id: I5932f130e6a8d31e09ef615e8544ff0e1073ede9 --- disassembler/disassembler_arm.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'disassembler/disassembler_arm.cc') diff --git a/disassembler/disassembler_arm.cc b/disassembler/disassembler_arm.cc index c35edbbcbf..2a966a3512 100644 --- a/disassembler/disassembler_arm.cc +++ b/disassembler/disassembler_arm.cc @@ -720,7 +720,8 @@ size_t DisassemblerArm::DumpThumb32(std::ostream& os, const uint8_t* instr_ptr) if (Rn.r == 15 && U == 1) { intptr_t lit_adr = reinterpret_cast(instr_ptr); lit_adr = RoundDown(lit_adr, 4) + 4 + (imm8 << 2); - args << StringPrintf(" ; 0x%" PRIx64, *reinterpret_cast(lit_adr)); + typedef const int64_t unaligned_int64_t __attribute__ ((aligned (2))); + args << StringPrintf(" ; 0x%" PRIx64, *reinterpret_cast(lit_adr)); } } else if (Rn.r == 13 && W == 1 && U == L) { // VPUSH/VPOP opcode << (L == 1 ? "vpop" : "vpush"); -- cgit v1.2.3-59-g8ed1b