summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Cygwin: FIFO: make certain errors non-fatalKen Brown2020-07-161-11/+10
| | | | | | | | | If update_my_handlers fails to duplicate one or more handles, just mark the corresponding handlers as being in an error state. But if update_my_handlers is unable to open the process of the previous owner, it's likely that something serious has gone wrong, so we continue to make that a fatal error.
* Cygwin: FIFO: fix indentationKen Brown2020-07-161-84/+84
|
* Cygwin: FIFO: improve taking ownership in fifo_reader_threadKen Brown2020-07-161-21/+23
| | | | | | | | | | | | When a reader takes ownership in fifo_reader_thread, it now goes directly to the part of the main loop that listens for a connection. Previously it went back to the beginning of the loop. Also, if the reader has to delay taking ownership because the previous owner has not finished updating the shared fifo_client handlers, it now checks to see if cancel_evt has been set. Previously it might have had to spin its wheels unnecessarily only to eventually find that its thread had been canceled.
* Cygwin: FIFO: reduce I/O interleavingKen Brown2020-07-162-8/+50
| | | | | | | | | | | | | | | | Add a bool member 'last_read' to the fifo_client_handler structure, which is set to true on a successful read. This is used by raw_read as follows. When raw_read is called, it first locates the writer (if any) for which last_read is true. raw_read tries to read from that writer and returns if there is input available. Otherwise, it proceeds to poll all the writers, as before. The effect of this is that if a writer writes some data that is only partially read, the next attempt to read will continue to read from the same writer. This should reduce the interleaving of output from different writers.
* Cygwin: fhandler_fifo::hit_eof: improve reliabilityKen Brown2020-07-163-30/+6
| | | | | Use the writer count introduced in the previous commit to help detect EOF. Drop the maybe_eof method, which is no longer needed.
* Cygwin: FIFO: keep a writer count in shared memoryKen Brown2020-07-162-166/+124
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a reader opens, it needs to block if there are no writers open (unless is is opened with O_NONBLOCK). This is easy for the first reader to test, since it can just wait for a writer to signal that it is open (via the write_ready event). But when a second reader wants to open, all writers might have closed. To check this, use a new '_nwriters' member of struct fifo_shmem_t, which keeps track of the number of open writers. This should be more reliable than the previous method. Add nwriters_lock to control access to shmem->_nwriters, and remove reader_opening_lock, which is no longer needed. Previously only readers had access to the shared memory, but now writers access it too so that they can increment _nwriters during open/dup/fork/exec and decrement it during close. Add an optional 'only_open' argument to create_shmem for use by writers, which only open the shared memory rather than first trying to create it. Since writers don't need to access the shared memory until they have successfully connected to a pipe instance, they can safely assume that a reader has already created the shared memory. For debugging purposes, change create_shmem to return 1 instead of 0 when a reader successfully opens the shared memory after finding that it had already been created. Remove check_write_ready_evt, write_ready_ok_evt, and check_write_ready(), which are no longer needed. When opening a writer and looping to try to get a connection, recheck read_ready at the top of the loop since the number of readers might have changed. To slightly speed up the process of opening the first reader, take ownership immediately rather than waiting for the fifo_reader_thread to handle it.
* Cygwin: FIFO: fix problems finding new ownerKen Brown2020-07-162-33/+61
| | | | | | | | | | | | | | | | When the owning reader closes and there are still readers open, the owner needs to wait for a new owner to be found before closing its fifo_client handlers. This involves a loop in which dec_nreaders is called at the beginning and inc_nreaders is called at the end. Any other reader that tries to access shmem->_nreaders during this loop will therefore get an inaccurate answer. Fix this by adding an nreaders method and using it instead of dec_nreaders and inc_nreaders. Also add nreaders_lock to control access to the shmem->_nreaders. Make various other changes to improve the reliability of finding a new owner.
* ctype.h: Fix unused variable warningsAschref Ben Thabet2020-07-161-4/+9
| | | | | | | | | | | | | | | | | | | | If __HAVE_LOCALE_INFO__ is not defined, then the locale in the locale-specific ctype functions is ignored. In the previous implementation this resulted in compiler warnings. For example: int main() { locale_t locale; locale = duplocale(uselocale((locale_t)0)); isspace_l('x', locale); return 0; } gcc -Wall main.c main.c: In function 'main': main.c:6:11: warning: variable 'locale' set but not used [-Wunused-but-set-variable] 6 | locale_t locale; | ^~~~~~
* Cygwin: document previous poll/select patchCorinna Vinschen2020-07-161-0/+3
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: make sure failed sockets always signal writabilityMarc Hoersken2020-07-161-0/+6
| | | | | | | | Since FD_CONNECT is only given once, we manually need to set FD_WRITE for connection failed sockets to have consistent behaviour in programs calling poll/select multiple times. Example test to non-listening port: curl -v 127.0.0.1:47
* Cygwin: FAQ 1.6: Update "Who's behind the project?"Brian Inglis2020-07-131-17/+16
| | | | winsup/doc/faq-what.xml: remove Red Hat, Net, Win32 references and clean up
* Cygwin: FAQ 1.5: Clarify "What version is this"Brian Inglis2020-07-131-10/+19
| | | | | | | | | | | | | | Patch to: https://sourceware.org/git/?p=newlib-cygwin.git;f=winsup/doc/faq-what.xml;a=blob as a result of thread: https://cygwin.com/pipermail/cygwin/2020-July/245442.html and comments: https://cygwin.com/pipermail/cygwin-patches/2020q3/010331.html Relate Cygwin DLL to Unix kernel, add required options to command examples, differentiate Unix and Cygwin commands; mention that the cygwin package contains the DLL, replace setup.exe reference by Cygwin Setup program wording.
* Cygwin: Make dumper scan more than first 4GB of VM on x86_64Jon Turney2020-07-121-2/+2
| | | | | It's unclear that we need an end address here at all, or can just rely on VirtualQueryEx() failing when we reach the end of memory regions.
* Cygwin: Add a new win32_pstatus data type for modules on x86_64Jon Turney2020-07-122-4/+16
| | | | | | | Also take a bit more care with sizes in other data types to ensure they are the same on x86 and x86_64. Add some explanatory comments.
* Cygwin: Update ELF target used by dumper on x86_64Jon Turney2020-07-121-2/+8
| | | | | | Like [1], but actually making the effort to be 'usable' and 'tested'. [1] https://cygwin.com/pipermail/cygwin/2019-October/242815.html
* Cygwin: Slightly improve error_start documentationJon Turney2020-07-121-1/+5
|
* testsuite: Fix iconv tests to use new encoding config definesKeith Packard via Newlib2020-07-103-48/+47
| | | | | | | | _ICONV_CONVERTER -> ICONV_FROM_ENCODING. It's not perfect, as the library can support different from/to encodings now, but at least in the default configurations the tests now work. Signed-off-by: Keith Packard <keithp@keithp.com>
* libc/iconv: find_alias was mis-computing remaining alias table lengthKeith Packard via Newlib2020-07-101-1/+1
| | | | | | | | This caused the strnstr to walk off the end of the alias array and fetch invalid data. Instead of attempting to update 'len', just re-compute it based on the table end pointer that is already known. Signed-off-by: Keith Packard <keithp@keithp.com>
* libc/iconv: Remove unneeded pointer var for _iconv_aliasesKeith Packard via Newlib2020-07-102-6/+3
| | | | | | | The pointer value for the iconv alias data never changes, so get rid of the pointer and make it an array instead. Signed-off-by: Keith Packard <keithp@keithp.com>
* libc/iconv: Detect CES handler loading failureKeith Packard via Newlib2020-07-101-1/+1
| | | | | | | Fix the code checking for character set loading failure so that it checks the return value from the init function. Signed-off-by: Keith Packard <keithp@keithp.com>
* Fix invalid acl_entry_t on 32-bit CygwinDavid Allsopp2020-07-102-1/+5
| | | | | | | If the acl_t struct was at or above 0x80000000 then the pointer was sign-extended to 0xffff_ffff_8000_0000 and so the index was lost. Signed-off-by: David Allsopp <david.allsopp@metastack.com>
* Cygwin: convert sys_wcstombs/sys_mbstowcs wrapper to inline functionsCorinna Vinschen2020-07-104-66/+62
| | | | | | | | | | | This should slightly speed up especially path conversions, given there's one less function call rearranging all function arguments in registers/stack (and less stack pressure). For clarity, rename overloaded sys_wcstombs to _sys_wcstombs and sys_cp_mbstowcs to _sys_mbstowcs. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: Bump DLL version to 3.1.7Corinna Vinschen2020-07-091-1/+1
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: add microcode patch to release messagescygwin-3_1_6-releaseCorinna Vinschen2020-07-091-0/+3
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* format_proc_cpuinfo: fix microcode revision shift directionBrian Inglis2020-07-091-1/+1
|
* fhandler_proc.cc(format_proc_cpuinfo): add microcode registry lookup valuesBrian Inglis2020-07-091-9/+35
| | | | | | | | | | | Re: CPU microcode reported wrong in /proc/cpuinfo https://sourceware.org/pipermail/cygwin/2020-May/245063.html earlier Windows releases used different registry values to store microcode revisions depending on the MSR name being used to get microcode revisions: add these alternative registry values to the cpuinfo registry value lookup; iterate thru the registry data until a valid microcode revision is found; some revision values are in the high bits, so if the low bits are all clear, shift the revision value down into the low bits
* Removed #ifndef _ARM_PCS_VFP_ from sys/fenv.h for armEshan dhawan via Newlib2020-07-061-2/+2
| | | | Signed-off-by: Eshan dhawan <eshandhawan51@gmail.com>
* Cygwin: fix buffer overrun in cygwin_strcasecmpCorinna Vinschen2020-07-062-14/+23
| | | | | | | | | | | | | | | | | | | | | | | | | sys_mbstowcs is called with the destination buffer length set to MaximumLength from the receiving UNICODE_STRING buffer. This is twice as much as the actual size of the buffer in wchar_t units, which is the unit expected by sys_mbstowcs. sys_mbstowcs always attaches a NUL, within the destination buffersize given. But if the string is exactly one wchar_t less than the actual buffer, and the buffersize is given too large, sys_mbstowcs writes a NUL one wchar_t beyond the buffer. This has only been exposed with Cygwin 3.1.5 because alloca on newer gcc 9 apparently allocates more tightly. The alloca buffer here is requested with 16 bytes, which is exactly the number of bytes required for the string L"cmd.exe". Older gcc apparently allocated a few more bytes on the stack, while gcc 9 allocates in 16 byte granularity... Fix this by giving the correct destination buffer size to sys_mbstowcs. Fixes: https://cygwin.com/pipermail/cygwin/2020-June/245226.html Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* libm: machine: Add missing sparc and mips configurationCorinna Vinschen2020-07-037-3/+12683
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* mips fenv supportEshan dhawan via Newlib2020-07-0319-0/+662
| | | | Signed-off-by: Eshan dhawan <eshandhawan51@gmail.com>
* SPARC fenv supportEshan dhawan via Newlib2020-07-0317-0/+546
| | | | Signed-off-by: Eshan dhawan <eshandhawan51@gmail.com>
* fenv aarch64 supportEshan dhawan via Newlib2020-07-0216-3/+515
| | | | Signed-off-by: Eshan dhawan <eshandhawan51@gmail.com>
* pru: Fix memory corruption on syscall returnDimitar Dimitrov2020-07-021-0/+1
| | | | | | | | | | | | In the initial code I missed one level of pointer indirection. Instead of storing errno in impure_data, _impure_ptr was corrupted. Only simulator is impacted. Real targets have no OS and no syscalls. This resolves a bunch of stdio cases from the GCC testsuite: FAIL->PASS: gcc.c-torture/execute/printf-2.c -O0 execution test Signed-off-by: Dimitar Dimitrov <dimitar@dinux.eu>
* Cygwin: add new IPPROTO_TCP options to release notesCorinna Vinschen2020-07-012-0/+16
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: tcp: Support TCP_QUICKACKCorinna Vinschen2020-07-013-0/+49
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: tcp: Support TCP_USER_TIMEOUTCorinna Vinschen2020-07-014-0/+51
| | | | | | Use TCP_MAXRTMS on newer systems, TCP_MAXRT on older systems. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: tcp: Support TCP_KEEPIDLE, TCP_KEEPCNT, TCP_KEEPINTVLCorinna Vinschen2020-07-015-12/+178
| | | | | | | | | | Use WSAIoctl(SIO_KEEPALIVE_VALS) on older systems. Make sure that keep-alive timeout is equivalent to TCP_KEEPIDLE + TCP_KEEPCNT * TCP_KEEPINTVL on older systems, even with TCP_KEEPCNT being a fixed value on those systems. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: tcp: Support TCP_FASTOPENCorinna Vinschen2020-07-015-4/+93
| | | | | | TCP_FASTOPEN is supported since W10 1607. Fake otherwise. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: tcp: fix IPPROTO_TCP option handlingCorinna Vinschen2020-07-013-11/+16
| | | | | | | | | | - Drop definitions from <cygwin/sockets.h> - Drop options only available on BSD - Fix value of TCP_MAXSEG. It was still defined as the BSD value while WinSock uses another value - Handle the fact that TCP_MAXSEG is a R/O value in WinSock Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: pty, termios: Unify thoughts of read ahead beffer handling.Takashi Yano via Cygwin-patches2020-07-012-31/+26
| | | | | | | | | | | | | | | - Return value of eat_readahead() is redefined. The return values of fhandler_termios::eat_readahead() and fhandler_pty_slave:: eat_readahead() were little bit different. This patch unifies them to number of bytes eaten by eat_readahead(). - Considerration for raixget() is added to fhandler_pty_master:: accept_input() code. - Transfering contents of read ahead buffer in fhandler_pty_master::transfer_input_to_pcon() is removed since it is not necessary. - fhandler_pty_slave::eat_readahead() ckecks EOL only when ICANON is set. - Guard for _POSIX_VDISABLE is added in checking EOL.
* Cygwin: pty: Discard CSI > Pm m sequence from native windows apps.Takashi Yano via Cygwin-patches2020-07-011-0/+28
| | | | | | | | | - If vim is started from WSL (Ubuntu) which is executed in pseudo console in mintty, shift key and ctrl key do not work. Though this issue is similar to the issue resolved by commit 4527541ec66af8d82bb9dba5d25afdf489d71271, that commit is not effective for this issue. This patch fixes the issue by discarding "CSI > Pm m" in fhandler_pty_master::pty_master_fwd_thread().
* fenv support armEshan dhawan via Newlib2020-06-0923-3/+1393
| | | | Signed-off-by: Eshan dhawan <eshandhawan51@gmail.com>
* Regenerate libm/machine configuration files for powerpcJeff Johnston2020-06-094-3/+6342
|
* Cygwin: pty: Fix screen distortion after less for native apps again.Takashi Yano via Cygwin-patches2020-06-054-37/+21
| | | | | | | | | | | | | - Commit c4b060e3fe3bed05b3a69ccbcc20993ad85e163d seems to be not enough. Moreover, it does not work as expected at all in Win10 1809. This patch essentially reverts that commit and add another fix. After all, the cause of the problem was a race issue in switch_to_pcon_out flag. That is, this flag is set when native app starts, however, it is delayed by wait_pcon_fwd(). Since the flag is not set yet when less starts, the data which should go into the output_handle accidentally goes into output_handle_cyg. This patch fixes the problem more essentially for the cause of the problem than previous one.
* hard float support for PowerPC taken from FreeBSDEshan dhawan via Newlib2020-06-0318-0/+491
| | | | Signed-off-by: Eshan dhawan <eshandhawan51@gmail.com>
* Bump version to 3.1.6Corinna Vinschen2020-06-011-1/+1
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: pty: Fix screen distortion after using less for native apps.cygwin-3_1_5-releaseTakashi Yano via Cygwin-patches2020-06-011-8/+11
| | | | | | - If the output of non-cygwin apps is browsed using less, screen is ocasionally distorted after less exits. This frequently happens if cmd.exe is executed after less. This patch fixes the issue.
* Cygwin: pty: Revise the code which prevents undesired window title.Takashi Yano via Cygwin-patches2020-05-311-2/+7
| | | | | | | - In current pty, the window title can not be set from non-cygwin program due to the code which prevents overwriting the window title to "cygwin-console-helper.exe" in fhandler_pty_master::pty_ master_fwd_thread(). This patch fixes the issue.
* Cygwin: pty: Clean up fhandler_pty_master::pty_master_fwd_thread().Takashi Yano via Cygwin-patches2020-05-311-18/+0
| | | | - Remove the code which is not necessary anymore.
* Cygwin: console: Discard some unsupported escape sequences.Takashi Yano via Cygwin-patches2020-05-311-16/+38
| | | | | | | | | | | - If the cygwin vim is started from a non-cygwin process which is executed in pseudo console, shift key and ctrl key do not work. In this case, vim is executed under /dev/cons*. If vim outputs escape sequence which is not supported by pseudo console, the escape sequence is leaked into the parent pty. This causes unexpected results. This patch fixes the issue by discarding "CSI > Pm m". "OSC 10;? BEL/ST" and "OSC 11;? BEL/ST" are discarded as well.