diff --git a/compiler-rt/test/asan/TestCases/wild_pointer.cpp b/compiler-rt/test/asan/TestCases/wild_pointer.cpp --- a/compiler-rt/test/asan/TestCases/wild_pointer.cpp +++ b/compiler-rt/test/asan/TestCases/wild_pointer.cpp @@ -2,7 +2,9 @@ // RUN: not %run %t 2>&1 | FileCheck %s // REQUIRES: asan-64-bits +#include #include +#include #include #include @@ -10,9 +12,17 @@ char *p = new char; char *dest = new char; const size_t offset = 0x4567890123456789; + + // The output here needs to match the output from the sanitizer runtime, + // which includes 0x and prints hex in lower case. + // + // On Windows, %p omits %0x and prints hex characters in upper case, + // so we use PRIxPTR instead of %p. + fprintf(stderr, "Expected bad addr: %#" PRIxPTR "\n", + reinterpret_cast(p + offset)); // Flush it so the output came out before the asan report. - fprintf(stderr, "Expected bad addr: %p\n", p + offset); fflush(stderr); + memmove(dest, p, offset); return 0; }