/** * This file has no copyright assigned and is placed in the Public Domain. * This file is part of the mingw-w64 runtime package. * No warranty is given; refer to the file DISCLAIMER.PD within this package. */ #include #include #include #include static _tls_callback_type callback; static void run_callback(void) { if (callback) callback(NULL, DLL_PROCESS_DETACH, 0); callback = NULL; } void __cdecl _register_thread_local_exe_atexit_callback(_tls_callback_type cb) { callback = cb; /* This should guarantee that the callback is called. It won't be run in the * exact right spot as intended to, but it will be run. */ atexit(run_callback); } typeof(_register_thread_local_exe_atexit_callback) *__MINGW_IMP_SYMBOL(_register_thread_local_exe_atexit_callback) = _register_thread_local_exe_atexit_callback;