Skip to content

Commit

Permalink
test/mix: Add minimal DLL
Browse files Browse the repository at this point in the history
  • Loading branch information
lhmouse committed Sep 25, 2024
1 parent 9dd8621 commit b9ce8cd
Showing 1 changed file with 18 additions and 6 deletions.
24 changes: 18 additions & 6 deletions test/mix.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,33 +20,45 @@ main(void)
// load functions from dll
wchar_t dll_name[100];
swprintf(dll_name, 100, L"libmcfgthread-%d.dll", _MCF_ABI_VERSION_MAJOR);
HMODULE dll = LoadLibraryW(dll_name);
assert(dll);
HMODULE pdll = LoadLibraryW(dll_name);
assert(pdll);
swprintf(dll_name, 100, L"libmcfgthread-minimal-%d.dll", _MCF_ABI_VERSION_MAJOR);
HMODULE mdll = LoadLibraryW(dll_name);
assert(mdll);

typedef __typeof__(_MCF_tls_get) pdll_tls_get_fn;
pdll_tls_get_fn* pdll_tls_get = (pdll_tls_get_fn*)(INT_PTR) GetProcAddress(dll, "_MCF_tls_get");
typedef __typeof__(_MCF_tls_get) tls_get_fn;
tls_get_fn* pdll_tls_get = (tls_get_fn*)(INT_PTR) GetProcAddress(pdll, "_MCF_tls_get");
assert(pdll_tls_get);
assert(pdll_tls_get != _MCF_tls_get);
tls_get_fn* mdll_tls_get = (tls_get_fn*)(INT_PTR) GetProcAddress(mdll, "_MCF_tls_get");
assert(mdll_tls_get);
assert(mdll_tls_get != _MCF_tls_get);

typedef __typeof__(_MCF_tls_xset) pdll_tls_xset_fn;
pdll_tls_xset_fn* pdll_tls_xset = (pdll_tls_xset_fn*)(INT_PTR) GetProcAddress(dll, "_MCF_tls_xset");
typedef __typeof__(_MCF_tls_xset) tls_xset_fn;
tls_xset_fn* pdll_tls_xset = (tls_xset_fn*)(INT_PTR) GetProcAddress(pdll, "_MCF_tls_xset");
assert(pdll_tls_xset);
assert(pdll_tls_xset != _MCF_tls_xset);
tls_xset_fn* mdll_tls_xset = (tls_xset_fn*)(INT_PTR) GetProcAddress(mdll, "_MCF_tls_xset");
assert(mdll_tls_xset);
assert(mdll_tls_xset != _MCF_tls_xset);

// use common key
_MCF_tls_key* key = _MCF_tls_key_new(__MCF_nullptr);
assert(key);
assert(_MCF_tls_get(key) == __MCF_nullptr);
assert(pdll_tls_get(key) == __MCF_nullptr);
assert(mdll_tls_get(key) == __MCF_nullptr);

int dummy1;
_MCF_tls_xset(key, __MCF_nullptr, &dummy1);
assert(_MCF_tls_get(key) == &dummy1);
assert(pdll_tls_get(key) == &dummy1);
assert(mdll_tls_get(key) == &dummy1);

int dummy2;
pdll_tls_xset(key, __MCF_nullptr, &dummy2);
assert(_MCF_tls_get(key) == &dummy2);
assert(pdll_tls_get(key) == &dummy2);
assert(mdll_tls_get(key) == &dummy2);
#endif
}

0 comments on commit b9ce8cd

Please sign in to comment.