summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/dll_init.cc
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/dll_init.cc')
-rw-r--r--winsup/cygwin/dll_init.cc7
1 files changed, 6 insertions, 1 deletions
diff --git a/winsup/cygwin/dll_init.cc b/winsup/cygwin/dll_init.cc
index 7d35c1633..7c7fc6407 100644
--- a/winsup/cygwin/dll_init.cc
+++ b/winsup/cygwin/dll_init.cc
@@ -404,7 +404,12 @@ dll_noncygwin_dllcrt0 (HMODULE h, per_process *p)
extern "C" void
cygwin_detach_dll (dll *)
{
- dlls.detach ((HANDLE) _my_tls.retaddr ());
+ HANDLE retaddr;
+ if (_my_tls.isinitialized ())
+ retaddr = (HANDLE) _my_tls.retaddr ();
+ else
+ retaddr = __builtin_return_address (0);
+ dlls.detach (retaddr);
}
extern "C" void