* sigproc.cc (no_signals_available): Detect hwait_sig == INVALID_HANDLE_VALUE.

(wait_sig): Set hwait_sig to INVALID_HANDLE_VALUE on __SIGEXIT.
* cygtls.cc (_cygtls::init_thread): Zero entire _my_tls structure and no more.
* cygtls.h (_my_tls::padding): Delete.
(CYGTLS_PADSIZE): Redefine concept of padding to mean padding at the end of the
stack.
* dcrt0.cc (initialize_main_tls): Change return to void.
* gentls_offsets: Treat const specially, too.  Keep going after a '}' is found.
Change negative offset calculation to use CYGTLS_PADSIZE.
* init.cc (_my_oldfunc): New variable.
(threadfunc_fe): Use stored tls value for oldfunc rather than blindly writing
to the stack.
(munge_threadfunc): Set oldfunc in tls.
(dll_entry): Initialize tls allocation.
* tlsoffsets.h: Regenerate.
This commit is contained in:
Christopher Faylor
2006-05-16 03:14:24 +00:00
parent a9e36321fd
commit 562adf7890
8 changed files with 105 additions and 85 deletions

View File

@@ -953,7 +953,7 @@ dll_crt0_1 (char *)
cygwin_exit (user_data->main (__argc, __argv, *user_data->envptr));
}
struct _reent *
static void
initialize_main_tls (char *padding)
{
if (!_main_tls)
@@ -961,7 +961,7 @@ initialize_main_tls (char *padding)
_main_tls = &_my_tls;
_main_tls->init_thread (padding, NULL);
}
return &_main_tls->local_clib;
return;
}
/* Wrap the real one, otherwise gdb gets confused about