Commit Graph

2350 Commits

Author SHA1 Message Date
Christopher Faylor f8a8e7a1f6 * cygtls.cc (_cygtls::remove): Call remove_wq to ensure that wait stuff is
removed from proc_subproc linked list.
* cygtls.h (_cygtls::remove_wq): Declare.
* sigproc.cc (_cygtls::remove_wq): Define.
(proc_subproc): Label event handle appropriately.
* spawn.cc (spawn_guts): Return -1 when wait() fails for spawn types that
require waiting.
2004-03-14 06:34:05 +00:00
Christopher Faylor ad22734a88 Fix typo. 2004-03-14 04:47:11 +00:00
Corinna Vinschen 09f36ed08f * errno.cc (errmap): Handle ERROR_BUS_RESET.
* fhandler.h (fhandler_dev_raw::write_file): New method, created
	from former static function.
	(fhandler_dev_raw::read_file): Ditto.
	(reset_devbuf): New inline method.
	(class fhandler_dev_tape): Add TAPE_GET_DRIVE_PARAMETERS
	member `dp'.
	(fhandler_dev_tape::write_file): New method.
	(fhandler_dev_tape::read_file): Ditto.
	(fhandler_dev_tape::tape_get_feature): Convert to inline method.
	(fhandler_dev_tape::tape_error): New method, created from former
	static function.
	(fhandler_dev_tape::tape_get_blocksize): Remove declaration.
	* fhandler_raw.cc (fhandler_dev_raw::write_file): New method, created
	from former static function.
	(fhandler_dev_raw::read_file): Ditto.
	(fhandler_dev_raw::writebuf): Accomodate the fact that no devbuf
	exists under variable block size condition.
	(fhandler_dev_raw::raw_read): Ditto. Add local p pointer to simplify
	pointer arithmetic.
	(fhandler_dev_raw::raw_write): Always set devbufend to 0 when starting
	with writing. Accomodate the fact that no devbuf exists under
	variable block size condition.
	* fhandler_tape.cc: Various formatting changes.
	(TAPE_FUNC): New macro. Use throughout as tape function loop.
	(get_ll): Convert into macro.
	(IS_EOM): New macro.
	(IS_EOF): New macro.
	(fhandler_dev_tape::is_eom): Use IS_EOM macro.
	(fhandler_dev_tape::is_eof): Use IS_EOF macro.
	(fhandler_dev_tape::write_file): New method.
	(fhandler_dev_tape::read_file): New method.
	(fhandler_dev_tape::open): Get drive information block here once.
	(fhandler_dev_tape::lseek): Remove unneeded duplicate code.
	(fhandler_dev_tape::dup): Duplicate drive information block.
	(fhandler_dev_tape::ioctl): Remove drvbuf in variable block size mode.
	Return ERROR_INVALID_BLOCK_LENGTH instead of ERROR_MORE_DATA if
	buffer contains data which would get lost on buffer size changing.
	Use absolute tape positioning also if drive only supports logical
	block positioning.
	(fhandler_dev_tape::tape_error): New method, created from former
	static function.
	(fhandler_dev_tape::tape_get_pos): Allow logical block reporting.
	Workaround tape driver bug.
	(fhandler_dev_tape::_tape_set_pos): Reset device buffer and flags
	after successful repositioning.
	(fhandler_dev_tape::tape_set_pos): Allow logical block positioning.
	Workaround tape driver bug.
	(fhandler_dev_tape::tape_erase): Use dp instead of calling
	GetTapeParameters.
	(fhandler_dev_tape::tape_prepare): Ditto.
	(fhandler_dev_tape::tape_get_blocksize): Remove.
	(fhandler_dev_tape::tape_set_blocksize): Don't call tape_get_blocksize.
	Error handling already done in fhandler_dev_tape::ioctl.
	(fhandler_dev_tape::tape_status): Remove local `dp' variable.
	Accomodate logical tape reporting.  Call tape_get_feature instead
	of accessing feature words directly.
	(fhandler_dev_tape::tape_compression): Use dp instead of calling
	GetTapeParameters.  Fix resetting datcompression.
