2013-01-16 Christopher Faylor * pthread.cc (pthread_exit): Add kludge to accommodate noreturn attribute. 2013-01-14 Antti Kantee * include/pthread.h (pthread_exit): Mark as "noreturn". 2013-01-14 Christopher Faylor * exceptions.cc (signal_exit): Move captive process termination... (_cygtls::interrupt_setup): ...into here. (sigpacket::process): Simplify setting of handler when have_execed. (_cygtls::interrupt_setup): Don't call proc_subproc when we've execed. * globals.cc (exit_states): Delete unneeded ES_EXEC_EXIT. * pinfo.cc (pinfo::exit): Change debugging output. Call proc_terminate rather than the now-obsolete sigproc_terminate. Don't set exit_state to ES_EXEC_EXIT. Set exit_state to ES_FINAL later. * sigproc.cc (sigproc_terminate): Delete function. (wait_sig): Don't call proc_subproc if have_execed. * sigproc.h (sigproc_terminate): Delete declaration. * sync.h (lock_process::lock_process): Don't set exit_state to ES_PROCESS_LOCKED. (lock_process::operator LONG): Define. 2013-01-11 Christopher Faylor * DevNotes: Add entry cgf-000021. * select.cc (select): Unconditionally return when a signal is detected. (select_stuff::wait): Ditto. 2013-01-11 Corinna Vinschen * syscalls.cc (rename): Drop handling paths > 32757 chars, emit EINVAL instead, thus simplifying code allocating and filling pfri. Drop size and use constant expression in NtSetInformationFile call. Add comments. Drop redundant test for fs_serial_number and change comment accordingly. 2013-01-11 Thomas Wolff * fhandler.h (class dev_console): Flag for expanded control sequence. * fhandler_console.cc (char_command): Supporting cursor style modes. 2013-01-10 Corinna Vinschen * path.h (path_conv::fs_type): New method. * syscalls.cc (rename): Check for cross-device situation before touching anything. Explain why. Workaround NFS bug in call to NtSetInformationFile(FileRenameInformation). 2013-01-09 Corinna Vinschen * cygerrno.h: Fix copyright. * exceptions.cc: Drop comment explaining removed variable. 2013-01-09 Corinna Vinschen * dcrt0.cc (main_thread_sinit): New inline function. Fix and explain a stdio initialization issue. (dll_crt0_1): Call main_thread_sinit rather than __sinit. 2013-01-07 Christopher Faylor * thread.cc (pthread_rwlock::lookup_reader): Remove parameter: always assume that we're looking for the current thread. (pthread_rwlock::tryrdlock): Eliminate self variable. Accommodate change in lookup_reader(). (pthread_rwlock::unlock): Ditto. (pthread_rwlock::rdlock): Ditto. Move add_reader call after writer tests to more closely mimic old behavior. (pthread_rwlock::wrlock): Accommodate change in lookup_reader(). * thread.h ((pthread_rwlock::lookup_reader): Eliminate argument. 2013-01-07 Christopher Faylor * thread.cc (pthread_rwlock::add_reader): Perform new operation here and return pointer to allocated RWLOCK_READER structure. (pthread_rwlock::rdlock): Reorganize to reflect new add_reader functionality. (pthread_rwlock::tryrdlock): Ditto. Remove unneeded call to lookup_reader(). * thread.h (pthread_rwlock::RWLOCK_READER::RWLOCK_READER): New constructor. (pthread_rwlock::add_reader): Reflect new functionality. 2013-01-03 Christopher Faylor * globals.cc (exit_states): Renumber so that ES_EXIT_STARTING is first, as intended. * sigproc.cc (wait_sig): Only stop accepting signals after exit_state > ES_EXIT_STARTING. 2013-01-03 Christopher Faylor * sigproc.cc (exit_thread): Set thread signal mask so that no signals are sent to an exiting thread. 2013-01-02 Christopher Faylor * sigproc.cc (no_signals_available): Remove exit_state test since signals are available in a limited fashion when exiting. (sig_dispatch_pending): Ditto. (sig_send): Ditto. (exit_thread): Rearrange to avoid an unnecessary DuplicateProcess when exiting. (wait_sig): Allow special signals when exiting. 2013-01-02 Christopher Faylor * DevNotes: Add entry cgf-000020, relating to previous checkin. 2013-01-02 Christopher Faylor * cygtls.h (_cygtls::signal_exit): Delete from class. * exception.h (cygwin_exception): New class. (cygwin_exception::dumpstack): Declare new function. (cygwin_exception::context): Ditto. (cygwin_exception::dump_exception): Ditto. * exceptions.cc (cygwin_exception::dump_exception): Move into cygwin_exception class. Accommodate new variable names. (cygwin_exception::dumpstack): Ditto stackdump -> dumpstack. (exception::handle): Move andreas processing earlier. Defer signal processing decisions to the signal thread where they belong. Pass exception information to sig_send via new siginfo_t si_cyg field. (ctrl_c_handler): Wait for SIGHUP signal to be processed since it could cause a process exit and we don't want races with thread exit lock. (signal_exit): Move back here from sigproc.cc. Modify arguments and remove from sigpacket class. Decide when to dump core based on signal type. (sigpacket::process): Handle exiting signals in context of threads rather than in the signal thread. Signal debugger on non-Windows signals. Remove setup_signal_exit call. * sigproc.cc (no_signals_available): Remove argument. (signal_exit_code): Delete. (close_my_readsig): Ditto. (_cygtls::signal_exit): Move to exceptions.cc. (sigproc_terminate): Don't attempt to terminate signal thread. (setup_signal_exit): Delete. (exit_thread): Use new si_cyg entry in siginfo_t. (sig_send): Just use empty initializer for si. Accommodate change in no_signals_available argument. (wait_sig): Remove attempt to "go asynchronous" on process exit. Delete __SIGEXIT handling. Don't ever exit. * sigproc.h: Remove __SIGEXIT from signal enum. Renumber. * include/cygwin/signal.h (siginfo_t): Add si_cyg entry.