Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/winsup
AgeCommit message (Collapse)Author
2020-08-26winsup/doc/faq-api.xml, -programming.xml: change Win32 to Windows/APIBrian Inglis
2020-08-26winsup/doc/faq-setup.xml, faq-using.xml: update setup FAQBrian Inglis
change all kinds of setup references to "the Cygwin Setup program"; emphasize 64 bit and deemphasize 32 bit; update options list; explain why installing everything is now extremely inadvisable, with stats
2020-08-24Cygwin: cwdstuff::get: clean up debug_printf outputKen Brown
Set errno = 0 at the beginning so that the debug_printf call at the end doesn't report a nonzero errno left over from some other function call.
2020-08-22Cygwin: pty: Implement new pseudo console support.Takashi Yano
- In this implementation, pseudo console is created for each native console app. Advantages and disadvantages of this implementation over the previous implementation are as follows. Advantages: 1) No performance degradation in pty output for cygwin process. https://cygwin.com/pipermail/cygwin/2020-February/243858.html 2) Free from the problem caused by difference of behaviour of control sequences between real terminal and pseudo console. https://cygwin.com/pipermail/cygwin/2019-December/243281.html https://cygwin.com/pipermail/cygwin/2020-February/243855.html 3) Free from the problem in cgdb and emacs gud. https://cygwin.com/pipermail/cygwin/2020-January/243601.html https://cygwin.com/pipermail/cygwin/2020-March/244146.html 4) Redrawing screen on executing native console apps is not necessary. 5) cygwin-console-helper is not necessary for the pseudo console support. 6) The codes for pseudo console support are much simpler than that of the previous one. Disadvantages: 1) The cygwin program which calls console API directly does not work. 2) The apps which use console API cannot be debugged with gdb. This is because pseudo console is not activated since gdb uses CreateProcess() rather than exec(). Even with this limitation, attaching gdb to native apps, in which pseudo console is already activated, works. 3) Typeahead key inputs are discarded while native console app is executed. Simirally, typeahead key inputs while cygwin app is executed are not inherited to native console app. 4) Code page cannot be changed by chcp.com. Acctually, chcp works itself and changes code page of its own pseudo console. However, since pseudo console is recreated for another process, it cannot inherit the code page. 5) system_printf() does not work after stderr is closed. (Same with cygwin 3.0.7) 6) Startup time of native console apps is about 3 times slower than previous implemenation. 7) Pseudo console cannot be activated if it is already activated for another process on same pty.
2020-08-22Cygwin: bump version to 3.2.0Corinna Vinschen
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-08-20Cygwin: strace: ignore GCC exceptionscygwin-3_1_7-releaseKen Brown
Any C++ app that calls 'throw' on 64-bit Cygwin results in an exception of type STATUS_GCC_THROW (0x20474343) generated by the C++ runtime. Don't pollute the strace output by printing information about this and other GCC exceptions.
2020-08-20Cygwin: add header defining GCC exception codesKen Brown
Include it in exceptions.cc instead of defining the exception codes there.
2020-08-18Cygwin: main exception handler (64-bit): continue GCC exceptionsKen Brown
This is necessary in order to be consistent with the following comment in the definition of _Unwind_RaiseException() in the GCC source file libgcc/unwind-seh.c: The exception handler installed in crt0 will continue any GCC exception that reaches there (and isn't marked non-continuable). Previously we failed to do this and, as a consequence, the C++ runtime didn't call std::terminate after an unhandled exception. This fixes the problem reported here: https://cygwin.com/pipermail/cygwin/2019-October/242795.html https://sourceware.org/pipermail/cygwin/2020-August/245897.html
2020-08-17Cygwin: pty: Change the timing of set_locale() call again.Takashi Yano via Cygwin-patches
- After commit 095972ce5b1d319915501a7e381802914bed790c, charset conversion in mintty is broken if charset is set to other than UTF-8. This seems to be caused because mintty does not set locale yet at fork() call. This patch changes the timing of set_locale() call again to avoid this issue.
2020-08-13Cygwin: pty: Change the timing of setup_locale() call.Takashi Yano via Cygwin-patches
- If native app is exec()'ed in a new pty, setup_locale() loses the chance to be called. For example, with "mintty -e cmd", charset conversion does not work as expected. This patch fixes the issue.
2020-08-11Cygwin: pty: Add a workaround for issue of starting a lot of mintty.Takashi Yano
- If a lot of mintty are started in a short time from a mintty, some of them hang with empty screen, crash immediately or hang on exiting mintty. The following report seems to be related to this issue. https://cygwin.com/pipermail/cygwin/2020-August/245751.html The cause is not clear at all, but this patch seems to solve the issue.
2020-08-07Cygwin: cygserver: build with -Wimplicit-fallthrough=5Ken Brown
Define the pseudo keyword 'fallthrough' in woutsup.h to support this.
2020-08-07Cygwin: Use documented QueryWorkingSetEx() in dumperJon Turney
In dumper, use the documented QueryWorkingSetEx(), rather than the undocumented NtQueryVirtualMemory() with MemoryWorkingSetExInformation.
2020-08-07Cygwin: cygserver: build with -Wimplicit-fallthrough=4 -WerrorCorinna Vinschen
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-08-07Cygwin: utils: build with -Wimplicit-fallthrough=4 -WerrorCorinna Vinschen
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-08-07Cygwin: utils: convert usage() to proper noreturn function throughoutCorinna Vinschen
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-08-07Cygwin: utils: cygcheck: avoid GCC warning concatenating stringsCorinna Vinschen
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-08-07Cygwin: utils: refresh tzmapCorinna Vinschen
- update path to Unicode windowsZones.xml file - drop Windows XP considerations - regenerate tzmap.h Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-08-05Cygwin: Add 'fallthrough' pseudo keyword for switch/case useCorinna Vinschen
This patch has been inspired by the Linux kernel patch 294f69e662d1 compiler_attributes.h: Add 'fallthrough' pseudo keyword for switch/case use written by Joe Perches <joe AT perches DOT com> based on an idea from Dan Carpenter <dan DOT carpenter AT oracle DOT com>. The following text is from the original log message: Reserve the pseudo keyword 'fallthrough' for the ability to convert the various case block /* fallthrough */ style comments to appear to be an actual reserved word with the same gcc case block missing fallthrough warning capability. All switch/case blocks now should end in one of: break; fallthrough; goto <label>; return [expression]; continue; In C mode, GCC supports the __fallthrough__ attribute since 7.1, the same time the warning and the comment parsing were introduced. Cygwin-only: add an explicit -Wimplicit-fallthrough=5 to the build flags.
2020-08-05Cygwin: Fix missing breaks in switch statementCorinna Vinschen
Two switch statements in sysconf() and fhandler_fifo::take_ownership were missing breaks. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-08-04Cygwin: FIFO: add a third pass to raw_readKen Brown
Currently raw_read makes two passes through the list of clients. On the first pass it tries to read from the client from which it last read successfully. On the second pass it tries to read from all connected clients. Add a new pass in between these two, in which raw_read tries to read from all clients that are in the fc_input_avail case. This should be more efficient in case select was previously called and detected input available. Slightly tweak the first pass. If a client is marked as having the last successful read but reading from it now finds no input, don't unmark it unless we successfully read from a different client on one of the later passes.
2020-08-04Cygwin: FIFO: fix indentationKen Brown
2020-08-04Cygwin: FIFO: synchronize the fifo_reader and fifosel threadsKen Brown
The fifo_reader thread function and the function select.cc:peek_fifo() can both change the state of a fifo_client_handler. These changes are made under fifo_client_lock, so there is no race, but the changes can still be incompatible. Add code to make sure that only one of these functions can change the state from its initial fc_listening state. Whichever function does this calls the fhandler_fifo::record_connection method, which is now public so that peek_fifo can call it. Slightly modify that method to make it suitable for being called by peek_fifo. Make a few other small changes to the fifo_reader thread function to change how it deals with the STATUS_PIPE_CLOSING value that can (rarely) be returned by NtFsControlFile. Add commentary to fhandler_fifo.cc to explain fifo_client connect states and where they can be changed.
2020-08-04Cygwin: FIFO: don't read from pipes that are closingKen Brown
Don't try to read from fifo_client_handlers that are in the fc_closing state. Experiments have shown that this always yields STATUS_PIPE_BROKEN, so it just wastes a Windows system call. Re-order the values in enum fifo_client_connect_state to reflect the new status of fc_closing.
2020-08-04Cygwin: FIFO: reorganize some fifo_client_handler methodsKen Brown
Rename the existing set_state() to query_and_set_state() to reflect what it really does. (It queries the O/S for the pipe state.) Add a new set_state() method, which is a standard setter, and a corresponding getter get_state().
2020-08-04Cygwin: FIFO: add a timeout to take_ownershipKen Brown
fhandler_fifo::take_ownership() is called from select.cc::peek_fifo and fhandler_fifo::raw_read and could potentially block indefinitely if something goes wrong. This is always undesirable in peek_fifo, and it is undesirable in a nonblocking read. Fix this by adding a timeout parameter to take_ownership. Arbitrarily use a 1 ms timeout in peek_fifo and a 10 ms timeout in raw_read. These numbers may have to be tweaked based on experience. Replace the call to cygwait in take_ownership by a call to WFSO. There's no need to allow interruption now that we have a timeout.
2020-08-04Cygwin: FIFO: fix timing issue with owner changeKen Brown
fhandler_fifo::take_ownership() tacitly assumes that the current owner's fifo_reader_thread will be woken up from WFMO when update_needed_evt is signaled. But it's possible that the the current owner's fifo_reader_thread is at the beginning of its main loop rather than in its WFMO call when that event is signaled. In this case the owner will never see that the event has been signaled, and it will never update the shared fifo_client_handlers. The reader that wants to take ownership will then spin its wheels forever. Fix this by having the current owner call update_shared_handlers at the beginning of its loop, if necessary.
2020-08-04Cygwin: FIFO: lock fixesKen Brown
Add some missing locks and remove one extra unlock. Clarify for some functions whether caller or callee acquires lock, and add appropriate comments.
2020-08-04fhandler_proc.cc(format_proc_cpuinfo): use _small_sprintf %X for microcodeBrian Inglis
microcode is unsigned long long, printed by _small_sprintf using %x; Cygwin32 used last 4 bytes of microcode for next field MHz, printing 0; use correct _small_sprintf format %X to print microcode, producing correct MHz value under Cygwin32
2020-08-04fhandler_proc.cc(format_proc_cpuinfo): add SERIALIZE instruction flagBrian Inglis
CPUID 7:0 EDX[14] serialize added in linux-next 5.8 by Ricardo Neri-Calderon: The Intel architecture defines a set of Serializing Instructions (a detailed definition can be found in Vol.3 Section 8.3 of the Intel "main" manual, SDM). However, these instructions do more than what is required, have side effects and/or may be rather invasive. Furthermore, some of these instructions are only available in kernel mode or may cause VMExits. Thus, software using these instructions only to serialize execution (as defined in the manual) must handle the undesired side effects. As indicated in the name, SERIALIZE is a new Intel architecture Serializing Instruction. Crucially, it does not have any of the mentioned side effects. Also, it does not cause VMExit and can be used in user mode. This new instruction is currently documented in the latest "extensions" manual (ISE). It will appear in the "main" manual in the future. https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/arch/x86/include/asm/cpufeatures.h?id=85b23fbc7d88f8c6e3951721802d7845bc39663d
2020-08-03Cygwin: posix_spawn: add Cygwin-specific code fixing process synchronisationCorinna Vinschen
Newlib's posix_spawn has been taken from FreeBSD. The code relies on BSD-specific behaviour of vfork, namely the fact that vfork blocks the parent until the child exits or calls execve as well as the fact that the child shares parent memory in non-COW mode. This behaviour can't be emulated by Cygwin. Cygwin's vfork is equivalent to fork. This is POSIX-compliant, but it's lacking BSD's vfork ingrained synchronization of the parent to wait for the child calling execve, or the chance to just write a variable and the parent will see the result. So this requires a Cygwin-specific solution. The core function of posix_spawn, called do_posix_spawn is now implemented twice, once using the BSD method, and once for Cygwin using Windows synchronization under the hood waiting for the child to call execve and signalling errors upstream. The Windows specifics are hidden inside Cygwin, so newlib only calls internal Cygwin functions. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-07-31Cygwin: Speed up dumperJon Turney
Stop after we've written the dump in response to the initial breakpoint EXCEPTION_DEBUG_EVENT we recieve for attaching to the process. (rather than bogusly sitting there for 20 seconds waiting for more debug events from a stopped process after we've already written the dump).
2020-07-31Cygwin: Remove synchronization event from dumperJon Turney
The use of the 'cygwin_error_start_event' for synchronization with dumper was removed from the DLL in commit 8abeff1e (April 2001).
2020-07-31Cygwin: Add --nokill dumper optionJon Turney
Add --nokill option to dumper, for compatibility with minidumper, and to assist with testing.
2020-07-28Cygwin: Decorate NtQueryVirtualMemory() to fix 32-bit buildJon Turney
Decorate NtQueryVirtualMemory() with NTAPI (for stdcall) to fix 32-bit build. Reported-by: Takashi Yano <takashi.yano@nifty.ne.jp>
2020-07-24fhandler_proc.cc(format_proc_cpuinfo): add flags and TLB sizeBrian Inglis
update to Linux-next 5.8 order fields and flags: add amd_dcm, arch_lbr, arch_perfmon, art, cpuid, extd_apicid, ibpb, ibrs, ibrs_enhanced, nonstop_tsc_s3, nopl, rep_good, ring3mwait, ssbd, stibp, tsc_known_freq, tsc_reliable, xtopology flags; add TLB size line; add ftuprint macro for feature test unconditional flag print; add commented out flags requiring CR or MSR access in print order with comment explaining issue; make cpuid leaf numbers consistent 8 hex digits for searching
2020-07-22Cygwin: mmap: Remove AT_ROUND_TO_PAGE workaroundCorinna Vinschen
It's working on 32 bit OSes only anyway. It even fails on WOW64. Drop unsupported NtMapViewOfSection flags. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-07-22Cygwin: mmap: document recent bugfixKen Brown
2020-07-21Cygwin: Use MEMORY_WORKING_SET_EX_INFORMATION in dumperJon Turney
Use the (undocumented) MEMORY_WORKING_SET_EX_INFORMATION in dumper to determine if a MEM_IMAGE region is unsharable, and hence has been modified. After this, we will end up dumping memory regions where: - state is MEM_COMMIT (i.e. is not MEM_RESERVE or MEM_FREE), and -- type is MEM_PRIVATE and protection allows reads (i.e. not a guardpage), or -- type is MEM_IMAGE and attribute is non-sharable (i.e. it was WC, got written to, and is now a RW copy)
2020-07-21Cygwin: Don't dump non-writable image regionsJon Turney
After this, we will end up dumping memory regions where: - state is MEM_COMMIT (i.e. is not MEM_RESERVE or MEM_FREE), and -- type is MEM_PRIVATE and protection allows reads (i.e. not a guardpage), or -- type is MEM_IMAGE and protection allows writes Making this decision based on the current protection isn't 100% correct, because it may have been changed using VirtualProtect(). But we don't know how to determine if a region is shareable. (As a practical matter, anything which gets us the stack (MEM_PRIVATE) and .data/.bss (RW MEM_IMAGE) is going to be enough for 99% of cases)
2020-07-21Cygwin: Drop excluded regions list from dumperJon Turney
Drop excluded regions, now it's always empty
2020-07-21Cygwin: Remove reading of PE for section flags from dumperJon Turney
2020-07-21Cygwin: Show details of all memory regions in dumper debug outputJon Turney
2020-07-20Cygwin: mmap: constify pagesize throughoutCorinna Vinschen
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-07-20Cygwin: mmap: fix mapping beyond EOF on 64 bitKen Brown
Commit 605bdcd410384dda6db66b9b8cd19e863702e1bb enabled mapping beyond EOF in 64 bit environments. But the variable 'orig_len' did not get rounded up to a multiple of 64K. This rounding was done on 32 bit only. Fix this by rounding up orig_len on 64 bit, in the same place where 'len' is rounded up. Rounding up is needed to make sigbus_page_len a multiple of the allocation granularity. In addition, failing to round up could cause orig_len to be smaller than len. Since these are both unsigned values, the statement 'orig_len -= len' could then cause orig_len to be huge, and mmap would fail with errno EFBIG. I observed this failure while debugging the problem reported in https://sourceware.org/pipermail/cygwin/2020-July/245557.html. The failure can be seen by running the test case in that report under gdb or strace.
2020-07-20Cygwin: pty: Fix a bug on redirecting something to /dev/pty*.Takashi Yano via Cygwin-patches
- After commit 0365031ce1347600d854a23f30f1355745a1765c, key input becomes not working by following steps. 1) Start cmd.exe in mintty. 2) Open another mintty. 3) Execute "echo AAA > /dev/pty*" (pty* is the pty opened in 1.) This patch fixes the issue.
2020-07-20Cygwin: sockets: Rearrange check for connect failureCorinna Vinschen
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-07-16Cygwin: FIFO: document recent fixesKen Brown
2020-07-16Cygwin: FIFO: update commentaryKen Brown
2020-07-16Cygwin: FIFO: clean upKen Brown
Remove the fhandler_fifo::get_me method, which is no longer used. Make the methods get_owner, set_owner, owner_lock, and owner_unlock private.