2004-03-13 18:15:06 +00:00
Christopher Faylor 183f4d8086 * wait.cc (wait4): Initialize pointer on entry. Avoid calling
call_signal_handler twice since that guarantees exiting with errno set to
EINTR.
2004-03-12 22:03:33 +00:00
Corinna Vinschen 3c5f8ea418 * exceptions.cc (sigpacket::process): Simplify code slightly. 2004-03-12 08:22:22 +00:00
Christopher Faylor 9863b78e7b * cygtls.h (waitq): Declare structure here.
(_cygtls::wq): Declare.
* cygtls.cc (_cygtls::fixup_after_fork): Clear wq.thread_ev to avoid using an
invalid event handle in forked process.
* dcrt0.cc (waitq_storage): Delete.
(threadstuff): Remove waitq_storage.
* perthread.h (per_thread_waitq): Delete.
(waitq_storage): Delete declaration.
* sigproc.cc (sigproc_init): Remove perthread waitq consideration.
* sigproc.h (waitq): Delete declaration.
* wait.cc (wait4): Use _my_tls waitq structure rather than per_thread.
* cygtls.h (_cygtls::newmask): Delete member.
(_cygtls::deltamask): New member.
* gendef (_sigdelayed): Replace the call to set_process_mask by a call to
set_process_mask_delta.
* exceptions.cc (handle_sigsuspend): Do not filter tempmask.  Or
SIG_NONMASKABLE in deltamask as a flag.
(_cygtls::interrupt_setup): Set deltamask only.
(set_process_mask_delta): New function.
(_cygtls::call_signal_handler): Replace the first call to set_process_mask by a
call to set_process_mask_delta.
* tlsoffsets.h: Regenerate.
2004-03-12 03:09:28 +00:00
Christopher Faylor 7ea8e226ee * cygtls.cc (_cygtls::fixup_after_fork): Remove unneeded setting of oldmask.
* exceptions.cc: Remove some __I386__ conditionals.
(handle_exceptions): Move ppid test to outside of a loop for efficiency.
(setup_handler): Make debugging output more wordy.
(_cygtls::call_signal_handler): To avoid a race, use lock/unlock to synchronize
with signal thread and ensure that signal_arrived event has actually been set.
* gendef (_sigfe): Use ebx for all sigstack manipulations to ensure that the
register is saved.  Move setting of incyg to within stack lock to avoid
setup_handler confusion.
(_sigbe): Use ebx for all sigstack manipulations to ensure that the register is
saved.
(_cygtls::pop): Ditto.
(_cygtls::lock): Ditto.
(stabilize_sig_stack): Ditto.
(setjmp): Ditto.
(longjmp): Ditto.
2004-03-12 02:07:39 +00:00
Christopher Faylor 58e9df0f91 * fhandler_serial.cc (fhandler_serial::ioctl): Implement TIOCSBRK and TIOCCBRK.
* include/sys/termios.h: Define TIOCSBRK and TIOCCBRK.
2004-03-09 02:51:26 +00:00
Christopher Faylor 5fb0fe79eb * exceptions.cc (setup_handler): Avoid suspending a thread if it in a cygwin
function, in an exception, spinning, or locked.
* gendef (_sigfe): Move incyg setting earlier.
(sigreturn): Set incyg flag to avoid interrupting called cygwin functions.
(sigdelayed): Ditto.
(stabilize_sig_stack): Ditto.
* sigproc.cc (proc_subproc): Don't restore process lock early in exec case.
* cygtls.h: Reorganize fields in _cygtls slightly.
* tlsoffsets.h: Regenerate.
2004-03-09 01:24:08 +00:00
Christopher Faylor 0c378b648e add missing entry 2004-03-07 04:58:35 +00:00
Christopher Faylor 3a1ccfc8c7 * fork.cc (fork_parent): Save parent pid in a temporary variable since child
could conceivably exit before function returns, rendering the child's shared
memory area invalid.
* cygtls.h (_cygtls::incyg): Declare new field.
(_cygtls::in_exception): Define new function.
* exceptions.cc (setup_handler): Remove locked flag.  Use 'incyg' flag and
in_exception function to determine when we're in a cygwin function.
(_cygtls::call_signal_handler): Decrement incyg flag prior to calling a
handler.  Increment it on return.
* gendef (_sigfe): Increment incyg flag.  Use testl for zero testing rather
than orl, for consistency.
(_sigbe): Decrement incyg flag.  Use testl for zero testing rather than orl,
for consistency.
(_cygtls::pop): Use testl for zero testing rather than orl, for consistency.
(stabilize_sig_stack): Ditto.
2004-03-07 04:57:47 +00:00
Christopher Faylor f2afcfa616 * gendef (sigdelayed): Handle return here rather than going through sigbe to
ensure that flags are properly restored.
2004-03-05 19:09:04 +00:00
Thomas Pfaff b95ae50461 * include/pthread.h (PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP):
New define.
(PTHREAD_NORMAL_MUTEX_INITIALIZER_NP): Ditto.
(PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP): Ditto.
* thread.cc (pthread_mutex::is_good_initializer):
Check for all posssible initializers
(pthread_mutex::is_good_initializer_or_object): Ditto.
(pthread_mutex::is_good_initializer_or_bad_object): Ditto.
(verifyable_object_isvalid): Support up to three static
initializers.
(verifyable_object_isvalid (void const *,long)): Remove.
(pthread_cond::is_good_initializer_or_bad_object): Remove
unneeded objectState var.
(pthread_cond::init): Condition remains unchanged when creation
has failed.
(pthread_rwlock::is_good_initializer_or_bad_object): Remove
unneeded objectState var.
(pthread_rwlock::init): Rwlock remains unchanged when creation
has failed.
(pthread_mutex::init): Remove obsolete comment.
Mutex remains unchanged when creation has failed. Add support
for new initializers.
(pthread_mutex_getprioceiling): Do not create mutex,
just return ENOSYS.
(pthread_mutex_lock): Simplify.
(pthread_mutex_trylock): Remove unneeded local themutex.
(pthread_mutex_unlock): Just return EPERM if mutex is not
initialized.
(pthread_mutex_setprioceiling): Do not create mutex,
just return ENOSYS.
* thread.h (verifyable_object_isvalid): Support up to three
static initializers.
(verifyable_object_isvalid (void const *,long)): Remove
prototype.
(pthread_mutex::init): Add optional initializer to parameter
list.
2004-03-04 21:04:14 +00:00
Christopher Faylor 08b0a057eb * gendef (sigreturn): Call stabilize_sig_stack to ensure that there are no
pending signals.  Restore edx later.
(sigdelayed): Save edx earlier.
* malloc_wrapper.cc (malloc_init): Add some more debugging output.
2004-03-04 05:31:14 +00:00
Corinna Vinschen 7cdd029300 * fhandler_raw.cc (fhandler_dev_raw::raw_read): When reading with
variable block size, read only one block, read directly into user
	supplied buffer, return ENOMEM if user supplied buffer is smaller
	than size of next block to read.  Use read2 instead of bytes_to_read
	to count number of bytes read.
	* fhandler_tape.cc (fhandler_dev_tape::open): Add debug output.
