diff options
author | Erik Verbruggen <erik.verbruggen@digia.com> | 2014-03-06 12:37:06 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-03-07 12:20:24 +0100 |
commit | 206b0e1f2ed2c6d42bc814a3b04567ceeb438de6 (patch) | |
tree | cb7fc85de36068923448482aac320973662c21e4 /src/3rdparty | |
parent | 0d3d8aa924f07da2364c73bfb1b4c95cd3429d10 (diff) |
V4: fix address printing on 64bit platforms
The addresses were truncated to 32bits, which is a problem on win64,
because JITted code ended up outside that range.
Change-Id: I0d8b92486714340dffe4b4c2de29cf11a929a149
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/3rdparty')
-rw-r--r-- | src/3rdparty/masm/assembler/LinkBuffer.cpp | 8 | ||||
-rw-r--r-- | src/3rdparty/masm/disassembler/UDis86Disassembler.cpp | 8 |
2 files changed, 14 insertions, 2 deletions
diff --git a/src/3rdparty/masm/assembler/LinkBuffer.cpp b/src/3rdparty/masm/assembler/LinkBuffer.cpp index bf4f2f5278..432a7ee227 100644 --- a/src/3rdparty/masm/assembler/LinkBuffer.cpp +++ b/src/3rdparty/masm/assembler/LinkBuffer.cpp @@ -52,7 +52,13 @@ LinkBuffer::CodeRef LinkBuffer::finalizeCodeWithDisassembly(const char* format, va_end(argList); dataLogF(":\n"); - dataLogF(" Code at [%p, %p):\n", result.code().executableAddress(), static_cast<char*>(result.code().executableAddress()) + result.size()); + dataLogF( +#if OS(WINDOWS) + " Code at [0x%p, 0x%p):\n", +#else + " Code at [%p, %p):\n", +#endif + result.code().executableAddress(), static_cast<char*>(result.code().executableAddress()) + result.size()); disassemble(result.code(), m_size, " ", WTF::dataFile()); return result; diff --git a/src/3rdparty/masm/disassembler/UDis86Disassembler.cpp b/src/3rdparty/masm/disassembler/UDis86Disassembler.cpp index 63c235b920..3d9d8cb384 100644 --- a/src/3rdparty/masm/disassembler/UDis86Disassembler.cpp +++ b/src/3rdparty/masm/disassembler/UDis86Disassembler.cpp @@ -49,7 +49,13 @@ bool tryToDisassemble(const MacroAssemblerCodePtr& codePtr, size_t size, const c uint64_t currentPC = disassembler.pc; while (ud_disassemble(&disassembler)) { char pcString[20]; - snprintf(pcString, sizeof(pcString), "0x%lx", static_cast<unsigned long>(currentPC)); + snprintf(pcString, sizeof(pcString), +#if OS(WINDOWS) + "0x%p", +#else + "%p", +#endif + currentPC); out.printf("%s%16s: %s\n", prefix, pcString, ud_insn_asm(&disassembler)); currentPC = disassembler.pc; } |