summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Cygwin: accounts: Report unrecognized db_* nsswitch.conf keywordsDavid Macek via Cygwin-patches2020-04-221-0/+2
| | | | Signed-off-by: David Macek <david.macek.0@gmail.com>
* Cygwin: accounts: Don't keep old schemes when parsing nsswitch.confDavid Macek via Cygwin-patches2020-04-222-4/+8
| | | | | | | | | | | | | | | | | The implicit assumption seemed to be that any subsequent occurence of the same setting in nsswitch.conf is supposed to rewrite the previous ones completely. This was not the case if the third or any further schema was previously defined and the last line defined less than that (but at least 2), for example: ``` db_home: windows cygwin /myhome/%U db_home: cygwin desc ``` Let's document this behavior as well. Signed-off-by: David Macek <david.macek.0@gmail.com>
* Cygwin: accounts: Unify nsswitch.conf db_* defaultsDavid Macek via Cygwin-patches2020-04-222-21/+11
| | | | Signed-off-by: David Macek <david.macek.0@gmail.com>
* Cygwin: Add David Macek to CONTRIBUTORSCorinna Vinschen2020-04-211-0/+1
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: symlinks: fix WSL symlink creation if cygdrive prefix is /Corinna Vinschen2020-04-211-4/+6
| | | | | | | | | | | | | | | | | | If the cygdrive prefix is /, then the following happens right now: $ ln -s /tmp/foo . $ ls -l foo lrwxrwxrwx 1 user group 12 Apr 15 23:44 foo -> /mnt/tmp/foo Fix this by skipping cygdrive prefix conversion to WSL drive prefix "/mnt", if the cygdrive prefix is just "/". There's no satisfying way to do the right thing all the time in this case anyway. For a description and the alternatives, see https://cygwin.com/pipermail/cygwin-developers/2020-April/011859.html Also, fix a typo in a comment. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* cygheap_pwdgrp: Handle invalid db_* entries correctlyDavid Macek via Cygwin-patches2020-04-171-1/+4
| | | | | | | | If the first scheme in db_* was invalid, the code would think there were no schemes specified and replace the second scheme with NSS_SCHEME_DESC. Signed-off-by: David Macek <david.macek.0@gmail.com>
* Cygwin: faq: disable outdated "sshd in domain" faqCorinna Vinschen2020-04-141-0/+2
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* proc_cpuinfo: Add PPIN support for AMDBrian Inglis2020-04-141-0/+1
| | | | | | Newer AMD CPUs support a feature called protected processor identification number (PPIN). This feature can be detected via CPUID_Fn80000008_EBX[23].
* Cygwin: utils: override definition of PMEM_EXTENDED_PARAMETERCorinna Vinschen2020-04-072-0/+2
| | | | | | | | | | PMEM_EXTENDED_PARAMETER is defined in the local winlean.h as long as mingw-w64 doesn't define it (in winnt.h). ntdll.h needs the definition for declaring NtMapViewOfSectionEx. cygpath.cc and ps.cc both include ntdll.h but not winlean.h, so they complain about the missing definition. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: mmap_alloc: fix comment to document using the extended memory APICorinna Vinschen2020-04-071-10/+13
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: threads: use extended memory API if availableCorinna Vinschen2020-04-071-3/+48
| | | | | | | | | | | | | So far Cygwin was jumping through hoops to restrict memory allocation to specific regions. With the advent of VirtualAlloc2 and MapViewOfFile3 (and it's NT counterpart NtMapViewOfSectionEx), we can skip searching for free space in the specific regions and just call these functions and let the OS do the job more efficiently and less racy. Use VirtualAlloc2 on W10 1803 and later in thread stack allocation. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: mmap: use extended memory API if availableCorinna Vinschen2020-04-071-10/+74
| | | | | | | | | | | | | So far Cygwin was jumping through hoops to restrict memory allocation to specific regions. With the advent of VirtualAlloc2 and MapViewOfFile3 (and it's NT counterpart NtMapViewOfSectionEx), we can skip searching for free space in the specific regions and just call these functions and let the OS do the job more efficiently and less racy. Use the new functions on W10 1803 and later in mmap. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: memory: declare extended memory APICorinna Vinschen2020-04-075-0/+69
| | | | | | | | | | | | | Windows 10 1803 introduced an extended memory API allowing to specify memory regions allocations are to be taken off. In preparation of using this API, define the struct MEM_EXTENDED_PARAMETER and friends. Declare and allow to autoload the functions VirtualAlloc2 and NtMapViewOfSectionEx. Introduce a wincap flag has_extended_mem_api. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: threads: add missing include of mmap_alloc.hCorinna Vinschen2020-04-071-0/+1
| | | | | | This is needed for using mmap_alloc.alloc() Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: threads: lower thread size from pool to 256 MegsCorinna Vinschen2020-04-071-1/+1
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: threads: use mmap area to fulfill requests for big stacksCorinna Vinschen2020-04-071-4/+6
| | | | | | | Otherwise big stacks have a higher probability to collide with randomized PEBs and TEBs after fork. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: symlinks: Allow traversing WSL symlinksCorinna Vinschen2020-04-051-0/+6
| | | | | | | | | | | | Unfortunately Windows doesn't understand WSL symlinks, despite being a really easy job. NT functions trying to access paths traversing WSL symlinks return the status code STATUS_IO_REPARSE_TAG_NOT_HANDLED. Handle this status code same as STATUS_OBJECT_PATH_NOT_FOUND in symlink_info::check to align behaviour to traversing paths with other non-NTFS type symlinks. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: docs: revamp docs explaining symlinksCorinna Vinschen2020-04-034-77/+146
| | | | | | | The descriptions of symlink handling are a bit dated, so revamp them and add the new WSL symlink type. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: symlinks: create WSL symlinks on supporting filesystemsCorinna Vinschen2020-04-033-26/+105
| | | | | | | | | WSL symlinks are reparse points containing a POSIX path in UTF-8. On filesystems supporting reparse points, use this symlink type. On other filesystems, or in case of error, fall back to the good old plain SYSTEM file. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: symlinks: fix WSL symlinks pointing to /mntCorinna Vinschen2020-04-021-15/+35
| | | | | | | | | | Commit 4a36897af392 allowed to convert /mnt/<drive> path prefixes to Cygwin cygdrive prefixes on the fly. However, the patch neglected WSL symlinks pointing to the /mnt directory. Rearrange path conversion so /mnt is converted to the cygdrive prefix path itself. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* winsup/cygwin: remove defines added in mingw-w64 v7.0.0Biswapriyo Nath2020-04-013-17/+0
| | | | Signed-off-by: Biswapriyo Nath <nathbappai@gmail.com>
* Cygwin: symlinks: support WSL symlinksCorinna Vinschen2020-03-273-0/+83
| | | | | | | | Treat WSL symlinks just like other symlinks. Convert absolute paths pointing to Windows drives via /mnt/<driveletter> to Windows-style paths <driveletter>: Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: serial: fix GCC warningCorinna Vinschen2020-03-261-1/+1
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* newlib/libm/math: Make pow/powf return qnan for snan argKeith Packard via Newlib2020-03-262-7/+16
| | | | | | | | The IEEE spec for pow only has special case for x**0 and 1**y when x/y are quiet NaN. For signaling NaN, the general case applies and these functions should signal the invalid exception and return a quiet NaN. Signed-off-by: Keith Packard <keithp@keithp.com>
* newlib/libm/common: Don't re-convert float to bits in modf/modffKeith Packard via Newlib2020-03-262-15/+5
| | | | | | | | These functions shared a pattern of re-converting the argument to bits when returning +/-0. Skip that as the initial conversion still has the sign bit. Signed-off-by: Keith Packard <keithp@keithp.com>
* newlib/libm/common: Fix modf/modff returning snanKeith Packard via Newlib2020-03-262-16/+4
| | | | | | | | | Recent GCC appears to elide multiplication by 1, which causes snan parameters to be returned unchanged through *iptr. Use the existing conversion of snan to qnan to also set the correct result in *iptr instead. Signed-off-by: Keith Packard <keithp@keithp.com>
* Fix spurious underflow exceptions for Bessel functions for double(from glibc ↵Joseph S. Myers2020-03-264-9/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | bug 14155) This fix comes from glibc, from files which originated from the same place as the newlib files. Those files in glibc carry the same license as the newlib files. Bug 14155 is spurious underflow exceptions from Bessel functions for large arguments. (The correct results for large x are roughly constant * sin or cos (x + constant) / sqrt (x), so no underflow exceptions should occur based on the final result.) There are various places underflows may occur in the intermediate calculations that cause the failures listed in that bug. This patch fixes problems for the double version where underflows occur in calculating the intermediate functions P and Q (in particular, x**-12 gets computed while calculating Q). Appropriate approximations are used for P and Q for arguments at least 0x1p28 and above to avoid the underflows. For sufficiently large x - 0x1p129 and above - the code already has a cut-off to avoid calculating P and Q at all, which means the approximations -0.125 / x and 0.375 / x can't themselves cause underflows calculating Q. This cut-off is heuristically reasonable for the point beyond which Q can be neglected (based on expecting around 0x1p-64 to be the least absolute value of sin or cos for large arguments representable in double). The float versions use a cut-off 0x1p17, which is less heuristically justifiable but should still only affect values near zeroes of the Bessel functions where these implementations are intrinsically inaccurate anyway (bugs 14469-14472), and should serve to avoid underflows (the float underflow for jn in bug 14155 probably comes from the recurrence to compute jn). ldbl-96 uses 0x1p129, which may not really be enough heuristically (0x1p143 or so might be safer - 143 = 64 + 79, number of mantissa bits plus total number of significant bits in representation) but again should avoid underflows and only affect values where the code is substantially inaccurate anyway. ldbl-128 and ldbl-128ibm share a completely different implementation with no such cut-off, which I propose to fix separately. Signed-off-by: Keith Packard <keithp@keithp.com>
* Revert "Cygwin: serial: read: if VMIN > 0, wait for VMIN chars in inbound queue"Corinna Vinschen2020-03-251-26/+12
| | | | | | | | | This reverts commit 082f2513c721e942d0fd563c4dc9117eee3513ab. Turns out, Linux as well as BSD really only wait for the smaller number, MIN or # of requested bytes. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* fhandler_serial: fix commentsCorinna Vinschen2020-03-251-3/+3
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: serial: read: if VMIN > 0, wait for VMIN chars in inbound queueCorinna Vinschen2020-03-251-12/+26
| | | | | | | | Per termios, read waits for MIN chars even if the number of requested bytes is less. This requires to add WaitCommEvent to wait non-busily for MIN chars prior to calling ReadFile, so, reintroduce it. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: serial: use per call OVERLAPPED structsCorinna Vinschen2020-03-234-81/+56
| | | | | | | | | | Sharing the OVERLAPPED struct and event object in there between read and select calls in the fhandler might have been a nice optimization way back when, but it is a dangerous, not thread-safe approach. Fix this by creating per-fhandler, per-call OVERLAPPED structs and event objects on demand. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: serial: select: call ClearCommError prior to calling WaitCommEventCorinna Vinschen2020-03-231-8/+18
| | | | | | This (hopefully) eliminates a race condition Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: serial: select: fix WaitCommEvent requestCorinna Vinschen2020-03-231-4/+12
| | | | | | | | - make sure event object is reset - set read_ready to true if WaitCommEvent returns success - improve debugging Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: serial: tcsetattr: set timeouts unconditionallyCorinna Vinschen2020-03-231-41/+38
| | | | | | | | | | | | | tcsetattr checks if the VTIME and VMIN values changed and only calls SetCommTimeouts if so. That's a problem if tcsetattr is supposed to set VTIME and VIMN to 0, because these are the start values anyway. But this requires to set ReadIntervalTimeout to MAXDWORD, which just doesn't happen. Fix this by dropping the over-optimization of checking the old values before calling SetCommTimeouts, Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: serial: avoid overrun of vtimeCorinna Vinschen2020-03-221-4/+4
| | | | | | | After changing the type of fhandler_serial::vtime_ to cc_t, vtime_ must be stored in 10s of seconds, not in milliseconds. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: serial: select: fix previous revamp patchÅke Rehnman2020-03-222-4/+9
| | | | | | - We need a verify function. - The event object referenced in WaitCommEvent must not be a local var, move it into fhandler_serial.
* Cygwin: serial: revamp overlapped IO in read and selectCorinna Vinschen2020-03-224-198/+84
| | | | | | | | Get rid of WaitCommEvent and using overlapped_armed to share the same overlapped operation between read and select. Rather, make sure to cancel the overlapped IO before leaving any of these functions. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: serial: read: revamp raw_read, change vmin_ and vtime_ to cc_tCorinna Vinschen2020-03-222-94/+117
| | | | | | | | | | | | | | | | | | | | | | | - Datatypes were incorrect, especially vmin_ and vtime_. Change them to cc_t, as in user space. - Error checking had a gap or two. Debug output used the wrong formatting. - Don't use ev member for ClearCommError and WaitCommEvent. Both returned values are different (error value vs. event code). The values are not used elsewhere so it doesn't make sense to store them in the object. Therefore, drop ev member. - Some variable names were not very helpful. Especially using n as lpNumberOfBytesTransferred from GetOverlappedResult and then actually printing it as if it makes sense was quite puzzeling. - Rework the loop and the definition of minchars so that it still makes sense when looping. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: serial: select: simplify peek_serialCorinna Vinschen2020-03-221-24/+19
| | | | | | | | | | | | | | | | | | | | | | | | | - Don't use ev member for ClearCommError and WaitCommEvent. Both returned values are different (error value vs. event code). The values are not used elsewhere so it doesn't make sense to store them in the object. - Drop local variable ready which is used inconsequentially. - Since WFSO already waits 10 ms, don't wait again if no char is in the inbound queue. - Avoid else if chains. - Only print one line of debug output on error. - Drop overlapped_armed < 0 check. This value is only set in fhandler_serial::raw_read if VTIME > 0, and even then it's only set to be immediately reset to 0 before calling ReadFile. So overlapped_armed is never actually < 0 when calling select. - Fix a screwed up statement order. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: Use a separate Start Menu folder for WoW64 installsJon Turney2020-03-212-7/+10
| | | | | | | | | This aligns the shortcuts to documentation with the setup changes in https://sourceware.org/pipermail/cygwin-apps/2020-March/039873.html v2: Create/remove the Start Menu directory as needed/possible Correctly use that directory when making shortcuts
* Fix hypotf missing mask in hi+lo decompositionFabian Schriever2020-03-191-2/+2
| | | | | | | | | | | Add the missing mask for the decomposition of hi+lo which caused some errors of 1-2 ULP. This change is taken over from FreeBSD: https://github.com/freebsd/freebsd/commit/95436ce20dab5a34ba46373410b96411b1734578 Additionally I've removed some variable assignments which were never read before being overwritten again in the next 2 lines.
* Fix modf/f for NaN inputFabian Schriever2020-03-192-0/+2
| | | | | For NaN input the modf/f procedures should return NaN instead of zero with the sign of the input.
* Fix for k_tan.c specific inputsFabian Schriever2020-03-181-8/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fix for k_tan.c is a copy from fdlibm version 5.3 (see also http://www.netlib.org/fdlibm/readme), adjusted to use the macros available in newlib (SET_LOW_WORD). This fix reduces the ULP error of the value shown in the fdlibm readme (tan(1.7765241907548024E+269)) to 0.45 (thereby reducing the error by 1). This issue only happens for large numbers that get reduced by the range reduction to a value smaller in magnitude than 2^-28, that is also reduced an uneven number of times. This seems rather unlikely given that one ULP is (much) larger than 2^-28 for the values that may cause an issue. Although given the sheer number of values a double can represent, it is still possible that there are more affected values, finding them however will be quite hard, if not impossible. We also took a look at how another library (libm in FreeBSD) handles the issue: In FreeBSD the complete if branch which checks for values smaller than 2^-28 (or rather 2^-27, another change done by FreeBSD) is moved out of the kernel function and into the external function. This means that the value that gets checked for this condition is the unreduced value. Therefore the input value which caused a problem in the fdlibm/newlib kernel tan will run through the full polynomial, including the careful calculation of -1/(x+r). So the difference is really whether r or y is used. r = y + p with p being the result of the polynomial with 1/3*x^3 being the largest (and magnitude defining) value. With x being <2^-27 we therefore know that p is smaller than y (y has to be at least the size of the value of x last mantissa bit divided by 2, which is at least x*2^-51 for doubles) by enough to warrant saying that r ~ y. So we can conclude that the general implementation of this special case is the same, FreeBSD simply has a different philosophy on when to handle especially small numbers.
* Cygwin: serial: wait for CancelIo completionCorinna Vinschen2020-03-161-1/+1
| | | | | | | | Per https://devblogs.microsoft.com/oldnewthing/20110202-00/?p=11613 GetOverlappedResult must be called blocking, waiting for the overlapped operation to complete. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* RTEMS: Include missing header and fix stubSebastian Huber2020-03-131-1/+2
| | | | Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
* Cygwin: pty: Add FreeConsole to destructor of pty slave.Takashi Yano via Cygwin-patches2020-03-131-2/+9
| | | | | | | - When pseudo console is closed, all the processes attched to the pseudo console are terminated. This causes the problem reported in https://sourceware.org/pipermail/cygwin/2020-March/244046.html. This patch fixes the issue.
* Cygwin: serial: try fix o_nonblockCorinna Vinschen2020-03-121-0/+10
|
* Cygwin: belatedly add Hans-Bernhard to CONTRIBUTORS fileCorinna Vinschen2020-03-111-0/+1
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: fix formatting: drop trailing whitespaceCorinna Vinschen2020-03-1199-117/+117
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: fix formatting: collapse whitespace-only linesCorinna Vinschen2020-03-1122-26/+26
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>