2004-03-02 13:07:47 +00:00
Christopher Faylor 0f8989463e fix minor typo 2004-03-01 20:44:02 +00:00
Christopher Faylor 74c9d43c5e fix minor typo 2004-03-01 20:43:22 +00:00
Corinna Vinschen 4e23c18123 * miscfuncs.cc (check_invalid_virtual_addr): Assure the last page
in the range is always tested.  Add appropriate const.
	* mmap.cc (mmap_record::aloc_fh): Remove unused static path_conf object.
2004-02-26 11:32:20 +00:00
Christopher Faylor ca713cfab3 * exceptions.cc (setup_handler): Signal event for any sigwaitinfo if it exists
to force signal to be handled.  Zero event here to prevent races.
* signal.cc (sigwaitinfo): Use local handle value for everything since signal
thread could zero event element at any time.  Detect when awaking due to thread
not in mask and set return value and errno accordingly.  Don't set signal
number to zero unless we've recognized the signal.
* sigproc.cc (sigq): Rename from sigqueue throughout.
* thread.cc (pthread::join): Handle signals received while waiting for thread
to terminate.
* cygwin.din: Export sighold, sigqueue.
* exceptions.cc (sighold): Define new function.
* signal.cc (handle_sigprocmask): Set correct errno for invalid signal.
Simplify debugging output.
(sigqueue): Define new function.
* include/cygwin/signal.h (sighold): Declare new function.
(sigqueue): Ditto.
* include/cygwin/version.h: Bump API minor version number.
* include/limits.h (TIMER_MAX): Define.
(_POSIX_TIMER_MAX): Ditto.
2004-02-26 05:10:49 +00:00
Corinna Vinschen f9e19c0931 * miscfuncs.cc (check_invalid_virtual_addr): New function.
* winsup.h (check_invalid_virtual_addr): Declare.
	* mmap.cc (munmap): Call check_invalid_virtual_addr instead of
	IsBadReadPtr.
