[asan] Fixed test failing on windows due to different printf behaviour.

%p reported prints upper case hex chars on Windows.
The fix  is to switch to using %#lx

Differential Revision: https://reviews.llvm.org/D98570
This commit is contained in:
Vy Nguyen 2021-03-12 21:00:11 -05:00
parent 0b2aae42e5
commit 6f37d18d8c
1 changed files with 11 additions and 1 deletions

View File

@ -2,7 +2,9 @@
// RUN: not %run %t 2>&1 | FileCheck %s
// REQUIRES: asan-64-bits
#include <inttypes.h>
#include <stdarg.h>
#include <stdint.h>
#include <stdio.h>
#include <string.h>
@ -10,9 +12,17 @@ int main() {
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<uintptr_t>(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;
}