Tue Mar 14 23:41:16 2000 Christopher Faylor Pipe changes throughout suggested by Eric Fifer * debug.cc (threadname_init): Pass name of lock as arg 2 of new_muto. * malloc.cc (malloc_init): Ditto. * sigproc.cc (sigproc_init): Ditto. * exceptions.cc (events_init): Ditto. (call_handler): Eliminate special case for hExeced. Report locked thread in debugging output. * fhandler.cc (fhandker_pipe::fhandler_pipe): Propagate device type to base class. * fhandler.h (fhandler_pipe): Ditto. * hinfo.cc (hinfo::build_fhandler): Pass specific type of pipe to constructor. * spawn.cc (spawn_guts): Eliminate dependency on signal when waiting for subprocess. * strace.cc: Remove obsolete #ifdef. * sync.cc (muto::muto): Save the name of the muto. (muto:~muto): Also release the muto. * sync.h: Add a muto name field. * select.cc (peek_pipe): Avoid doing a PeekNamedPipe on the write end of a pipe. Sun Mar 12 01:14:33 2000 Christopher Faylor * fhandler.cc (fhandler_base::get_readahead_into_buffer): New function. * fhandler.h: Declare new function. Add extra argument to process_slave_output. * fhandler_console.cc (fhandler_console::read): Move read ahead code to new function. * fhandler_tty.cc (fhandler_pty_master::process_slave_output): Move common code here. (fhandler_tty_slave::read): Understand readahead. (fhandler_pty_master::read): Move code to process_slave_output. * select.cc (peek_pipe): Avoid performing certain checks when non-read and on inappropriate fh types. Sat Mar 11 22:47:43 2000 Christopher Faylor * fhandler_console.cc (fhandler_console::read): Don't even think about breaking on interrupt if executing in a "cygwin" thread. * fhandler_tty.cc (fhandler_pty_master::process_slave_output): Streamline, simplify code. * sigproc.cc (sig_send): Remove debugging statement. Sat Mar 11 22:46:55 2000 Christopher Faylor * fhandler_console.cc (fhandler_console::read) Fri Mar 10 13:20:50 2000 Christopher Faylor * sigproc.cc: Set wait_sig priority to normal. Fri Mar 10 13:03:06 2000 Christopher Faylor * sigproc.cc (wait_sig): Add addtional debugging output. Thu Mar 9 15:25:01 2000 Christopher Faylor * environ.cc: Eliminate oldstack CYGWIN option. * exceptions.cc (sfta): Eliminate obsolete function. (sgmb): Eliminate obsolete function. (class stack_info): Remove MS method for walking the stack. (stack_info::init): Just initialize required fields. (stack_info::brute_force): Rename to stack_info::walk. (handle_exceptions): Pass derived frame pointer to sig_send. (interrupt_setup): Clear saved frame pointer here. (interrupt_on_return): thestack is no longer a pointer. (call_handler): Accept a flag to indicate when a signal was sent from other than the main thread. Use saved frame pointer for determining where to place signal handler call. (sig_handle): Accept "nonmain" argument. Pass it to call_handler. * fhandler_tty.cc (fhandler_tty_common::__acquire_output_mutex): Change debugging output slightly. * (fhandler_tty_common::__release_output_mutex): Ditto. (fhandler_tty_slave::read): Fix a comment, remove a goto. * sigproc.cc (sig_send): Accept an optional frame pointer argument for use when suspending the main process. sigcomplete_main is an autoreset event now. Save frame pointer for non-main operation. (wait_sig): Make sigcomplete_main an autoreset event. Eliminate NOSIGQUEUE. Pass rc to sig_handle to signify if this was a nonmain process. * sigproc.h: Reflect change to sig_send argument. * syscalls.cc (swab): Eliminate swab function since it is now available in newlib. * winsup.h (signal_dispatch): Change CONTEXT cx to DWORD ebp. Tue Mar 7 13:31:10 2000 Christopher Faylor * sigproc.cc (sig_send): Eliminate sync_sig_send synchronization since it didn't seem to affect the "bash hangs" problem. Tue Mar 7 13:17:56 2000 Christopher Faylor * mcount.c: Remove strace.h include. Tue Mar 7 00:29:34 2000 Christopher Faylor Throughout use strace class in place of individual functions and variables. * cygwin.din: Eliminate _strace_wm. * sigproc.cc (wait_sig): Temporarily add more debugging output. * include/cygwin/version.h: Bump minor api to reflect export change. Sun Mar 5 01:17:05 2000 Christopher Faylor * exceptions.cc (call_handler): Streamline to use only one call to ResumeThread. * sigproc.cc (sig_send): Use a muto around the ReleaseSemaphore. Remove priority setting since it didn't solve anything. Tue Feb 29 00:46:09 2000 Christopher Faylor * sigproc.cc (sig_send): Temporarily set priority to highest while sending a signal. Mon Feb 28 11:23:29 2000 Christopher Faylor * pinfo.cc (set_myself): Add build date to strace output. Mon Feb 28 11:17:30 2000 Eric Fifer * sigproc.cc (proc_subproc): Only clear wait event when not attending to a signal. Mon Feb 28 00:08:09 2000 Christopher Faylor * configure.in: Remove --enable-strace-hhmmss option. * configure: Regenerate. Sun Feb 27 23:11:57 2000 Christopher Faylor * dcrt0.cc (set_os_type): Record OS name string. (getprogname): Eliminate obsolete function. (dll_crt0_1): Move initial strace initialization output to set_myself. * exceptions.cc (interruptible): Add debugging output. (interrupt_setup): New function. (interrupt_now): Use interrupt_setup to set up common interrupt handler stuff. (interrupt_on_return): Ditto. (call_handler): Move signal_arrived arm and clear threads to region where signalled thread is suspended or suffer races. * pinfo.cc (set_myself): Output interesting information when strace is first initialized. Initialize progname here. * sigproc.cc (sig_dispatch_pending): Modify to ensure that flush signal are sent synchronously. * strace.cc (strace_vsprintf): Move code into strace program. * uname.cc (uname): Use 'osname' global to construct cygwin name + Windows type + version. Fri Feb 25 19:26:42 2000 Christopher Faylor * exceptions.cc (interruptible): Make a little more structured. (call_handler): Allow signals to be sent even if signalled thread is stopped. Change order of signal_arrived arming/waiting threads clearing to eliminate a race. (reset_signal_arrived): New helper function. * malloc.cc (malloc_init): Use mutos so that signal handler can keep track of who owns the lock. (__malloc_lock): Ditto. (__malloc_unlock): Ditto. * sync.h (new_muto): Actually use a muto for the "buffer". * Makefile.in: Fix a dependency. 2000-02-25 DJ Delorie * Makefile.in: fix "make check" support and cygrun. Thu Feb 24 15:56:00 2000 Christopher Faylor * syscalls.c (_read): Clear errno before doing any read operation. Thu Feb 24 14:45:06 2000 Christopher Faylor * exceptions.cc (call_handler): Use new muto linked list to look for all potential mutos owned by suspended thread. Clear waiting threads while thread is stopped. (proc_subproc): Clarify debugging output. * sync.h (class muto): Add 'next' field. (new_muto): Keep linked list alive. Thu Feb 24 00:59:15 2000 Christopher Faylor Fix final round of gcc warnings relating to unused parameters. * debug.cc (iscygthread): New function. * debug.h: Declare it. * exceptions.cc (set_process_mask): Flush pending signals. (handle_sigsuspend): No need to flush pending signals. (call_handler): Refine previous tests of muto ownership. Only clear wait()'s when we have definitely responded to a signal. * fhandler_console.cc (fhandler_console::read): Don't set EINTR if executing in a "cygwin" thread. * sigproc.cc (proc_subproc): Use second argument to control whether CLEARWAIT actually sets "signalled" flag. * sync.h (muto): Add 'unstable' method. Wed Feb 23 21:59:44 2000 Christopher Faylor * hinfo.cc (hinfo::extend): Clean up debugging output. Wed Feb 23 21:34:58 2000 Christopher Faylor * exceptions.cc (interruptible): Change method for determining if something is interruptible. (call_handler): Avoid suspending a thread if it owns a muto. Only set signal_arrived if the thread was actually interrupted. (events_init): Initialize module information needed by interruptible(). * init.cc (dll_entry): Record module handle of main for use by interruptible(). (proc_subproc): Reorganize handling of terminated child so that the bulk of the processing comes from the signal thread. (wait_sig): Force processing of waiting threads if SIGCHLD is not processed. Tue Feb 22 23:06:01 2000 Christopher Faylor Respond to more g++ warnings relating to initializing structures. Mon Feb 21 18:36:37 2000 Christopher Faylor * fhandler.cc (set_inheritance): Revert previous patch which got rid of 'name' parameter. Mon Feb 21 00:19:40 2000 Christopher Faylor Respond to a multitude of new g++ warnings. Sun Feb 20 22:10:21 2000 Christopher Faylor * environ.cc (getwinenv): Make __stdcall. (winenv): Ditto. * malloc.cc (strdup): New function. Occludes newlib version. (_strdup_r): Ditto. * winsup.h: Reflect above __stdcall changes. Sun Feb 20 21:31:00 2000 Corinna Vinschen * fhandler.cc (fhandler_disk_file::fstat): Modify get_file_attribute return value if FILE_ATTRIBUTE_READONLY is set. Thu Feb 17 11:00:23 2000 Christopher Faylor * environ.cc (environ_init): Cosmetic change. Mon Feb 7 16:50:44 2000 Christopher Faylor * Makefile.in: cygrun needs libshell32.a. Sun Feb 6 22:17:58 2000 Christopher Faylor * sigproc.cc (proc_subproc): Simplify case for when a child process is stopped since new signal handler ensures the desired behavior. Sun Feb 6 21:52:33 2000 Christopher Faylor * Makefile.in: Fix install target so that directories will be created when necessary. Sun Feb 6 18:12:17 2000 Christopher Faylor * Makefile.in: exceptions.cc should depend on autoload.h. * exceptions.cc: Undef DECLSPEC_IMPORT prior to including imagehlp.h to avoid defining StackWalk as "import". (call_handler): Minor optimizations. (sig_handle_tty_stop): Fix typo in previous checkin. * sigproc.cc (sigproc_init): Ditto, for signal_arrived initialization. Sat Feb 5 15:37:37 2000 Christopher Faylor * dcrt0.cc (isquote): Convert to inline function. Sat Feb 5 00:26:01 2000 Christopher Faylor Throughout, rename global_signal_arrived to signal_arrived. Throughout, eliminate use of arm_signals and __signal_arrived. Throughout, revert to use of simple call to WaitForSingleObject or WaitForMultipleObjects. * debug.h: Eliminate obsolete function declaration. * exceptions.cc (sigWaitForSingleObject): Eliminate obsolete function definition. * fhandler.h: Reflect change to select_stuff wait method. * fhandler_tape.cc (get_ll): Accomodate new w32api LARGE_INTEGER definition. * ntea.c (NTReadEARaw): Ditto. (NTWriteEA): Ditto. * security.cc (ReadSD): Ditto. (WriteSD): Ditto. * syscalls.cc (_link): Ditto. * uname.cc (uname): Eliminate PPC switch. 2000-02-01 Salvador Eduardo Tropea * include/io.h: add return type to setmode() 2000-01-27 DJ Delorie * include/netdb.h (h_errno): change __imp_ to dllimport * cygwin.din (reent_data): add DATA Thu Jan 27 01:07:14 2000 Christopher Faylor * exceptions.cc (call_handler): Add debugging output. * select.cc (MAKEready): Arm signals earlier. * sigproc.cc (__signal_arrived:arm): Move debugging version of this method here. (__signal_arrived::release): Ditto. * sigproc.h: Recognize debugging versions of above two methods. (arm_signals::WaitForMultipleObjects): Don't release signal lock unless signal arrived. (arm_signals::WaitForMultipleSingleObject): Ditto. (arm_signals::MsgWaitForMultipleObjects): Ditto. Thu Jan 27 00:19:26 2000 Christopher Faylor * sync.h (new_muto): Workaround change in gcc behavior. Wed Jan 26 12:57:13 2000 Christopher Faylor * Makefile.in: Ensure that all required libraries are built prior to linking cygrun.exe. Tue Jan 25 21:26:57 2000 Christopher Faylor * exceptions.cc (sig_handle): Crudely work around potential problem when main thread has a lock but is killed by a fatal signal. * fhandler_tty.cc (fhandler_pty_master::write): Don't perform line editing on the pty master (so why do we need the second argument to line_edit, then?) * thread.cc: Reformat to GNU standards. 2000-01-11 DJ Delorie * ROADMAP: new 2000-01-11 DJ Delorie * fhandler_zero.cc: new, emulate /dev/zero * testsuite/winsup.api/devzero.c: new, test /dev/zero * Makefile.in: build fhandler_zero.o * fhandler.h: add support for /dev/zero * hinfo.cc: ditto * path.cc: ditto 2000-01-11 DJ Delorie * mmap.cc (mmap): MSDN says *one* of FILE_MAP_*, fix flags for MAP_PRIVATE. Mon Jan 10 01:11:00 2000 Corinna Vinschen * security.cc (acl_access): New function. * syscalls.cc (access): Call acl_access if ntsec is on. Mon Jan 10 01:11:00 2000 Corinna Vinschen * fhandler.cc (get_file_owner): Use of ReadSD() instead of GetFileSecurity(). (get_file_group): Ditto. Sun Jan 9 15:43:07 2000 Christopher Faylor * debug.cc (struct thread_start): Add a flag to determine whether a field is in use. Eliminate thread_start_ix since it was not thread-safe. (thread_stub): Use notavail flag to control whether the entry in start_buf can be reused. (makethread): Ditto. Sun Jan 9 20:18:00 2000 Corinna Vinschen * security.cc (alloc_sd): Rearrange order of ACE creation. (setacl): Optimize creation of ACEs related to inheritance. Code cleanup. (aclcheck): Disable check for existance of DEF_)CLASS_OBJ. Sat Jan 8 18:42:32 2000 Christopher Faylor * mkvers.h: Reorg fix. Sat Jan 8 20:00:00 2000 Corinna Vinschen * cygwin.din: Add new acl API calls. * grp.cc (getgroups): Change to work for any username. * security.cc (get_id_from_sid): Change to work with acl API. (is_grp_member): New function. (get_nt_attribute): Rewritten. (add_access_allowed_ace): New function. (add_access_denied_ace): Ditto. (alloc_sd): Rewritten. (setacl): New function. (getace): Ditto. (searchace): Ditto. (getacl): Ditto. (acl): Ditto. (facl): Ditto. (aclcheck): Ditto. (acecmp): Ditto. (aclsort): Ditto. (acltomode): Ditto. (aclfrommode): Ditto. (acltopbits): Ditto. (aclfrompbits): Ditto. (permtostr): Ditto. (acltotext): Ditto. (permfromstr): Ditto. (aclfromtext): Ditto. * syscalls.cc (access): Set errno again when needed. * include/cygwin/acl.h: New file. * include/sys/acl.h: Ditto. Sat Jan 8 14:46:19 2000 Christopher Faylor * Makefile.in: Add cygwin DLL specific CFLAGS define. Fri Jan 7 21:01:57 2000 Christopher Faylor * exceptions.cc (interrupt_on_return): Properly coerce assignment of sigsave.func. 2000-01-07 Mumit Khan * acconfig.h: New file. * configure.in Add check for memset builtin. (AC_CONFIG_HEADER): Use. (STRACE_HHMMSS): Define instead of substituting. (_MT_SAFE): Likewise. (_CYG_THREAD_FAILSAFE): Likewise. (DEBUGGING): Likewise. (MT_SAFE): Substitute as a yes/no variable. * Makefile.in: Remove DEBUGGING, STRACE_HHMMSS, and THREAD_FAILSAFE variables and add DEFS. Update usage of MT_SAFE to reflect yes/no values. Add config.h to winsup.h dependency. (CFLAGS_CONFIG): Update. (INCLUDES): Prepend `-I.'. * utils/Makefile.in (INCLUDES): Likewise. * winsup.h: Conditionally include config.h. * thread.cc: Likewise. * config.h.in: Generate new file. * configure: Regenerate. Fri Jan 7 16:21:01 2000 Christopher Faylor * dcrt0.cc (dll_crt0): Allow signal handling for dynamically loaded case. Thu Jan 6 00:30:12 2000 Corinna Vinschen * path.cc (symlink_check_one): Initialize local variable `unixattr' before calling `get_file_attribute'. * syscalls.cc (chown): Ditto. * security.cc (get_nt_attribute): Eliminate attribute copying from world to user/group in case of missing ACEs. (alloc_sd): Set special rights for administrators group only if it's neither owner nor group. * utils/mkpasswd.c: Create entry for local group administrators (SID 544). Thu Jan 6 00:21:31 2000 Christopher Faylor Change function calls to __stdcall throughout. * exceptions.cc (handle_exceptions): Probe stack for return address to use with new signal method. Fill out sigsave.cx with this information. (call_handler): Use sigsave.cx if it is available, rather than trying to find the context of the main thread. (interrupt_on_return): Use address of context rather than pass-by-reference. (interrupt_now): Ditto. Thu Jan 6 00:21:31 2000 Corinna Vinschen * grp.cc (getgroups): Return supplementary groups now. * include/limits.h: Define NGROUP_MAX as 16 now.