aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2019-06-11Revert "Cygwin: fork: Remember child not before success."Ken Brown1-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
2019-06-07Fix __getreent stack calculations for AMD GCNJeff Johnston1-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.
2019-06-07Add gfortran support for AMD GCNJeff Johnston10-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.
2019-06-07Mark inline functions with __unused;trasz1-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
2019-06-07sys/sys: further adoption of SPDX licensing ID tags.pfg1-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.
2019-06-05Cygwin: map beyond EOF on 64 bit and WOW64 as wellCorinna Vinschen1-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>
2019-06-05mkdir: always check-for-existenceBen Wijen1-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’.
2019-06-04cygcheck: expand common_apps listYaakov Selkowitz1-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.
2019-06-04Cygwin: Allow accessing 48 bit address space in Windows 8.1 or laterCorinna Vinschen4-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.
2019-06-03Cygwin: fork: Remember child not before success.Michael Haubenwallner1-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.
2019-06-03Cygwin: fork: Always pause child after fixups.Michael Haubenwallner1-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.
2019-06-03Cygwin: dll_list: no recursive use of nt_max_path_bufMichael Haubenwallner1-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.
2019-06-03Cygwin: dll_list: stat_real_file_once with ntnameMichael Haubenwallner2-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.
2019-06-03Fix vfwscanf(3) assignment suppression flag handling bugLucio Andrés Illanes Albornoz1-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> --
2019-06-03Add support for Hygon Dhyana processorJinke Fan2-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>
2019-06-03Fix <sys/_types.h> issues with <stddef.h>Sebastian Huber2-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>
2019-06-03Avoid <sys/cdefs.h> dependency in <sys/_types.h>Sebastian Huber1-2/+7
Including <sys/cdefs.h> could result in cyclic header dependencies. Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
2019-06-03Avoid cyclic header dependenciesSebastian Huber2-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>
2019-05-28Cygwin: FIFO: respect the O_CLOEXEC flagKen Brown1-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.
2019-05-23Cygwin: FIFO: Open only one handle to NPFSKen Brown1-1/+1
Make npfs_handle a static member function of fhandler_fifo, as in fhandler_socket_unix.
2019-05-22RISC-V: Add _LITE_EXIT in crt0.S.Jim Wilson1-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.
2019-05-22RISC-V: Add size optimized memcpy, memmove, memset and strcmp.Jim Wilson8-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.
2019-05-15Make .data section placement coincide with _fdata symbolFaraz Shahbazker22-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.
2019-05-09Cygwin: FIFO: code simplifications.Ken Brown1-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.
2019-05-09Cygwin: FIFO: make read_ready an auto-reset eventKen Brown1-1/+1
There's no point in allowing a writer to attempt to open until we've created a pipe instance.
2019-05-09Cygwin: FIFO: improve the check for the listen_client threadKen Brown2-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.
2019-05-09Cygwin: FIFO: set client handler flags more accuratelyKen Brown1-1/+3
Reflect the fact that client handlers are only used for reading and that, after connection, they are always nonblocking.
2019-05-09Cygwin: FIFO: don't leave a pending listen requestKen Brown2-53/+59
On exit from the listen_client thread, make sure there's no pending FSCTL_PIPE_LISTEN request. Otherwise we might get a client connection after restarting the thread, and we won't have a handle for communicating with that client. Remove the retry loop in the case of STATUS_PIPE_LISTENING; that case shouldn't occur. Remove the now-unused fc_connecting value from fifo_client_connect_state.
2019-05-09Cygwin: FIFO: add a HANDLE parameter to open_pipeKen Brown2-9/+9
It's now up to the caller to pass a handle to open_pipe and, if desired, to call set_handle on return. This will be useful for a future commit, in which we will open a client connection without setting an io_handle.
2019-05-09Cygwin: FIFO: re-implement duplexersKen Brown2-34/+11
When opening a duplexer, open a client connection to the first client handler. Previously we gave the duplexer a bogus write handle, which was just a duplicate of the first client handler's handle. This meant that we had a pipe server with no clients connected, and all I/O attempts failed with STATUS_PIPE_LISTENING. Extend the last fcntl change to duplexers. Remove a now unused fifo_client_handler constructor, as well as the long unusued method fifo_client_handler::connect. Don't create the pipe in duplex mode; the server handle will only be used for reading.
2019-05-09Cygwin: FIFO: add 'record_connection' methodKen Brown2-9/+15
Future commits will have to re-use the code for recording a client connection. For convenience, factor out this code into a new method.
2019-05-09Cygwin: FIFO: remove incorrect duplexer codeKen Brown1-15/+8
raw_read had some code that was based on an incorrect implementation of duplexers.
2019-05-09Revert "Cygwin: check for STATUS_PENDING in fhandler_base::raw_read"Ken Brown1-13/+1
This reverts commit 10bf30bebf7feebbc3e376cbcac62a242cc240f3. It was made because an incorrect implementation of duplex FIFOs.
2019-05-05Cygwin: dll_list: drop unused read_fbi methodMichael Haubenwallner2-24/+0
2019-04-30Cygwin: Add release info for 3.0.7Corinna Vinschen2-0/+21
Signed-off-by: Corinna Vinschen <corinna@vinschen.de> (cherry picked from commit 01c253a4c58b6c1da01615431bdc4c88fcba48ea)
2019-04-30Cygwin: dll_list: query dll file id at load timeMichael Haubenwallner2-4/+2
NtQueryVirtualMemory for MemorySectionName does not reliable return the changed dll file name when another process does move the file around, and we may end up creating forkable hardlinks to wrong dll files. So query the file id when loading the dll rather than before fork.
2019-04-30Cygwin: dll_list: stat_real_file_once as dll methodMichael Haubenwallner2-10/+13
Make stat_real_file_once a method of struct dll, to be more flexible on where to use. Also, debug print memory section name queried for a dll. This is a preparation to query the file id when loading the dll.
2019-04-30Cygwin: dll_list: drop FILE_BASIC_INFORMATIONMichael Haubenwallner3-6/+3
Querying FILE_BASIC_INFORMATION is needless since using win pid+threadid for forkables dirname rather than newest last write time.
2019-04-30Cygwin: update era and message locale dataCorinna Vinschen2-317/+341
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-04-29Fix order of eh_frame sections in linker scriptsFaraz Shahbazker18-18/+118
The compiler driver positions the linker script at the end of the linker command-line, after crtend.o. As a result, any INPUT objects and archive GROUPs introduced by the linker script are placed after crtend.o and the end-of-frame marker provided by crtend.o ends up in between .eh_frames instead of being at the end. This has always been a problem, but a binutils update to clean-up redundant NULL markers in .eh_frame exposes it as a execution failure in exception-handling tests. This patch re-orders .eh_frames in all MIPS linker scripts so that the one from crtend.o is always placed last. libgloss/ * mips/array.ld: Re-order to place .eh_frame from crtend.o after all other .eh_frame sections. * 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/jmr3904app.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.
2019-04-26Cygwin: FIFO: synchronize the blocking mode of a writer's pipeKen Brown2-0/+17
The blocking mode of the Windows pipe underlying a writer is set to match that of the writer itself when the latter is opened. Define fhandler_fifo::fcntl to keep the pipe and the writer in sync if the blocking mode is changed via fcntl.
2019-04-25Cygwin: define MSG_EOR and refuse in send(2)Corinna Vinschen3-0/+13
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-04-23Minor improvements to socket error handling:Erik M. Bray1-1/+4
* Change default fallback for failed winsock error -> POSIX error mappings to EACCES, which is a valid errno for more socket-related syscalls. * Added a few previously missing entries to the wsock_errmap table that have obvious POSIX errno.h analogues.
2019-04-22Cygwin: FIFO: restart listen_client thread after fork/execKen Brown1-7/+5
This allows writers to connect immediately. Previously the lct wasn't restarted until the reader attempted to read.
2019-04-20Cygwin: FIFO: stop the listen_client thread before fork/execKen Brown2-2/+16
Add methods need_fixup_before, init_fixup_before, and fixup_before_fork_exec to accomplish this. Stopping the thread makes sure that the client handler lists of the parent and child remain in sync while the forking/execing is in progress.
2019-04-20Cygwin: FIFO: close connect_evt handles as soon as possibleKen Brown1-7/+10
Keeping them open too long can cause an attempt to close them twice after a fork or exec.
2019-04-20Cygwin: FIFO: avoid WFMO error in listen_client_threadKen Brown1-5/+7
Don't set lct_termination_evt to NULL too early in fhandler_fifo::stop_listen_client. Doing so leads to an "Invalid Handle" error in WFMO.
2019-04-20Cygwin: FIFO: duplicate the i/o handle when opening a duplexerKen Brown1-1/+8
Don't use the same i/o handle for the first client handler as is used for the fhandler itself; this can lead to a later attempt to close the same handle twice. Instead use a duplicate.
2019-04-20Cygwin: FIFO: stop the listen_client thread on an opening errorKen Brown1-1/+1
Don't just close the thread handle.
2019-04-19Cygwin: drop unsupported Windows 10 versionsCorinna Vinschen1-31/+1
* Pre-release version still reporting kernel version 6.4. * Windows 10 1511 is out of support since 2017-10-10. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>