summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Cygwin: Fix return value of sched_getaffinityMark Geisert2019-06-284-11/+31
| | | | | | Have sched_getaffinity() interface like glibc's, and provide an undocumented internal interface __sched_getaffinity_sys() like the Linux kernel's sched_getaffinity() for benefit of taskset(1).
* sched: Move Cygwin cpuset definitions into Cygwin-specific headerCorinna Vinschen2019-06-273-20/+28
| | | | | | This avoids build breakage on RTEMS. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: honor the O_PATH flag when opening a FIFOKen Brown2019-06-271-1/+10
| | | | | Previously fhandler_fifo::open would treat the FIFO as a reader and would block, waiting for a writer.
* or1k: Avoid write outside setjmp buf & shrink bufMartin Erik Werner2019-06-272-29/+32
| | | | | | | | | | | | Update the offsets used to save registers into the stejmp jmp_buf structure in order to: * Avoid writing the supervision register outside the buffer and thus clobbering something on the stack. Previously the supervision register was written at offset 124 while the buffer was of length 124. * Shrink the jmp_buf down to the size actually needed, by avoiding holes at the locations of omitted registers.
* Cygwin: Build cygwin-console-helper with correct compilerMark Geisert2019-06-271-1/+1
|
* Cygwin: Use correct string conversionMark Geisert2019-06-271-2/+2
| | | | | Correct the string conversion calls so both argv elements get converted at full precision.
* or1k: Correct longjmp return valueMartin Erik Werner2019-06-271-1/+1
| | | | | | | | | | | Invert equality check instruction to correct the return value handling in longjmp. The return value should be the value of the second argument to longjmp, unless the argument value was 0 in which case it should be 1. Previously, longjmp would set return value 1 if the second argument was non-zero, and 0 if it was 0, which was incorrect.
* Cygwin: FIFO: fix a thinko in raw_writeKen Brown2019-06-251-1/+0
| | | | Remove a line that has no effect.
* Tweak release messageKen Brown2019-06-251-1/+1
|
* Cygwin: timerfd: avoid a deadlockKen Brown2019-06-253-1/+28
| | | | | | | | | Add a function timerfd_tracker::enter_critical_section_cancelable, which is like enter_critical_section but honors a cancel event. Call this when a timer expires while the timerfd thread is in its inner loop. This avoids a deadlock if timerfd_tracker::dtor has entered its critical section and is trying to cancel the thread. See https://cygwin.com/ml/cygwin/2019-06/msg00096.html.
* Arm: Use lrdimon-v2m_nano when semihosting v2 and nano selected respectivelyAlexander Fedotov2019-06-251-1/+1
|
* Support calculation of pointer size for __int20__ type in _intsup.hJozef Lawrynowicz2019-06-251-0/+4
| | | | | | | | | GCC r272640 modifies the MSP430 target to use "__int20__" for PTRDIFF_TYPE (and therefore INTPTR_TYPE) instead of "__int20". To support the calculation of pointer size in newlib/libc/include/sys/_intsup.h, definitions for __int20__ need to be added.
* Cygwin: Implement sched_[gs]etaffinity()Mark Geisert2019-06-2411-5/+389
| | | | | | | | | This patch set implements the Linux syscalls sched_getaffinity, sched_setaffinity, pthread_getaffinity_np, and pthread_setaffinity_np. Linux has a straightforward view of the cpu sets used in affinity masks. They are simply long (1024-bit) bit masks. This code emulates that view while internally dealing with Windows' distribution of available CPUs among processor groups.
* Cygwin: FIFO: minor cleanupKen Brown2019-06-232-7/+7
| | | | | | Don't use a label with the same name as a variable. Also fix indentation in fhandler.h.
* Cygwin: FIFO: slightly change the use of write_readyKen Brown2019-06-231-1/+2
| | | | | | | Make it a manual reset event. It's only used once to allow a reader to open, and there's no reason to ever reset it. Defensively set it when a client connection is recorded, even though it should be set by the writer that connected.
* Cygwin: FIFO: remove fifo_client_handler::connect_evtKen Brown2019-06-232-16/+15
| | | | | It's not needed. Instead just create and use an event in fhandler_fifo::listen_client_thread.
* Cygwin: FIFO: simplify raw_readKen Brown2019-06-231-19/+31
| | | | | | Call NtReadFile directly instead of calling fhandler_base::raw_read. In addition to being simpler, this gives us access to the return value from NtReadFile.
* Cygwin: FIFO: improve termination of the listen_client threadKen Brown2019-06-232-15/+55
| | | | | | | | | Add a method fifo_client_handler::pipe_state that queries Windows for the state of a pipe instance. Use this to help terminate the listen_client thread cleanly. If the last client handler is useless, delete it instead of declaring it invalid.
* Cygwin: FIFO: avoid deadlock when closingKen Brown2019-06-231-0/+3
| | | | | | | | fhandler_fifo::close could be called from a signal handler or another thread at a time when another function is holding the fifo_client lock. This could prevent the listen_client thread from acting on the thread termination event. Avoid a deadlock by calling fifo_client_unlock at the beginning of fhandler_fifo::close.
* Cygwin: FIFO: clean up locksKen Brown2019-06-231-8/+17
| | | | | Make sure to use the fifo_client lock when (and only when) it is needed.
* Cygwin: FIFO: add some error checkingKen Brown2019-06-232-4/+11
| | | | | Change the return type of fhandler_fifo::delete_client_handler from void to int so that we can report errors.
* Cygwin: FIFO: fix signal handling in raw_read and raw_writeKen Brown2019-06-231-31/+54
| | | | | | cygwait wasn't being called correctly. Also do some minor cleanup in raw_read and raw_write.
* Rename <xlocale.h> back to <sys/_locale.h>Corinna Vinschen2019-06-1414-14/+23
| | | | | | | | | | | | | | | | | | | libX11 provides <X11/Xlocale.h>. The build of libX11 itself adds include/X11 to the compiler's include path. This results in a name collision with /usr/include/xlocale.h on case-insensitive filesystems. Commit 90e35b1eb3df renamed sys/_locale.h to xlocale.h in March 2017 under the assumption that we should provide the locale_t type in the same file as on Linux, FreeBSD, and Darwin. A few weeks later (June 2017), glibc removed the xlocale.h file in favor of bits/types/locale_t.h, which shouldn't be included directly anyway. For reference and the reasoning, see https://sourceware.org/git/?p=glibc.git;a=commit;h=f0be25b6336d Given the above, revert 90e35b1eb3df4070e68afc5e7060665214d586be and fix additional usage of xlocale.h.
* Revert "Cygwin: fork: Remember child not before success."Ken Brown2019-06-111-16/+15
| | | | | | | This reverts commit f03ea8e1c57bd5cea83f6cd47fa02870bdfeb1c5. That commit leads to fork problems if cygserver is running: https://cygwin.com/ml/cygwin-patches/2019-q2/msg00155.html
* Fix __getreent stack calculations for AMD GCNJeff Johnston2019-06-071-6/+6
| | | | | | | | From: Andrew Stubbs <ams@codesourcery.com> Fix a bug in which the high-part of 64-bit values are being corrupted, leading to erroneous stack overflow errors. The problem was only that the mixed-size calculations are being treated as signed when they should be unsigned.
* Add gfortran support for AMD GCNJeff Johnston2019-06-0710-3/+212
| | | | | | | | | | From: Kwok Cheung Yeung <kcy@codesourcery.com> This patch adds enough support for constructors/destructors and OS functions to be able to link and run gfortran programs on AMD GCN. There's no actual ability to do I/O operations on this targets, besides "write" to stdout and stderr, so most of the functions are just stubs.
* Mark inline functions with __unused;trasz2019-06-071-5/+5
| | | | | | | | | | prevents compiler warning when they end up being unused. Reviewed by: kib Obtained from: OpenBSD MFC after: 2 weeks Sponsored by: Klara Inc. Differential Revision: https://reviews.freebsd.org/D20185
* sys/sys: further adoption of SPDX licensing ID tags.pfg2019-06-071-0/+2
| | | | | | | | | | | | Mainly focus on files that use BSD 2-Clause license, however the tool I was using misidentified many licenses so this was mostly a manual - error prone - task. The Software Package Data Exchange (SPDX) group provides a specification to make it easier for automated tools to detect and summarize well known opensource licenses. We are gradually adopting the specification, noting that the tags are considered only advisory and do not, in any way, superceed or replace the license texts.
* Cygwin: map beyond EOF on 64 bit and WOW64 as wellCorinna Vinschen2019-06-051-11/+24
| | | | | | | | | | | | | | | | | | 32 bit Cygwin performs a POSIX-compatible mapping after EOF which is not supported in this form on Windows. The 64 bit Windows kernel never supported the AT_ROUND_TO_PAGE mapping flag, so we couldn't page-aligned map the space right after the file's EOF. So mapping beyond EOF was disabled in 64 bit Windows and WOW64. However, if mmap works, a matching munmap should work as well, *and* it should not accidentally unmap unrelated memory. Therefore we enable mapping beyond EOF on 64 bit as well. Since that mapping is always 64K aligned, the are between the last file page and the next 64K allocation boundary will be unallocated. There's no way around that. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* mkdir: always check-for-existenceBen Wijen2019-06-051-1/+3
| | | | | | | | | When using NtCreateFile when creating a directory that already exists, it will correctly return 'STATUS_OBJECT_NAME_COLLISION'. However using this function to create a directory (and all its parents) a normal use would be to start with mkdir(‘/cygdrive/c’) which translates to ‘C:\’ for which it'll instead return ‘STATUS_ACCESS_DENIED’.
* cygcheck: expand common_apps listYaakov Selkowitz2019-06-041-1/+16
| | | | | | | | | An increasing number of tools are being included in Windows which have the same names as those included in Cygwin packages. Indicating which one is first in PATH can be helpful in diagnosing behavioural discrepencies between them. Also, fix the alphabetization of ssh.
* Cygwin: Allow accessing 48 bit address space in Windows 8.1 or laterCorinna Vinschen2019-06-044-5/+20
| | | | | | | | | | | | | | | | | 64 bit Windows started out with a 44 bit address space due to a restriction of the AMD64 CPUs at the time. Starting with Windows 8.1, these CPUs are not supported anymore and Windows switched to the full 48 bit address space supported by AMD64. Cygwin didn't follow suit yet so mmaps are still restricted to the lower 44 bit address space. Fix that by using a system-specific upper address for mmap allocations, 44 bit up to Windows 8, 48 bit starting with Windows 8.1. While at it, move the heap by another 8 Gigs to leave some space for a potential extension of DLL address space, and restrict the mmap lower address so the heap can grow to 32 Gigs before colliding with mmaps.
* Cygwin: fork: Remember child not before success.Michael Haubenwallner2019-06-031-15/+16
| | | | | | | | Do not remember the child before it was successfully initialized, or we would need more sophisticated cleanup on child initialization failure, like cleaning up the process table and suppressing SIGCHILD delivery with multiple threads ("waitproc") involved. Compared to that, the potential slowdown due to an extra yield () call should be negligible.
* Cygwin: fork: Always pause child after fixups.Michael Haubenwallner2019-06-031-10/+9
| | | | | | | | | | Pause the child process after performing fork fixups even if there were no dynamically loaded dlls with extra data/bss transfers to wait for. This allows the parent process to cancel the current fork call even if the child process was successfully initialized already. This is a preparation for when the parent does remember the child no earlier than after successful child initialization.
* Cygwin: dll_list: no recursive use of nt_max_path_bufMichael Haubenwallner2019-06-031-4/+9
| | | | | | Querying the ntlength and existence of the /var/run/cygfork directory in the very first Cygwin process should not use nt_max_path_buf, as that one is used by dll_list::alloc already.
* Cygwin: dll_list: stat_real_file_once with ntnameMichael Haubenwallner2019-06-032-34/+8
| | | | | | | | | | | | NtQueryVirtualMemory for MemorySectionName may return some old path even if the process was just started, for when some directory in between was renamed - maybe because the NT file cache is hot for the old path still. This was seen during gcc bootstrap, returning a MemorySectionName of ".../gcc/xgcc.exe" even if started as ".../prev-gcc/xgcc.exe", where the directory rename from "gcc" to "prev-gcc" was done the moment before. As we stat the module's real file right after loading now, there is no point in using NtQueryVirtualMemory with MemorySectionName any more, and we can use what GetModuleFileName returned instead.
* Fix vfwscanf(3) assignment suppression flag handling bugLucio Andrés Illanes Albornoz2019-06-031-0/+1
| | | | | | | | | | | | | | newlib's vfwscanf(3) (or specifically, __SVFWSCANF_R()) fails to correctly set the assignment-suppressing character (`*') flag[1] which, when present in the formatting string, results in undefined behaviour comprising retrieving and dereferencing a pointer that was not supplied by the caller as such or at all. When compared to the vfscanf(3) implementation, this would appear to be over the missing goto match_failure statement preceded by the flags test seen below. Hence, this patch (re)introduces it. [1] <http://pubs.opengroup.org/onlinepubs/009695399/functions/fwscanf.html> --
* Add support for Hygon Dhyana processorJinke Fan2019-06-032-2/+4
| | | | | | | | | | | | | | | | | | | -Add vendor identification -Support in get_cpu_cache Background: Chengdu Haiguang IC Design Co., Ltd (Hygon) is a Joint Venture between AMD and Haiguang Information Technology Co.,Ltd., aims at providing high performance x86 processor for China server market. Its first generation processor codename is Dhyana, which originates from AMD technology and shares most of the architecture with AMD's family 17h, but with different CPU Vendor ID("HygonGenuine")/Family series number(Family 18h). Related Hygon kernel patch can be found on: http://lkml.kernel.org/r/5ce86123a7b9dad925ac583d88d2f921040e859b.1538583282.git.puwen@hygon.cn Signed-off-by: Jinke Fan <fanjinke@hygon.cn>
* Fix <sys/_types.h> issues with <stddef.h>Sebastian Huber2019-06-032-5/+3
| | | | | | | | | | | | | | | | | | | | A commit from 2016 tried to address this GCC provided <stddef.h> issue #if (defined (__FreeBSD__) && (__FreeBSD__ >= 5)) \ || defined(__DragonFly__) \ || defined(__FreeBSD_kernel__) /* __size_t is a typedef on FreeBSD 5, must not trash it. */ #elif defined (__VMS__) /* __size_t is also a typedef on VMS. */ #else #define __size_t #endif with an include of <stddef.h> before <sys/_types.h> in <sys/types.h>. Is is not robust enough. Do the include of <stddef.h> in <sys/_types.h> directly and request only the necessary types. Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
* Avoid <sys/cdefs.h> dependency in <sys/_types.h>Sebastian Huber2019-06-031-2/+7
| | | | | | Including <sys/cdefs.h> could result in cyclic header dependencies. Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
* Avoid cyclic header dependenciesSebastian Huber2019-06-032-5/+5
| | | | | | | | | | | | RTEMS uses a considerable part of FreeBSD kernel and user space sources. These sources are compiled with a __FreeBSD__ define. On 2018-06-26 Gerald Pfeifer changed the GCC provided <stddef.h> so that it includes <sys/_types.h> if __FreeBSD__ is defined. The Newlib <sys/_types.h> included <sys/lock.h> which includes <sys/cdefs.h> on RTEMS which includes <stddef.h>. To get rid of this cyclic dependency move the optional _flock_t definition to <sys/reent.h>. Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
* Cygwin: FIFO: respect the O_CLOEXEC flagKen Brown2019-05-281-2/+3
| | | | | | Set the inheritance of the Windows pipe handles according to the O_CLOEXEC flag. Previously the pipe was always created and opened with OBJ_INHERIT.
* Cygwin: FIFO: Open only one handle to NPFSKen Brown2019-05-231-1/+1
| | | | | Make npfs_handle a static member function of fhandler_fifo, as in fhandler_socket_unix.
* RISC-V: Add _LITE_EXIT in crt0.S.Jim Wilson2019-05-221-0/+13
| | | | | | This patch adds _LITE_EXIT in crt0.S to enable "lite exit" technique in RISC-V. The changes have been tested in riscv/riscv-gnu-toolchain by riscv-dejagnu with riscv-sim.exp/riscv-sim-nano.exp.
* RISC-V: Add size optimized memcpy, memmove, memset and strcmp.Jim Wilson2019-05-228-2/+146
| | | | | | | This patch adds implementations of memcpy, memmove, memset and strcmp optimized for size. The changes have been tested in riscv/riscv-gnu-toolchain by riscv-dejagnu with riscv-sim.exp/riscv-sim-nano.exp.
* Make .data section placement coincide with _fdata symbolFaraz Shahbazker2019-05-1522-0/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The _fdata symbol in MIPS linker scripts is aligned to a 16-byte boundary. The ALIGN function does not implicitly update current location counter. If sections positioned after the assignment do not have the same natural alignment as the ALIGN function then the start of the section group will not coincide with the value of the symbol. Given the linker command sequence: symbol = ALIGN (NN); (.section*) where the idiom implies a desire to mark the beginning of .section with symbol, there must be an assignment to the location counter between the assignment to symbol and the .section pattern. libgloss/ * mips/array.ld: Update the location counter to match _fdata. * mips/cfe.ld: Likewise. * mips/ddb-kseg0.ld: Likewise. * mips/ddb.ld: Likewise. * mips/dve.ld: Likewise. * mips/idt.ld: Likewise. * mips/idt32.ld: Likewise. * mips/idt64.ld: Likewise. * mips/idtecoff.ld: Likewise. * mips/jmr3904app-java.ld: Likewise. * mips/jmr3904app.ld: Likewise. * mips/jmr3904dram-java.ld: Likewise. * mips/jmr3904dram.ld: Likewise. * mips/lsi.ld: Likewise. * mips/mti32.ld: Likewise. * mips/mti64.ld: Likewise. * mips/mti64_64.ld: Likewise. * mips/mti64_n32.ld: Likewise. * mips/nullmon.ld: Likewise. * mips/pmon.ld: Likewise. * mips/sde32.ld: Likewise. * mips/sde64.ld: Likewise.
* Cygwin: FIFO: code simplifications.Ken Brown2019-05-091-11/+2
| | | | | | | | | | There's no longer a need to consider the connect_evt after fork/exec. After stopping the listen_client thread, all client handlers should be in the fc_connected or fc_invalid states, so their connect_evt members won't be used again. Also remove code in fhandler_fifo::dup that just repeats things already done in stop_listen_client.
* Cygwin: FIFO: make read_ready an auto-reset eventKen Brown2019-05-091-1/+1
| | | | | There's no point in allowing a writer to attempt to open until we've created a pipe instance.
* Cygwin: FIFO: improve the check for the listen_client threadKen Brown2019-05-092-2/+33
| | | | | | Add a method fhandler_fifo::check_listen_client_thread that checks whether the thread is running. Use it in raw_read instead of just testing the handle listen_client_thr.
* Cygwin: FIFO: set client handler flags more accuratelyKen Brown2019-05-091-1/+3
| | | | | Reflect the fact that client handlers are only used for reading and that, after connection, they are always nonblocking.