aboutsummaryrefslogtreecommitdiffstats
path: root/src/3rdparty
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@digia.com>2014-03-06 12:37:06 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-07 12:20:24 +0100
commit206b0e1f2ed2c6d42bc814a3b04567ceeb438de6 (patch)
treecb7fc85de36068923448482aac320973662c21e4 /src/3rdparty
parent0d3d8aa924f07da2364c73bfb1b4c95cd3429d10 (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.cpp8
-rw-r--r--src/3rdparty/masm/disassembler/UDis86Disassembler.cpp8
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;
}