OSDN Git Service

* dcrt0.cc (_dll_crt0): Fix formatting.
[pf3gnuchains/pf3gnuchains4x.git] / winsup / cygwin / ChangeLog
index 99b56d0..d07638c 100644 (file)
@@ -1,3 +1,454 @@
+2011-12-17  Corinna Vinschen  <vinschen@redhat.com>
+
+       * dcrt0.cc (_dll_crt0): Fix formatting.
+
+2011-12-17  Corinna Vinschen  <vinschen@redhat.com>
+
+       * wow64.cc (wow64_revert_to_original_stack): Fix comment.
+       * wow64.h (wow64_respawn_process): Declare noreturn.
+
+2011-12-17  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * exceptions.cc (set_signal_mask): Remove useless debugging output.
+
+       * fhandler.cc (fhandler_base::write): Ditto.
+       (fhandler_base_overlapped::close): Cancel any ongoing I/O before
+       closing.
+       * syscalls.cc (write): Default to always reporting all writes in strace
+       output via syscall_printf.
+       * wait.cc (wait4): Fix debugging output.  Use standard syscall leaver
+       output.
+
+2011-12-16  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       Implement fhandler reference counting.
+       * cygheap.h (cygheap_fdmanip::release): Make virtual.
+       (cygheap_fdnew::~cygheap_fdnew): New destructor increments reference
+       count when fd has been allocated.
+       (cygheap_fdget::fh): New (old?) field.
+       (cygheap_fdget::cygheap_fdget): Increment reference count when we've
+       found an active fd.  Set fh appropriately.
+       (cygheap_fdget::~cygheap_fdget): Decrement reference count when
+       appropriate.  Delete fh if reference count goes to zero.
+       (cygheap_fdget::release): New function.  Do more bookkeping on release.
+       * dtable.cc (dtable::release): Change from void to boolean return.
+       Only delete the fhandler when its reference count is <= 0 (this should
+       be a fairly unusual case).  Return true if fhandler has been deleted.
+       (cygwin_attach_handle_to_fd): Increment reference count when fh is
+       assigned.
+       (dtable::init_std_file_from_handle): Ditto.
+       * dtable.h (dtable::release): Change return to boolean.
+       * fhandler.cc (fhandler_base::fhandler_base): Set new isclosed flag to
+       false.  Set _refcnt to zero.
+       (fhandler_base::close): Simplify paranoid debugging output.  Set new
+       isclosed() flag.
+       (fhandler_base_overlapped::wait_overlapped): Use isclosed() flag to
+       avoid querying the exception handle.
+       * fhandler.h (fhandler_base::_refcnt): New field.
+       (fhandler_base::refcnt): New function.
+       (fhandler_base::isclosed): Implement.
+       (fhandler_base::fhandler_base): Set isclosed to false.
+
+       * syscalls.cc: Remove space after function before parentheses for
+       several strace printfs.
+       (dup): Add standard strace "leaver" code.
+       (dup2): Ditto.
+       (dup3): Ditto.
+       (remove): Ditto.
+       (getpid): Ditto.
+       (getppid): Ditto.
+       (lseek64): Fix strace debugging to correctly use %R.
+
+       * fhandler_termios.cc (fhandler_termios::tcsetpgrp): Avoid sending
+       signals to other processes if we're debugging since it can cause a
+       deadlock with the calling debugger.
+
+       * exceptions.cc (_cygtls::call_signal_handler): Add debugging-only
+       strace output.
+
+2011-12-16  Corinna Vinschen  <vinschen@redhat.com>
+
+       * dcrt0.cc (child_info_fork::alloc_stack): Correctly check if the
+       parent stack fits into the child stack.  Align comment.
+       * wow64.cc (wow64_eval_expected_main_stack): New function to fetch
+       expected addresses of main thread stack from PE/COFF image header
+       values.
+       (wow64_test_for_64bit_parent): Fix comment.  Check current stack
+       against real expected main thread stack addresses.
+       (wow64_revert_to_original_stack): Fix and add comments. Check memory
+       against real expected main thread stack addresses.  Use orignal stack
+       if reserved area is >= 256K.
+
+2011-12-16  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * gendef (sigdelayed): Remember to pop all of the saved registers.
+       (sigreturn): Add "leave" label.
+
+2011-12-16  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * fhandler.cc (fhandler_base_overlapped::wait_overlapped): Fix
+       unresolved access of wores in successful situations.
+
+2011-12-16  Corinna Vinschen  <vinschen@redhat.com>
+
+       * Makefile.in (DLL_OFILES): Add wow64.o.
+       * dcrt0.cc (CYGWIN_GUARD): Drop execute permission for stack, it's
+       not used for stacks by the OS either.
+       (child_info_fork::alloc_stack_hard_way): Ditto.
+       (child_info_fork::alloc_stack): Don't alloc_stack_hard_way under WOW64
+       if forked from a 64 bit parent.  Set child's StackBase to parent's
+       StackBase.  Add comments to explain why.
+       (wow64_respawn): Move to wow64.cc.
+       (wow64_started_from_native64): Move to wow64.cc.
+       (respawn_wow64_process): Move to wow64.cc.
+       (dll_crt0_0): Drop wow64_test_stack_marker and move stack test into
+       wow64_test_for_64bit_parent function.  Don't return early if WOW64
+       process has been started from native 64 bit process.
+       (_dll_crt0): Implement moving stack for WOW64 processes started from
+       native 64 bit process.
+       * wow64.cc: New file.
+       (wow64_has_64bit_parent): Rename from wow64_respawn.
+       (wow64_test_for_64bit_parent): Rename from wow64_started_from_native64.
+       Change comment.
+       (wow64_revert_to_original_stack): New function.
+       (wow64_respawn_process): Rename from respawn_wow64_process for symmetry.
+       * wow64.h: New file.
+
+2011-12-16  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * exceptions.cc (_cygtls::call_signal_handler): Fix debugging to not go
+       to console.
+       * fhandler.cc (fhandler_base_overlapped::wait_overlapped): Add temporary
+       kludge to work around problem of make closing an fhandle while it is
+       being read.
+       * gendef (sigdelayed): Don't call a function if sig has been cleared.
+
+       * sigproc.h (cygwait): Simplify slightly.
+
+2011-12-14  Corinna Vinschen  <vinschen@redhat.com>
+
+       * autoload.cc (GetSystemWow64DirectoryW): Define.
+       (GetVolumePathNamesForVolumeNameW): Define.
+       * fhandler_process.cc (get_volume_path_names_for_volume_name): New
+       static function to workaround missing GetVolumePathNamesForVolumeNameW
+       function in Windows 2000.
+       (dos_drive_mappings::dos_drive_mappings): Call
+       get_volume_path_names_for_volume_name instead of
+       GetVolumePathNamesForVolumeNameW.
+
+2011-12-13  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * dcrt0.cc (init_windows_system_directory): Record
+       system_wow64_directory information.
+       * exceptions.cc (_cygtls::inside_kernel): Modernize comment.  Consider
+       executing a DLL from the Wow64 directory as being "in the kernel".
+       (_cygtls::call_signal_handler): For now, only deal with main_tls
+       signals if main_tls is known to be executing in the cygwin DLL.  To
+       more closely emulate linux, consider the operation to be restartable if
+       not executing in the main thread.
+       * globals.cc (windows_system_directory): Remove NO_COPY.
+       (windows_system_directory_length): Ditto.
+       (system_wow64_directory): New variable.
+       (system_wow64_directory_length): Ditto.
+
+       * select.cc (cygwin_select): Don't issue a EINTR on non-main threads
+       since that seems to be what Linux does.  Add missing break to signal
+       case/switch.
+       (select_stuff::wait): Don't issue a EINTR on non-main threads since
+       that seems to be what Linux does.  Remove now-unneeded accommodation
+       for WAIT_IO_COMPLETION.  Add a comment.
+       * sigproc.h (cygwait): Ditto.  Don't return if signal_received noticed
+       and it's not the main thread.
+
+       * signal.cc (sigprocmask): Add standard syscall debug stuff.
+       * thread.cc (pthread_sigmask): Ditto.
+
+2011-12-13  Corinna Vinschen  <vinschen@redhat.com>
+
+       * netdb.cc (open_system_file): Avoid MS-DOS path warning.
+
+2011-12-13  Corinna Vinschen  <vinschen@redhat.com>
+
+       * path.cc (conv_path_list): Fix a condition.
+       (cygwin_conv_path): Revert WIN_A conversion to current locale codeset.
+
+2011-12-13  Corinna Vinschen  <vinschen@redhat.com>
+
+       * fhandler_disk_file.cc (fhandler_base::fstat_by_handle): Call
+       file_get_fnoi instead of NtQueryInformationFile.
+       * path.cc (file_get_fnoi): New helper function to collect a
+       FILE_NETWORK_OPEN_INFORMATION block.
+       (symlink_info::check): Call file_get_fnoi rather than
+       NtQueryInformationFile to collect a FILE_NETWORK_OPEN_INFORMATION block.
+       * path.h (file_get_fnoi): Declare.
+
+2011-12-13  Dave Korn  <dave.korn.cygwin@gmail.com>
+
+       * times.cc (hires_ns::resolution): Don't return less than 1.
+
+2011-12-12  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * cygthread.h (cygthread::name): Very minor formatting tweak.
+
+       * exceptions.cc (_cygtls::call_signal_handler): Add paranoid debugging
+       output.
+
+       * sigproc.h (cygwait): Call signal handler when signal is detected and
+       loop as appropriate.
+       * fhandler.h (fhandler_base_overlapped::wait_return): Remove
+       overlapped_signal.
+       * fhandler.cc (fhandler_base_overlapped::wait_overlapped): Remove
+       restartable signal accommodations in light of cygwait improvements.
+       (fhandler_base_overlapped::raw_read): Remove now-obsolete signal loop
+       behavior.
+       (fhandler_base_overlapped::raw_write): Ditto.
+       * fhandler_console.cc (fhandler_console::read): Ditto.
+       * fhandler_serial.cc (fhandler_serial::raw_read): Ditto.
+       (fhandler_serial::raw_write): Ditto.
+       * fhandler_tty.cc (fhandler_pty_slave::read): Ditto.
+
+       * ioctl.cc (ioctl): Add standard syscall introducer and leaver debug
+       output.
+
+2011-12-12  Corinna Vinschen  <vinschen@redhat.com>
+
+       * fhandler_process.cc (dos_drive_mappings): Partially rewrite to
+       handle volumes mounted into juntion points correctly.
+
+2011-12-12  Corinna Vinschen  <vinschen@redhat.com>
+
+       * fhandler_process.cc (dos_drive_mappings::dos_drive_mappings): Fully
+       resolve symbolic links returned by QueryDosDeviceW.  Explain why.
+
+2011-12-12  Corinna Vinschen  <vinschen@redhat.com>
+
+       * mount.cc (fs_info::update): Set has_buggy_reopen for Netapps as well.
+
+2011-12-12  Corinna Vinschen  <vinschen@redhat.com>
+           Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * dcrt0.cc (wow64_respawn): New static variable.
+       (wow64_started_from_native64): New function to check if a WOW64
+       process got started from a native 64 bit process.
+       (respawn_wow64_process): New function to respawn process.
+       (dll_crt0_0): When started from a native parent, check if parent
+       is a 64 bit process.  If so, return early.
+       (_dll_crt0): Respawn WOW64 process here if required.
+       * init.cc (respawn_wow64_process): Remove.
+       (dll_entry): Rename wow64_test_stack_marker to test_stack_marker.
+       Drop WOW64 test here.
+
+2011-12-11  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * pipe.cc (fhandler_pipe::create): Use debug_printf to print debugging
+       info since this isn't a "syscall".
+       (pipe_worker): New function created from _pipe().
+       (_pipe): Use pipe_worker to create a pipe.  Use standard syscall strace
+       reporting on exit.
+       (pipe): Ditto.
+       (pipe2): Ditto.
+
+2011-12-10  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * select.cc (select_stuff::wait): Very minor formatting fix.
+       (peek_windows): Report on HWND handle used in queries.
+       * select.h: Update copyright.
+       * sigproc.h (cygwait): Eliminate multi-argument variety since more
+       general implementation may cause odd problems in select.  Also force to
+       always be inline.
+
+2011-12-10  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * sigproc.h (cygwait): Delete duplicate va_start and add matching
+       va_end.
+
+2011-12-10  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * sigproc.h (cygwait): Tweak test for cancellable event to make it a
+       little more clear.
+
+2011-12-09  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * exceptions.cc (ctrl_c_handler): YA in a series or reversions.  Put
+       back _my_tls.remove along with a comment.
+       (sigpacket::process): Remove code which now causes a gdb deadlock.
+       * sigproc.cc (_cygtls::signal_exit): Signal debugger with signal number
+       earlier.
+
+2011-12-09  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * dllfixdbg: Work around annoying gdb warning about missing
+       .gnu_debuglink.
+
+2011-12-09  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       Rename cygWFMO to cygwait throughout and use the magic of polymorphism
+       to "wait for stuff".
+       * fhandler.cc (fhandler_base_overlapped::wait_overlapped): Use
+       simplified arg form of cygwait.
+       * fhandler_console.cc (fhandler_console::read): Ditto.
+       * fhandler_audio.cc (fhandler_dev_dsp::Audio_out::waitforspac): Ditto.
+       (fhandler_dev_dsp::Audio_in::waitfordata): Ditto.
+       * fhandler_fifo.cc (fhandler_fifo::wait): Ditto.
+       * fhandler_serial.cc (fhandler_serial::raw_read): Ditto.
+       (fhandler_serial::raw_write): Ditto.
+       * select.cc (cygwin_select): Ditto.
+       * sigproc.h (cygwait): Rename from cygWFMO.  Define two argument and
+       single argument forms of this function.
+
+       * fhandler_tty.cc (fhandler_pty_slave::open): Use method to query if
+       tty is open.
+       (fhandler_pty_slave::read): Send SIGHUP when master is detected as
+       closed.
+       (fhandler_pty_common::close): Close input_available_event in callers
+       since master may need to signal it first.
+       (fhandler_pty_master::close): Lie and set input_available_event when
+       closing, then close input_available_event.
+       (fhandler_pty_slave::close): Close input_available_event explicitly
+       here.
+       * tty.h (tty::is_master_closed): Declare new method.
+
+2011-12-09  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * sigproc.cc (signal_exit): Revert reversion of 2011-12-04 change
+       since, otherwise, you see hangs when the signal pipe is closed.
+
+2011-12-08  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * select.cc (cygwin_select): Fifth time is the charm.
+
+2011-12-08  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * select.cc (cygwin_select): Make sure that 0 is returned when sel.wait
+       times out.
+
+2011-12-08  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * include/sys/wait.h: Add in all c++ functions.
+
+2011-12-08  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * select.cc (select_stuff::wait): Temporarily disallow APCS.
+
+2011-12-08  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * include/sys/wait.h: Ensure that C++ functions are only used when
+       using C++.
+
+2011-12-08  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * select.cc (cygwin_select): Make sure that poll is called when
+       appropriate.
+
+2011-12-08  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * dll_init.cc (dll_dllcrt0): Don't try to initialize dll data if we're
+       dynamically loaded since fork() doesn't work in that scenario anyway.
+       (dll_dllcrt0_1): Don't accommodate dynamically loaded dlls.
+       * exceptions.cc (ctrl_c_handler): Don't lock the process; there's too
+       much risk of deadlock.
+       * sigproc.cc (_cygtls::remove_wq): Don't try to remove anything from
+       the waitq if there is obviously nothing there.
+       * strace.cc (strace::activate): Allow stracing dynamically loaded
+       cygwin1.dll.
+
+2011-12-07  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * fhandler_termios.cc (tty_min::kill_pgrp): Don't send __SIGSETPGRP
+       to ourselves since presumably we are already initialized.
+
+2011-12-07  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * select.cc (cygwin_select): Add common introducer and leaver debug
+       output.
+       (select_stuff::poll): Remove unneeded debugging.
+
+2011-12-07  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * exceptions.cc (ctrl_c_handler): Remove _my_tls.remove since it can
+       cause deadlocks during exec and will eventually be handled anyway.
+
+2011-12-07  Corinna Vinschen  <vinschen@redhat.com>
+
+       * spawn.cc (child_info_spawn::worker): Add CREATE_BREAKAWAY_FROM_JOB
+       to all spawned processes.  Explain why.
+
+2011-12-06  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * fhandler_fifo.cc (fhandler_fifo::wait): Fix stupid typo and actually
+       wait for the handle.
+
+2011-12-05  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * sigproc.cc (close_my_readsig): New function.
+       (_cygtls::signal_exit): Close my_readsig via close_my_readsig(),
+       avoiding communication with the signal pipe.
+       (wait_sig): Close my_readsig via close_my_readsig().
+
+2011-12-05  Corinna Vinschen  <vinschen@redhat.com>
+
+       * mmap.cc (mlock): Replace LOCK_VM_IN_WSL with correct MAP_PROCESS.
+       (munlock): Ditto.
+       * ntdll.h: Rearrange to have all preprocessor definitions at the start
+       of the file.  Add comments to each definition block.
+       (MAP_PROCESS): Rename from LOCK_VM_IN_WSL.
+       (MAP_SYSTEM): Rename from LOCK_VM_IN_RAM.
+
+2011-12-04  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * sigproc.h (cygWFMO): Don't assume that cancellable event is always
+       available.
+       * fhandler_dsp.cc (fhandler_dev_dsp::Audio_out::waitforspace): Use
+       cygWFMO instead of WaitForMultipleObjects.
+       (fhandler_dev_dsp::Audio_in::waitfordata): Ditto.
+       * fhandler_fifo.cc (fhandler_fifo::wait): Ditto.
+       * fhandler_serial.cc (fhandler_serial::raw_read): Ditto.
+       (fhandler_serial::raw_write): Ditto.
+       * fhandler_tty.cc (fhandler_pty_slave::read): Ditto.
+       * select.cc (cygwin_select): Ditto for degenerate case.
+
+2011-12-04  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * sigproc.h (cygWFMO): Move inside "INSIDE_CYGWIN" #ifdef.
+
+2011-12-04  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * exceptions.cc (exception::handle): Drop abbreviation for "exception"
+       since I never remember what it stands for.
+       (sig_handle_tty_stop): Remove obsolete call to reset_signal_arrived.
+       (_cygtls::call_signal_handler): Rework to grab signal information from
+       _main_tls if none is set for _my_tls.  Try harder to keep thread
+       locked.
+       (reset_signal_arrived): Delete.
+       * fhandler.cc (fhandler_base_overlapped::wait_overlapped): Use new
+       cygWFMO call to wait for an event + standard cygwin stuff.  Modify
+       debug output to acccomodate new function.
+       * fhandler_console.cc (fhandler_console::read): Replace
+       WaitForMultipleObjects with cygWFMO.
+       * fhandler_socket.cc (get_inet_addr): Add comment.
+       * gendef (_sigdelayed): Remove call to reset_signal_arrived.
+       * sigproc.cc (_cygtls::signal_exit): Don't close my_readsig here unless
+       we're in the signal thread.
+       (create_signal_arrived): Create signal_arrived as auto-reset so that only
+       one thread is woken when a signal arrives.
+       * sigproc.h (cygWFMO): New function.
+       (reset_signal_arrived): Delete declaration.
+
+2011-12-03  Christopher Faylor  <me.cygwin2011@cgf.cx>
+
+       * mmap.cc (mlock): Add standard syscall return value debugging output.
+       (munlock): Ditto.
+       (posix_madvise): Ditto.
+
+       * signal.cc: Remove obsolete sigcatchers stuff throughout.
+       (sigaction_worker): Add function name parameter and use it to show
+       standard syscall return value debugging output.  Also add fault
+       protection.
+       (sigaction): Accommodate extra argument to sigaction_worker.
+       (siginterrupt): Ditto.
+       * syscalls.cc (read): Remove obsolete sigcatchers stuff.
+       (readv): Ditto.
+
 2011-12-03  Corinna Vinschen  <vinschen@redhat.com>
 
        * mmap.cc (mlock): Drop requesting SE_LOCK_MEMORY_PRIVILEGE.  Drop
        * pinfo.h (_pinfo::set_ctty): Change third parameter to
        fhandler_termios *.
 
-       * sigproc.cc (handle_sigsuspend): Don't special-case non-main threads.
+       * exceptions.cc (handle_sigsuspend): Don't special-case non-main threads.
 
 2011-04-15  Yaakov Selkowitz  <yselkowitz@users.sourceforge.net>