23
23
#include < windows.h>
24
24
#endif
25
25
26
+
27
+ extern " C" BOOL WINAPI DllMain (HINSTANCE hinstDLL,
28
+ DWORD fdwReason,
29
+ LPVOID lpReserved);
30
+
26
31
static std::atomic<int > TearDownCalls{0 };
27
32
28
33
pi_result redefinedTearDown (void *PluginParameter) {
34
+ fprintf (stderr, " intercepted tear down\n " );
29
35
++TearDownCalls;
36
+
37
+ return PI_SUCCESS;
30
38
}
31
39
32
40
TEST (Windows, DllMainCall) {
@@ -36,23 +44,23 @@ TEST(Windows, DllMainCall) {
36
44
printf (" Test is not supported on host, skipping\n " );
37
45
return ;
38
46
}
39
-
40
47
sycl::unittest::PiMock Mock{Plt};
41
48
setupDefaultMockAPIs (Mock);
42
-
43
- Mock.redefine <PiApiKind::piTearDown>(redefinedTearDown);
49
+ Mock.redefine <sycl::detail::PiApiKind::piTearDown>(redefinedTearDown);
44
50
45
51
#ifdef _WIN32
46
52
// Teardown calls are only expected on sycl.dll library unload, not when
47
53
// process gets terminated.
48
54
// The first call to DllMain is to simulate library unload. The second one
49
55
// is to simulate process termination
56
+ fprintf (stderr, " Call DllMain for the first time\n " );
50
57
DllMain ((HINSTANCE)0 , DLL_PROCESS_DETACH, (LPVOID)NULL );
51
58
52
59
int TearDownCallsDone = TearDownCalls.load ();
53
60
54
61
EXPECT_NE (TearDownCallsDone, 0 );
55
62
63
+ fprintf (stderr, " Call DllMain for the second time\n " );
56
64
DllMain ((HINSTANCE)0 , DLL_PROCESS_DETACH, (LPVOID)0x01 );
57
65
58
66
EXPECT_EQ (TearDownCalls.load (), TearDownCallsDone);
0 commit comments