2004-02-25 10:54:31 +00:00
Christopher Faylor 241f503c75 * gendef (stabilize_sig_stack): Correctly align this pointer for call to
_cygtls::call_signal_handler.
* gentls_offsets: Output sizeof field.
* tlsoffsets.h: Regenerate.
2004-02-25 04:08:00 +00:00
Christopher Faylor 5ef9bbc874 * dcrt0.cc (_dll_crt0): Don't check sync_startup if threadfunc_ix is set.
* external.cc (cygwin_internal): Implement CW_GET_BINMODE.
* include/sys/cygwin.h: Declare CW_GET_BINMODE.
2004-02-25 01:19:13 +00:00
Christopher Faylor 5dbaca1607 * dcrt0.cc (_dll_crt0): Add some stern internal errors. 2004-02-24 17:13:16 +00:00
Corinna Vinschen c9a76075f5 * thread.cc (pthread::cancelable_wait): Rearrange slightly.
Add do_sig_wait parameter.  Wait for signal_arrived if set to true.
	Return WAIT_SIGNALED if signal arrived.
	(pthread_cond::wait): Accomodate change to pthread::cancelable_wait.
	(pthread::join): Ditto.
	(semaphore::_timedwait): Ditto.
	(semaphore::_wait): Ditto.  Change to return int to allow status
	feedback.
	(semaphore::wait): Return return value from semaphore::_wait.
	* thread.h (WAIT_SIGNALED): New definition.
	(pthread::cancelable_wait): Change declaration.  Define do_sig_wait
	as false by default to not interfere with existing calls accidentally.
	(semaphore::_wait): Declare int.
