1// RUN: %clang_cl_asan -LD -O0 -DDLL %s -Fe%t.dll 2// RUN: %clang_cl_asan -O0 -DEXE %s %t.lib -Fe%te.exe 3// RUN: %env_asan_opts=report_globals=2 %run %te.exe 2>&1 | FileCheck %s 4 5// FIXME: Currently, the MT runtime build crashes on startup due to dbghelp.dll 6// initialization failure. 7// REQUIRES: asan-dynamic-runtime 8 9#include <windows.h> 10#include <stdio.h> 11 12extern "C" { 13#if defined(EXE) 14__declspec(dllimport) int foo_from_dll(); 15 16// CHECK: in DLL(reason=1) 17int main(int argc, char **argv) { 18 foo_from_dll(); 19// CHECK: hello! 20 printf("hello!\n"); 21 fflush(0); 22// CHECK: in DLL(reason=0) 23} 24#elif defined(DLL) 25// This global is registered at startup. 26int x[42]; 27 28__declspec(dllexport) int foo_from_dll() { 29 return x[2]; 30} 31 32BOOL WINAPI DllMain(HMODULE, DWORD reason, LPVOID) { 33 printf("in DLL(reason=%d)\n", (int)reason); 34 fflush(0); 35 return TRUE; 36} 37#else 38# error oops! 39#endif 40} 41