summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Fix memory handling in functions called from loadlocaleCorinna Vinschen2016-08-157-43/+96
| | | | Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* Implement newlocale, freelocale, duplocale, uselocaleCorinna Vinschen2016-08-154-8/+273
| | | | | | | | Add global const __C_locale for reference purposes. Bump Cygwin API minor number and DLL major version number to 2.6.0. Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* Use __get_global_locale function where appropriateCorinna Vinschen2016-08-151-18/+22
| | | | Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* Rearrange struct __locale_t pointers into an arrayCorinna Vinschen2016-08-158-103/+91
| | | | | | | This allows looping through the structs and buffers. Also rearrange definitions to follow order of LC_xxx values. Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* Change loadlocale to fill a __locale_t given as parameterCorinna Vinschen2016-08-1512-88/+87
| | | | | | | | | | | | Don't use global variables. This allows to call loadlocale from the yet to be created newlocale(). Rename _thr_locale_t to __locale_t (these locales are not restricted to threads so the name is misleading). Along these lines, fix _set_ctype to take a __locale_t as parameter. Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* Consolidate wctomb/mbtowc calls for POSIX-1.2008Corinna Vinschen2016-08-1531-356/+942
| | | | | | | | | | | | | | | | | | | | | - Remove charset parameter from low level __foo_wctomb/__foo_mbtowc calls. - Instead, create array of function for ISO and Windows codepages to point to function which does not require to evaluate the charset string on each call. Create matching helper functions. I.e., __iso_wctomb, __iso_mbtowc, __cp_wctomb and __cp_mbtowc are functions returning the right function pointer now. - Create __WCTOMB/__MBTOWC macros utilizing per-reent locale and replace calls to __wctomb/__mbtowc with calls to __WCTOMB/__MBTOWC. - Drop global __wctomb/__mbtowc vars. - Utilize aforementioned changes in Cygwin to get rid of charset in other, calling functions and simplify the code. - In Cygwin restrict global cygheap locale info to the job performed by internal_setlocale. Use UTF-8 instead of ASCII on the fly in internal conversion functions. - In Cygwin dll_entry, make sure to initialize a TLS area with a NULL _REENT->_locale pointer. Add comment to explain why. Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* POSIX-1.2008 per-thread locales, groundwork part 2Corinna Vinschen2016-08-1520-477/+272
| | | | | | | | | Move all locale category structure definitions into setlocale.h and remove other headers in locale subdir. Create inline accessor functions for current category struct pointers and use throughout. Use pointers to "C" locale category structs by default in __global_locale. Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* POSIX-1.2008 per-thread locales, groundwork part 1Corinna Vinschen2016-08-1531-484/+610
| | | | | | | | | | | | | | | | Introduce first cut of struct _thr_locale_t used for the locale_t definition. Introduce global instance called __global_locale used by default. Introduce internal inline functions __get_global_locale, __get_locale_r, __get_current_locale. Remove usage of global variables in favor of accessor functions pointing to __global_locale for now. Include all local headers in locale subdir from setlocale.h to get single include for internal locale access. Introduce __CTYPE_PTR macro to replace direct access to __ctype_ptr__ and use throughout in isxxx functions. Signed-off by: Corinna Vinschen <corinna@vinschen.de>
* Do not include wctype.h in wchar.h with _GNU_SOURCEYaakov Selkowitz2016-08-121-1/+1
| | | | | | | _GNU_SOURCE generally enables all features, but in this case the POSIX requirement to #include <wctype.h> for these is preferred. Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* Define va_list in stdio.h and wchar.hYaakov Selkowitz2016-08-122-3/+31
| | | | | | | | | This typedef, along with that of FILE in wchar.h, were XSI prior to inclusion in POSIX.1-2008. Fixes: https://sourceware.org/ml/newlib/2016/msg00640.html Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* Remove unused import/rexec.c accidentally imported by commit b6e90a06Corinna Vinschen2016-08-121-391/+0
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Include wctype.h in wchar.h as an XSI extensionYaakov Selkowitz2016-08-111-0/+4
| | | | | | | | | However, note that this inclusion is obsolescent in SUSv4 and therefore may be removed in the next revision. http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/wchar.h.html Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* Feature test macros overhaul: wctype.hYaakov Selkowitz2016-08-111-0/+2
| | | | | | iswblank was first introduced in C99. Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* kill(pid, sig) before waitpid() returns -1 for sig != 0Erik Bray2016-08-111-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a followup to a report back in 2011 about essentially the same issue: https://cygwin.com/ml/cygwin/2011-04/msg00031.html The same test program in that report demonstrates the issue, but with kill sending any non-zero signal. To reiterate, the problem here is POSIX compliance with respect to sending signals to zombie processes. http://pubs.opengroup.org/onlinepubs/9699919799/functions/kill.html claims: Existing implementations vary on the result of a kill() with pid indicating an inactive process (a terminated process that has not been waited for by its parent). Some indicate success on such a call (subject to permission checking), while others give an error of [ESRCH]. Since the definition of process lifetime in this volume of POSIX.1-2008 covers inactive processes, the [ESRCH] error as described is inappropriate in this case. In particular, this means that an application cannot have a parent process check for termination of a particular child with kill(). (Usually this is done with the null signal; this can be done reliably with waitpid().) In response to the originally issue, this was fixed *specifically* for the case of kill(pid, 0). But my reading of the above is that kill() should return 0 in this case regardless of the signal (modulo permissions, etc.). On Linux, for example, when calling kill with pid of a zombie process the kernel will happily deliver the signal to the relevant task_struct; it will just never be acted on since the task will never run again. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Feature test macros overhaul: wchar.h, part 2Yaakov Selkowitz2016-08-111-0/+30
| | | | | | | Many wchar.h functions were never properly guarded; these changes should make the header fully compliant. Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* arc: Fix strcmp for big endian without barrel shifterAnton Kolesov2016-08-111-3/+3
| | | | | | | | | | | | | strcmp.S contained invalid guard for code that used barrel-shifter optional instruction - it was checking for !ARC601 instead of whether barrel shifter is present. While it is true that ARC601 doesn't have barrel shifter, so does some other ARC EM configurations. 2016-07-21 Anton Kolesov <Anton.Kolesov@synopsys.com> * libc/machine/arc/strcmp.S: Fix big endian without barrel shifter. Signed-off-by: Anton Kolesov <Anton.Kolesov@synopsys.com>
* arc: Add align keyword.Claudiu Zissulescu2016-08-111-2/+2
| | | | | | | libgloss/ 2016-06-28 Claudiu Zissulescu <claziss@synopsys.com> * arc/crt0.S: Add align keyword.
* arc: Use prefetch instead of prealloc.Claudiu Zissulescu2016-08-111-0/+2
| | | | | | | | | | Prealloc instruction may not be present in all HS variants. Hence, use prefetch instead of prealloc. newlib/ 2016-04-26 Claudiu Zissulescu <claziss@synopsys.com> * libc/machine/arc/memset-archs.S: Use prefetch.
* arc: Use unaligned loads/stores for memcopy.Claudiu Zissulescu2016-08-111-0/+59
| | | | | | | | newlib/ 2016-04-26 Claudiu Zissulescu <claziss@synopsys.com> * libc/machine/arc/memcpy-archs.S: Add and enable memcpy using unaligned loads/stores.
* rtems: define _POSIX_CLOCK_SELECTION featureGedare Bloom2016-08-081-0/+1
| | | | | | Enable definition of clock_nanosleep() since it was added to RTEMS. Signed-off-by: Joel Sherrill <joelemail@rtems.org>
* rtems: add sys/mman.hGedare Bloom2016-08-081-0/+263
| | | | | | | This file was copied verbatim from FreeBSD and is in sync with the FreeBSD svn version used by rtems-libbsd. Signed-off-by: Joel Sherrill <joelemail@rtems.org>
* Workaround for filesystems with broken FileAllInformation info class (NcFsd)Corinna Vinschen2016-08-051-1/+24
| | | | | | See discussion starting at https://cygwin.com/ml/cygwin/2016-07/msg00350.html Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Fix console clear screen if buffer is fullCorinna Vinschen2016-08-031-13/+22
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Fix console clear screen in case of partial scrollingCorinna Vinschen2016-08-011-2/+2
| | | | | | | | | | Commit d7586cb incorrectly checked only for the new cursor position beyond the old cursor position to decide if we have to correct for user scrolling. Since this situation is handled just fine if the cursor is still visible, only perform the subsequent correction if the cursor is not in the visible console window. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Open process with PROCESS_QUERY_INFORMATION to fetch mapsCorinna Vinschen2016-08-011-2/+2
| | | | | | | | | | | | | | Commit ba58e5f lowered permission requirements when opening threads and processes to {PROCESS,THREAD}_QUERY_LIMITED_INFORMATION. However, when creating the /proc/<PID>/maps file, the call to VirtualQueryEx requires PROCESS_QUERY_INFORMATION access Note: It seems PROCESS_QUERY_LIMITED_INFORMATION is sufficient starting with Windows 8.1, but this is neither documented on MSDN, nor is it a safe bet. It may have to do with a fixed implementation of the UAC trust levels. Let's better follow the docs for now. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Fix clear screen behaviour of console when user scrolled up or downCorinna Vinschen2016-07-291-1/+21
| | | | | | | | | | We must call SetConsoleCursorPosition prior to SetConsoleWindowInfo, otherwise the scroll bars will not be updated by the OS. Make sure to scroll the console window by just the right amount to have the new cursor position one line after the used console buffer area at the top of the console window, no matter the scroll state. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Fix buffer scrolling when performing a "clear screen"Corinna Vinschen2016-07-281-19/+35
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Don't raise SIGTTIN from poll/selectCorinna Vinschen2016-07-273-10/+41
| | | | | | | | | | | | | SIGTTIN should be raised when read() is made on a tty in a backgrounded process, but not when it's tested with poll()/select(). I guess poll()/select() does need to call bg_check(), in order to detect the error conditions that notices (that is, if bg_check() returns bg_eof or bg_error, then fd is ready as an error condition exists) so add an optional parameter to fhandler_base::bg_select() to indicate that signals aren't desired. See https://cygwin.com/ml/cygwin-developers/2016-07/msg00004.html
* Remove redundant macro and function called `__getreent'Corinna Vinschen2016-07-272-9/+0
| | | | | | Just rely on the inline version in include/cygwin/config.h Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* posix.xml: Add missing unimplemented functions from POSIX-1.2013Corinna Vinschen2016-07-231-0/+4
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Change "nodomain+nobody" to "no+body"Corinna Vinschen2016-07-221-3/+3
| | | | | | Per https://cygwin.com/ml/cygwin-apps/2016-07/msg00059.html Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Handle WinFSP nobody accountCorinna Vinschen2016-07-191-0/+28
| | | | | | | | | Per discussion started at https://cygwin.com/ml/cygwin/2016-06/msg00347.html S-1-0-65534 == uid/gid 65534 == nodomain+nobody Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Fix typoCorinna Vinschen2016-07-181-1/+1
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Add release message for commit 71df3bfCorinna Vinschen2016-07-181-0/+3
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* truncl: Fix setting rounding bits in FPU control wordCorinna Vinschen2016-07-181-2/+6
| | | | | | | | | | | Mingw-w64, which is the source of this code, uses different definitions of the rounding bits FE_TONEAREST and friends. They immediately reflect the bit values in the FPU control word, while on Cygwin they are shifted down to become the values 0-3. Fix the bit computing expression to account for the difference. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* math.h: fix guards on basic M_ constantsYaakov Selkowitz2016-07-151-1/+1
| | | | | | | MAXFLOAT, M_PI, and friends date back to at least XPG4v2, so this guard was incorrect even prior to the feature test macros overhaul. Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* Put previous doc in correct sectionEric Blake2016-07-141-3/+3
| | | | | | SSIZE_MAX was a bug fix, not a huge change. Signed-off-by: Eric Blake <eblake@redhat.com>
* Add release message for commit fe9e3b4Corinna Vinschen2016-07-141-0/+3
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Transform all special chars in relative Windows path stringCorinna Vinschen2016-07-141-3/+6
| | | | | | | | get_nt_native_path handles the transposition of chars not allowed in Windows pathnames. However, it never starts transposition at the start of the string, which is wrong for relative paths. Fix it. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Fix 32-bit SSIZE_MAXEric Blake2016-07-142-1/+12
| | | | | | | | | | | | | | | | | | | POSIX requires that SSIZE_MAX have the same type as ssize_t, but on 32-bit, we were defining it as a long even though ssize_t resolves to an int. It also requires that SSIZE_MAX be usable via preprocessor #if, so we can't cheat and use a cast. If this were newlib, I'd have had to hack _intsup.h to probe the qualities of size_t (via gcc's __SIZE_TYPE__), similar to how we already probe the qualities of int8_t and friends, then cross our fingers that ssize_t happens to have the same rank (most systems do, but POSIX permits a system where they differ such as size_t being long while ssize_t is int). Unfortunately gcc gives us neither __SSIZE_TYPE__ nor __SSIZE_MAX__. On the other hand, our limits.h is specific to cygwin, so we can just shortcut to the correct results rather than being generic to all possible ABI. Signed-off-by: Eric Blake <eblake@redhat.com>
* Add release message for commit 82e0649Corinna Vinschen2016-07-141-0/+2
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* machine/_types.h: __blkcnt_t should be signedRay Donnelly2016-07-141-1/+1
| | | | | | | | | | [1] states: "blkcnt_t and off_t shall be signed integer types." This causes pacman to fail when the size requirement of the net update operation is negative, instead it calculated a huge positive number. [1] http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_types.h.html
* Improve description of Cygwin ldd utilityJon Turney2016-07-071-3/+13
| | | | | | | | | | Improve the description of Cygwin ldd utility to give a bit more detail about how it does what it does Also add a security warning (modelled after the one in the Linux manpage) that it may end up executing the file it is applied to. Signed-off-by: Jon Turney <jon.turney@dronecode.org.uk>
* Use <filename> tag, not <pathname> tagJon Turney2016-07-071-1/+1
| | | | | | | Fix an instance of the invalid <pathname> tag in Cygwin utils documentation, by using the valid <filename> tag instead. Signed-off-by: Jon Turney <jon.turney@dronecode.org.uk>
* Use <example> tag at same level as <para>, not inside itJon Turney2016-07-071-7/+18
| | | | | | | | | In Cygwin utils documentation, use the <example> tag at same level as <para>, not inside it. This improves the generated manpages. Signed-off-by: Jon Turney <jon.turney@dronecode.org.uk>
* Add release message for commit 8cff156Corinna Vinschen2016-07-061-1/+2
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* strace: Make sure strace timer isn't copied to child processCorinna Vinschen2016-07-061-1/+1
| | | | | | | | | At fork time the .data and .bss segments of the Cygwin DLL are copied over to the child process. This also copies the strace timer since it's in the .bss segment so far. Fix that by moving the strace timer out into the .data_cygwin_nocopy segment. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Fix typo in comment added by previous commitCorinna Vinschen2016-07-061-1/+1
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Redefine locale info in struct _reent for per-thread localesCorinna Vinschen2016-07-062-7/+11
| | | | | | | | | | | | | The _reent members _current_category and _current_locale are not used at all. _current_locale is set to "C" in various points of the code but its value is just as unused as _current_category. This patch redefines these members without changing the size of the structure to allow for an implementation of per-thread locales per POSIX-1.2008 (i.e. uselocale and usage of the per-thread locale in subsequent function calls). Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Regenerate newlib MakefilesJon Turney2016-07-041-2/+15
|