2004-02-24 11:33:15 +00:00
Christopher Faylor 4d5d7a2c09 * exceptions.cc (sigpacket::process): Make sure that tls is filled in for
SIGSTOP condition.
(_cygtls::call_signal_handler): Restore signal mask using saved oldmask rather
than current oldmask.
2004-02-21 22:57:36 +00:00
Christopher Faylor 3a0f12b588 * path.cc (conv_path_list): Return error condition.
(copy1): New function.
(copyenc): New function.
(mount_item::fnmunge): Return error condition.  Use new functions to copy
strings.
(mount_item::build_win32): Ditto.
(mount_info::conv_to_win32_path): Return error condition.
(cygwin_conv_to_posix_path): Return result of path conversion.
(cygwin_conv_to_full_posix_path): Ditto.
(return_with_errno): New macro.
(cygwin_win32_to_posix_path_list): Use new macro to potentially set errno.
(cygwin_posix_to_win32_path_list): Ditto.
* path.h (mount_item::fnmunge): Add size argument.
(mount_item::build_win32): Ditto.
2004-02-21 04:46:00 +00:00
Corinna Vinschen 12afe44527 * getopt.c: Avoid useless compiler warnings. 2004-02-20 23:31:47 +00:00
Corinna Vinschen 1a57b22914 * getopt.c: Replace with latest vanilla(!) OpenBSD version 1.16. 2004-02-20 21:30:44 +00:00
Christopher Faylor 0e061ecf96 * fork.cc (fork_child): Invert sense of test which defeated correct handling in
a fork from a non-main thread.
* dcrt0.cc (initial_env): Eliminate parameter and just send DebugBreak when
appropriate.
(dll_crt0_0): Reflect parameter change to initial_env.
(dll_crt0_1): Don't call initial_env.
2004-02-18 22:32:15 +00:00
Christopher Faylor 2d6c4a1a65 * gendef (stabilize_sig_stack): New function.
(setjmp): Import, add sig stack handling.  Store sig stack info.
(longjmp): Call stabilize_sig_stack.  Restore sig stack info.
* config/i386/setjmp.c: Remove.
2004-02-18 20:48:38 +00:00
Corinna Vinschen a682de34be * fork.cc (fork_child): Move fixup_shms_after_fork so that
signal_arrived is initialized when calling it.
2004-02-17 21:17:25 +00:00
Christopher Faylor 720c33ae4c * Makefile.in (clean): Clean libserver, too.
* fhandler.cc (fhandler_base::~fhandler_base): Remove path_conv cleanup.
* syscalls.cc (chroot): Ditto.
* path.cc (path_conv::~path_conv): Define new destructor.
(conv_path_list_buf_size): Remove explicit path_conv cleanup.
* path.h (path_conv::~path_conv): Declare new destructor.
2004-02-17 20:03:01 +00:00
Christopher Faylor 88e584bf43 * Makefile.in: Compile flock.o with -fomit-frame-pointer. 2004-02-17 15:23:29 +00:00
Christopher Faylor f6cd9c3555 * Makefile.in: Compile dlfcn.o with -fomit-frame-pointer. 2004-02-16 21:25:10 +00:00
Christopher Faylor 2c29523ece * Makefile.in: Compile delqueue.o with -fomit-frame-pointer. 2004-02-16 20:30:46 +00:00
Corinna Vinschen 212592dcc9 * syscalls.cc (rename): Do not test the MoveFile error code
where MoveFileEx exists.
2004-02-16 11:45:04 +00:00
Christopher Faylor 04dbc76ea5 correct changelog 2004-02-16 02:34:36 +00:00
Christopher Faylor b4f0009fe3 * cygheap.cc (_csbrk): Report failing condition to stderr rather than strace. 2004-02-16 02:03:54 +00:00
Christopher Faylor 955bf2ee96 * Makefile.in: Compile syscalls.o with -fomit-frame-pointer.
* sigproc.cc: Eliminate unused variable.
2004-02-15 02:44:16 +00:00
Corinna Vinschen 968bdf96b1 * getopt.c: Replace with latest NetBSD version 1.16. Keep Cygwin
specific changes as minimal as possible.
2004-02-14 19:43:52 +00:00
Christopher Faylor cf2b4018b0 * sigproc.cc (proc_subproc): Change warning back to silent debug output. 2004-02-14 04:58:31 +00:00
Christopher Faylor c21e74cce8 * dcrt0.cc (alloc_stack_hard_way): Revert to previous implementation.
(alloc_stack): Ditto.
* exceptions.cc (ctrl_c_handler): Add debugging output.
2004-02-14 04:38:37 +00:00
Christopher Faylor edc4f86ad2 * Makefile.in (clean): Remove sigfe.s.
(sigfe.s): Ensure that sigfe.s will be regenerated if it does not exist.
* dll_init.cc (dll_dllcrt0): Simplify initializing tests.
* exceptions.cc (setup_handler): Detect when stub caller is either spinning or
has acquired the lock after being suspended to avoid windows problems with
suspending a win32 API call.
* cygtls.h (_cygtls::spinning): Declare new element.
* gendef: Remove unused _siglist_index and _siglist declaration.
(_sigfe): Set spinning element when potentially looping, waiting for lock.
(_sigbe): Ditto.
(_cygtls::lock): Ditto.
(_longjmp): Ditto.
* tlsoffsets.h: Regenerate.
* pinfo.cc (_pinfo::exit): Set final exit state here.  Call sigproc_terminate
if invoked with 'norecord'.  Clear any residual _cygtls stuff.
* winsup.h (exit_states): Define ES_FINAL.
* spawn.cc (spawn_guts): Don't call proc_terminate specifically when execing.
Let _pinfo::exit handle that case.
* sigproc.cc (wait_subproc): Always exit loop early when proc_loop_wait.
* init.cc (munge_threadfunc): Eliminate unused argument.
(dll_entry): Reflect above change in call to munge_threadfunc.
2004-02-13 19:34:32 +00:00
Christopher Faylor b3535c2730 * gendef (_sigbe): Zero location on pop.
(_cygtls::pop): Ditto.
2004-02-12 04:55:29 +00:00
Christopher Faylor b91faaabea * dcrt0.cc (alloc_stack_hard_way): Eliminate second argument.
(alloc_stack): Remove use of 'b' throughout.
2004-02-12 03:07:35 +00:00
Christopher Faylor e431827c7c Rename _threadinfo to _cygtls, throughout.
* cygtls.h (_cygtls::call_signal_handler): Rename from call_signal_handler_now.
(_cygtls::push): Make second argument mandatory.
(_cygtls::fixup_after_fork): Declare new function.
(_cygtls::lock): Ditto.
* cygtls.cc (_cygtls::fixup_after_fork): Define new function.
* dcrt0.cc (cygwin_finished_initializing): Define as bool.
(alloc_stack): Use _tlstop rather than arbitrary variable in probably vain
attempt to avoid strange fork problem on CTRL-C.
(dll_crt0_0): Remove obsolete winpids::init call.
* dll_init.cc (dll_dllcrt0): Detect forkee condition as equivalent to
initializing.
* winsup.h (cygwin_finished_initializing): Declare as bool.
* exceptions.cc (handle_exceptions): Rely on cygwin_finished_initializing to
determine how to handle exception during process startup.
(_cygtls::call_signal_handler): Rename from call_signal_handler_now.
(_cygtls::interrupt_now): Fill in second argument to push.
(signal_fixup_after_fork): Eliminate.
(setup_handler): Initialize locked to avoid potential inappropriate unlock.
Resume thread if it has acquired the stack lock.
(ctrl_c_handler): Just exit if ctrl-c is hit before cygiwn has finished
initializing.
* fork.cc (sync_with_child): Don't call abort since it can cause exit
deadlocks.
(sync_with_child): Change debugging output slightly.
(fork_child): Set cygwin_finished_initializing here.  Call _cygtls fork fixup
and explicitly call sigproc_init.
(fork_parent): Release malloc lock on fork failure.
(vfork): Call signal handler via _my_tls.
* sigproc.cc (sig_send): Ditto.
* syscalls.cc (readv): Ditto.
* termios.cc (tcsetattr): Ditto.
* wait.cc (wait4): Ditto.
* signal.cc (nanosleep): Ditto.
(abort): Ditto.
(kill_pgrp): Avoid killing self if exiting.
* sync.cc (muto::acquire): Remove (temporarily?) ill-advised exiting_thread
check.
* gendef (_sigfe): Be more agressive in protecting stack pointer from other
access by signal thread.
(_cygtls::locked): Define new function.
(_sigbe): Ditto.
(_cygtls::pop): Protect edx.
(_cygtls::lock): Use guaranteed method to set eax to 1.
(longjmp): Aggressively protect signal stack.
* miscfuncs.cc (low_priority_sleep): Reduce "sleep time" for secs == 0.
* pinfo.cc (winpids::set): Counterintuitively use malloc's lock to protect
simultaneous access to the pids list since there are pathological conditions
which can cause malloc to call winpid.
(winpids::init): Eliminate.
* pinfo.h (winpids::cs): Eliminate declaration.
* pinfo.h (winpids::init): Eliminate definition.
2004-02-12 03:01:58 +00:00
Corinna Vinschen 897c785600 * security.cc (get_nt_object_attribute): Fix error handling. 2004-02-11 17:54:34 +00:00
Corinna Vinschen 9ec70d2019 * fhandler_socket.cc (fhandler_socket::ioctl): Add FIONREAD handling. 2004-02-09 11:30:57 +00:00
Christopher Faylor cec4879206 * debug.h (console_printf): Define for non-debugging condition.
* cygtls.h (_threadinfo::lock): Remove wait argument.
(_threadinfo::interrupt_setup): Remove retaddr argument.
* exceptions.cc (_threadinfo::interrupt_setup): Ditto.
(_threadinfo::interrupt_now): Accommodate change to interrupt_setup argument.
(setup_handler): Ditto.  Always lock sig stack prior to determining interrupt
method.
* gendef (_sigfe): Correct thinko regarding cmpxchg.
(_sigbe): Ditto.
(_threadinfo::lock): Ditto.
(_threadinfo::pop): Eliminate left-over stack unlock.
* sigproc.cc (proc_subproc): Chnage debugging output to printed warning.
2004-02-09 04:04:24 +00:00
Christopher Faylor 6946073e78 * localtime.cc (localtime_r): Call tzset.
* Makefile.in: Make version.h/cygwin.din version check a warning since it is
not foolproof.
* cygheap.h (CYGHEAPSIZE): Bump size down.
* cygtls.h (_threadinfo::stacklock): New element.
(_threadinfo::pop): Make regparm.
(_threadinfo::lock): New function.
(_threadinfo::unlock): New function.
* cygtls.cc (_threadinfo::push): Wait for a lock on the stack before performing
the operation.
(_threadinfo::pop): Move to another file.
* cygwin.din: More SIGFE changes.
* exceptions.cc (try_to_debug): Always display messages on console.
(handle_exceptions): Unwind stack only when actually about to call sig_send.
(setup_handler): Lock stack prior to performing any operations.
* gendef (_sigfe): Ditto.
(_sigbe): Ditto.
(_threadinfo::pop): Ditto.  Move here.
* gen_tlsoffsets: Generate positive offsets.
* tlsoffsets.h: Regenerate.
2004-02-08 19:59:27 +00:00