summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Cygwin: document latest changesCorinna Vinschen2018-11-292-0/+46
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: implement extensible clock interfaceCorinna Vinschen2018-11-2920-295/+539
| | | | | | | | | | | | | | | | | | | | | | | | | | - Drop hires_[nm]s clocks, rename hires.h to clock.h. - Implement clk_t class as an extensible clock class in new file clock.cc. - Introduce get_clock(clock_id) returning a pointer to the clk_t instance for clock_id. Provide the following methods along the lines of the former hires classes: void clk_t::nsecs (struct timespec *); ULONGLONG clk_t::nsecs (); LONGLONG clk_t::usecs (); LONGLONG clk_t::msecs (); void clk_t::resolution (struct timespec *); - Add CLOCK_REALTIME_COARSE, CLOCK_MONOTONIC_RAW, CLOCK_MONOTONIC_COARSE and CLOCK_BOOTTIME clocks. - Allow clock_nanosleep, pthread_condattr_setclock and timer_create to use all new clocks (both clocks should be usable with a small tweak, though). - Bump DLL major version to 2.12. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* time.h: Introduce Linux-specific CLOCK id valuesCorinna Vinschen2018-11-291-4/+18
| | | | | | | | | | | | | | | - Add CLOCK_REALTIME_COARSE, CLOCK_MONOTONIC_RAW, CLOCK_MONOTONIC_COARSE and CLOCK_BOOTTIME - Guard new values with __GNU_VISIBLE - Add CLOCK_REALTIME_COARSE as (clockid_t) 0 for simplicity (It allows to have all values < 8 and so be used as array index into an array of clocks) - Fix macro bracketing Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: timers: clock_setres: make no-opCorinna Vinschen2018-11-291-36/+2
| | | | | | | | clock_setres is a questionable function only existing on QNX. Disable the function, just return success for CLOCK_REALTIME to maintain backward compatibility. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: pthread_cond_timedwait: make sure to wait until abstime finishesCorinna Vinschen2018-11-291-8/+16
|
* Cygwin: timers: use spinlock to prime hires_ns thread-safeCorinna Vinschen2018-11-262-15/+13
| | | | | | | | The current method to make hires_ns priming thread-safe isn't thread-safe. Rather than hoping that running the thread in TIME_CRITICAL priority is doing the right thing, use a spinlock. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: timers: drop error handling for Windows perf timer functionsCorinna Vinschen2018-11-261-30/+7
| | | | | | | Per MSDN, the perf timer functions always succeed on Windows XP or later. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: timers: Simplify hires_ms and hires_nsCorinna Vinschen2018-11-262-11/+2
| | | | | | Drop hires_base and move inited into hires_ns. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: spinlock: remove useless get_ll callCorinna Vinschen2018-11-261-1/+1
| | | | | | | LARGE_INTEGER has QuadPart anyway, no reason to compute the 64 bit value from HighPart and LowPart. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Builtin enable return code with SYS_EXIT_EXTENDEDMatthew Malcomson2018-11-261-19/+43
| | | | | | | A previous commit introduced the ability to use the semi-hosting SYS_EXIT_EXTENDED operation to libgloss, this commit adds the same ability to the sys/arm/ backend so that building newlib only will provide the same capabilities.
* Add libgloss install-pdf and install-html targets.Jim Wilson2018-11-202-1/+30
| | | | | | | | | | | | | | The toplevel makefile used by binutils/gcc/newlib/etc has install-pdf and install-html targets, but they fail because libgloss doesn't support them. Tested with an arm-eabi combined tree build and install, and verifying that the install-pdf and install-html targets now work, and that the pdf and html doc files are now in the install tree. libgloss/ * Makefile.in (install-html, install-pdf): New. * doc/Makefile.in (htmldir, pdfdir): New. (porting.ps): Delete white space on blank line. (install-pdf, install-html): New.
* Enable return code with semi-hosting SYS_EXIT_EXTENDEDMatthew Malcomson2018-11-192-22/+20
| | | | | | | | | | | | | | | | | | | | | | | The _exit function currently passes -1 as a "sig" to the _kill function as an invalid signal number so that _kill can distinguish between an abort and a standard exit. For boards using the SYS_EXIT_EXTENDED semi-hosting operation to return a status code, this means that the "status" paramter to _exit is ignored and the return code is always -1. https://developer.arm.com/docs/100863/latest/semihosting-operations/sys_exit_extended-0x20 This patch puts shared code between _kill and _exit into a new function _kill_shared that takes the semi-hosting "reason" to use (if semi-hosting is available) as an argument. For semi-hosting _kill_shared provides that "reason". Without the "sig" argument being used to distinguish between a normal and abnormal exit, the _exit function can provide the return code to be used if the SYS_EXIT_EXTENDED operation is available. Hence the exit code can be returned.
* Fix issue with dst bias in memsetWilco Dijkstra2018-11-081-0/+1
| | | | | | | | | | | | This patch fixes an issue in the previous memset loop change. If the zva size is >= 256 and there are more than 64 bytes left in the tail, we could enter the loop and thus need to rebias dst by 32 as well. Since no known CPUs use this size this can't be tested natively, so I've tested it on a simulator initialized with a large zva size. --
* Cygwin: Bump DLL version to 2.11.3Corinna Vinschen2018-11-081-1/+1
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Fix v850 target for RTEMScygwin-2_11_2-releaseSebastian Huber2018-11-081-1/+1
| | | | | | | | | | | | | | | Do not define __ATTRIBUTE_IMPURE_PTR__ for RTMES on the v850 target. The previous definition lead to the following linker error in combination with -fdata-sections: relocation truncated to fit: R_V810_GPWLO_1 against symbol `_global_impure_ptr' defined in .rodata._global_impure_ptr section in libc.a(lib_a-impure.o) relocation truncated to fit: R_V810_GPWLO_1 against symbol `_impure_ptr' defined in .data._impure_ptr section in libc.a(lib_a-impure.o) Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
* RTEMS: Avoid <machine/param.h> in <sys/_cpuset.h>Sebastian Huber2018-11-081-2/+5
| | | | | | | | The <machine/param.h> header file exposes some unrelated stuff not covered by C or POSIX. Avoid its use in <sys/_cpuset.h> since it is included in <rtems.h>. Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
* Adjust writeback in non-zero memsetWilco Dijkstra2018-11-061-3/+3
| | | | | | | | This fixes an ineffiency in the non-zero memset. Delaying the writeback until the end of the loop is slightly faster on some cores - this shows ~5% performance gain on Cortex-A53 when doing large non-zero memsets. Tested against the GLIBC testsuite.
* Cygwin: honor SOCK_NONBLOCK/SOCK_CLOEXEC in socket(2)/socketpair(2)Corinna Vinschen2018-11-052-6/+14
| | | | | | | | | | | | | | | fhandler_socket_wsock::set_socket_handle calls set_flags after setting the O_NONBLOCK/O_CLOEXEC flags, thus overwriting them. It also turns out that fhandler_socket_wsock::init_events is called too late. The inheritence flags are changed before creating the socket event handling objects. Thus, inheritence flags for those objects are wrong with SOCK_CLOEXEC. Fix this by reordering the calls and setting the file flags through fhandler_base::set_flags. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* newlib/configure.host: Set have_init_fini to no for OpenRISCStafford Horne2018-11-051-0/+1
| | | | | | | | The new GCC port for OpenRISC will use the init_fini_array only and not provide the init() and fini() functions. Disable the function usage by default as its no longer needed. Signed-off-by: Stafford Horne <shorne@gmail.com>
* Initialize SVE system registers.Tamar Christina2018-10-311-0/+27
| | | | | | | | | This patch initializes the SVE system registers if available and initializes the vector length to the maximum supported. This is done according to the SVE specification [1]. [1] https://developer.arm.com/docs/ddi0584/latest/arm-architecture-reference-manual-supplement-the-scalable-vector-extension-sve-for-armv8-a
* Cygwin: fix memory corruption/SEGV if certain socket functions failCorinna Vinschen2018-10-295-14/+8
| | | | | | | | | | | | | | | | | | Regression introduced with 2.11.0: The failure paths in socket, socketpair and accept4 functions and methods accidentally release *unused* cygheap_fdmanip objects. The subsequently called dtable::release method was designed to be called for *used* cygheap_fdmanip objects only. Using them on unused objects leads to NULL pointer member dereferencing. Worse, the inet/local accept4 methods only release the cygheap_fdmanip object but neglect to delete the just created fhandler_socket_* object. Fix this by removing the erroneous release calls in the aforementioned failure paths and delete the fhandler_socket_* object in accept4 instead. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: Fix cygheap corruption caused by cloned atomic bufferDavid McFarland2018-10-292-0/+5
| | | | | | | The fhandler_base_overlapped::copyto clears atomic_write_buf on the clone, but none of the derived classes were doing this. This allowed the destructor to double-free the buffer and corrupt cygheap. Clear atomic_write_buf in copyto of all derived classes.
* Fix posix_memalign() attributesSebastian Huber2018-10-221-2/+2
| | | | | | | | | | | The malloc, alloc_size and alloc_aligned attributes must be only used in case the function returns the pointer to the allocated memory. See also: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87683 Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
* RTEMS: Use function and data sectionsSebastian Huber2018-10-221-0/+1
| | | | Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
* newlib/libc/sys/rtems/include/machine/param.h: Add _KERNEL to stop method ↵Joel Sherrill2018-10-181-0/+3
| | | | | | | | | | | | | leakage The following FreeBSD kernel methods are not in any standard and prototypes/definitions were leaking into application space: + round_page() + trunc_page() + atop() + ptoa() + pgtok()
* Improve performance of strstrWilco Dijkstra2018-10-181-96/+127
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | v3: Add support for read ahead using strnlen, giving an additional 25% speedup on large inputs (both short and long needles). This patch significantly improves performance of strstr by using Sunday's Quick-Search algorithm. Due to its simplicity it has the best average performance of string matching algorithms on almost all inputs. It uses a bad-character shift table to skip past mismatches. The needle length is limited to 254 - this reduces the shift table memory 4 to 8 times, lowering preprocessing overhead and minimizing cache effects. The limit also implies its worst-case performance is linear. Larger needles are processed by the Two-Way algorithm. The macro AVAILABLE has been improved to use strnlen to read the input in chunks. This results in a 2.5 times speedup for large needles, reducing the performance drop when the Quick-Search algorithm can't be used. The code for 1-4 byte needles has been simplified and now uses unsigned char. Since the optimized code relies on 8-bit chars, we defer to the size-optimized implementation if CHAR_BIT > 8. The performance gain of finding a set of randomly chosen words of size 8 in 256 bytes of English text is 14 times on AArch64. For longer haystacks the gain is well over 20 times. The size-optimized strstr has also been rewritten from scratch to improve performance. On the same test the performance gain is 69%. Tested against GLIBC testsuite, randomized tests and the GNULIB strstr test (https://git.savannah.gnu.org/cgit/gnulib.git/tree/tests/test-strstr.c). --
* newlib/libc/ctype/jp2uc.c: Declare "cs" variable as "const char *"Christophe Lyon2018-10-111-2/+2
| | | | | Instead of "char *" to avoid compiler warnings. This is OK because "cs" is only used as input of strcmp.
* Add generic implementation of fdopendir()Sebastian Huber2018-10-111-8/+21
| | | | Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
* Add generic implementation of dirfd()Sebastian Huber2018-10-113-12/+56
| | | | | | | | Use existing HAVE_OPENDIR define to determine if a generic implementation should be provided. Cygwin for example has its own implementation of opendir() and dirfd(). Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
* RTEMS: Add struct dirent::d_type memberSebastian Huber2018-10-111-27/+98
| | | | | | | This is used by the file system support of libstdc++ for example. Use content from latest FreeBSD <sys/dirent.h> Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
* Move common <sys/dirent.h> content to <dirent.h>Sebastian Huber2018-10-119-107/+75
| | | | | | | Move common content of the various <sys/dirent.h> and the latest FreeBSD <dirent.h> to <dirent.h>. Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
* Open a directory with the usual flagsSebastian Huber2018-10-111-9/+4
| | | | | | | | | | | | | | | | | | | Use O_RDONLY since you are not supposed to write to a directory. Use O_DIRECTORY as mandated by POSIX (The Open Group Base Specifications Issue 7, 2018 edition IEEE Std 1003.1-2017): "If the type DIR is implemented using a file descriptor, the descriptor shall be obtained as if the O_DIRECTORY flag was passed to open()." Use O_CLOEXEC as mandated by POSIX: "When a file descriptor is used to implement the directory stream, it behaves as if the FD_CLOEXEC had been set for the file descriptor." Drop the fcntl() call in favour of O_CLOEXEC. Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
* Make some standard open() flags visibleSebastian Huber2018-10-111-21/+27
| | | | | | | | | | Make the POSIX O_CLOEXEC, O_NOFOLLOW, O_DIRECTORY, O_EXEC, and O_SEARCH open() flags available also to non-Cygwin systems. Make the BSD/glibc O_DIRECT open() flag available also to non-Cygwin systems. Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
* newlib: Build internal strtold code only if HAVE_LONG_DOUBLE definedCorinna Vinschen2018-10-102-8/+9
| | | | | | | | | | | | | | Commit fbace81684f8cbb80a2048c01dc545af247f5cb7 ("Import correctly working strtold from David M. Gay.") introduced two new files, strtorx.c and strtodg.c. The functions are only called from strtold.c. However, while strtold.c is only built if HAVE_LONG_DOUBLE is defined, the patch erroneously added the two new files to GENERAL_SOURCES unconditionally. Fix this by building both files only if HAVE_LONG_DOUBLE has been defined. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* newlib: strtold: use __builtin_nanl to avoid libm dependencyCorinna Vinschen2018-10-101-1/+1
| | | | | | | | | | | Commit 6c212a8b7873703c4f98c6b68579b234918be83a ("Fix strtod ("nan") and strtold ("nan") returns wrong negative NaN") introduced an unconditional dependency to nanl and, in turn, to libm. Rather than including nanl in libc as well, just call __builtin_nanl from here. Requires GCC 3.3 or later. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Implement nanl in newlib onlyCorinna Vinschen2018-10-103-6/+6
| | | | | | | Drop Cygwin-specific nanl in favor of a generic implementation in newlib. Requires GCC 3.3 or later. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: lseek: return ESPIPE rather than EINVAL when called on a fifoCorinna Vinschen2018-10-103-0/+22
| | | | | | | Thanks to Henri for tracking this down: https://cygwin.com/ml/cygwin/2018-10/msg00062.html Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* newlib: Drop incorrect const qualifier from __loadlocale parameterCorinna Vinschen2018-10-102-3/+3
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Add attributes to malloc-like functionsSebastian Huber2018-10-104-6/+7
| | | | | | | These attributes help static analysis tools to produce less false positives, e.g. double free warnings. Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
* [Aarch64] Syscalls: fix prototypesChristophe Lyon2018-10-081-18/+19
| | | | | | | | | | This patch is similar the arm one committed recently. 2018-10-08 Christophe Lyon <christophe.lyon@linaro.org> * libgloss/aarch64/syscalls.c (_sbrk): Fix prototype. (_getpid, _write, _swiwrite, _lseek, _swilseek, _read, _wriread): Likewise.
* [ARM] Make _kill() a noreturn function.Christophe Lyon2018-10-083-9/+14
| | | | | | | | | | | | | | AngelSWI_Reason_ReportException does not return accoring to the ARM documentation, so it is valid to mark _kill() as noreturn. This way, the compiler does not warn about _exit() returning a value despite being noreturn. 2018-10-01 Christophe Lyon <christophe.lyon@linaro.org> * libgloss/arm/_exit.c (_exit): Declare _kill() as noreturn. * libgloss/arm/_exit.c (_kill): Likewise. Remove the return statements. * newlib/libc/sys/arm/syscalls.c (_kill): Likewise..
* Define _COMPILING_NEWLIB on aarch64 to define function prototypes from unistd.h.Christophe Lyon2018-10-051-0/+3
| | | | | | 2018-10-01 Christophe Lyon <christophe.lyon@linaro.org> * newlib/configure.host: Define _COMPILING_NEWLIB for aarch64.
* [Aarch64] Fix warning in _sbrkChristophe Lyon2018-10-051-1/+1
| | | | | | | 2018-10-01 Christophe Lyon <christophe.lyon@linaro.org> * libgloss/aarch64/syscalls.c (_sbrk): Cast "__heap_limit" to "char *".
* [ARM] Cast string pointers to int to avoid compiler warnings.Christophe Lyon2018-10-051-4/+4
| | | | | | | | 2018-10-01 Christophe Lyon <christophe.lyon@linaro.org> * newlib/libc/sys/arm/syscalls.c (_unlink): Cast 'path' to int. (_system): Cast 's' to int. (_rename): Cast 'newpath' and 'oldpath' to int.
* Update Arm copyright notices in new math filesWilco Dijkstra2018-09-2826-47/+79
| | | | | | | | While working on the strstr patch I noticed several copyright headers of the new math functions are missing closing quotes after ``AS IS. I've added these. Also update spellings of Arm Ltd in a few places (but still use ARM LTD in upper case portion). Finally add SPDX identifiers to make everything consistent.
* Update Arm entry in COPYING.NEWLIB.Jeff Johnston2018-09-251-2/+2
| | | | | | | - per Wilco Dijkstra's patch - update Arm copyright notice to not exclude AArch64 and the various generic contributions made (like the new math functions). Also update the date and change spelling to Arm Ltd.
* Fix the documentation comment of checkintSzabolcs Nagy2018-09-182-2/+4
| | | | checkint in pow is not supposed to be used with 0, inf or nan inputs.
* Committed, CRIS port: fix fallout from time_t defaulting to 64 bits, part 2Hans-Peter Nilsson2018-09-131-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | It's been a while... I see the CRIS port broke with the time_t-default-to-64-bit change, observable by a few test-cases in the gcc fortran(!) tests failing, regressing when trying a recent newlib. This is a two-part belt-and-suspenders change: adjust the CRIS port gettimeofday syscall (the only one in newlib/CRIS passing a time_t or struct timeval) to handle a userspace 64-bit time_t and secondly default time_t to 32-bit long anyway. I considered making the local "kernel_timeval" copy in _gettimeofday conditional on (userspace) time_t being 64 bits, but thought it not worth bothering with the few move insns. The effect of a 64-bit time_t is however observable as longer simulation time when running the gcc testsuite and as bigger binaries without any actual upside from the larger time_t size, so I thought better make the default for this port go back to being a "long" again. Tested by running the gcc testsuite over the three combinations of two parts of the patch and observing the expected changes. Committed. newlib: * configure.host (cris, crisv32): Default to "long" time_t. Signed-off-by: Hans-Peter Nilsson <hp@axis.com>
* Committed, CRIS port: fix fallout from time_t defaulting to 64 bits, part 1Hans-Peter Nilsson2018-09-132-5/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It's been a while... I see the CRIS port broke with the time_t-default-to-64-bit change, observable by a few test-cases in the gcc fortran(!) tests failing, regressing when trying a recent newlib. This is a two-part belt-and-suspenders change: adjust the CRIS port gettimeofday syscall (the only one in newlib/CRIS passing a time_t or struct timeval) to handle a userspace 64-bit time_t and secondly default time_t to 32-bit long anyway. I considered making the local "kernel_timeval" copy in _gettimeofday conditional on (userspace) time_t being 64 bits, but thought it not worth bothering with the few move insns. The effect of a 64-bit time_t is however observable as longer simulation time when running the gcc testsuite and as bigger binaries without any actual upside from the larger time_t size, so I thought better make the default for this port go back to being a "long" again. Tested by running the gcc testsuite over the three combinations of two parts of the patch and observing the expected changes. Committed. libgloss: Adjust for syscall and userspace having different time_t or timeval. * cris/linunistd.h (kernel_time_t, kernel_suseconds_t, kernel_timeval): New types. (gettimeofday): Change the type of the first argument to be a pointer to a struct kernel_timeval. * cris/gensyscalls (_gettimeofday): Use an intermediate struct kernel_timeval for the syscall and initialize the result from that. Signed-off-by: Hans-Peter Nilsson <hp@axis.com>
* Cygwin: console: make sure EnumFontFamiliesExW loop isn't infiniteCorinna Vinschen2018-09-071-2/+8
| | | | | | | | The current loop condition is borderline. Make sure it ends and choose a replacement char in the unlikely case the current console font isn't recognized at all. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>