summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Add default implementation of fenv.h and all methodsJoel Sherrill2019-08-0918-8/+999
| | | | | | | | | | The default implementation of the fenv.h methods return -EOPNOTSUP. Some of these have implementations appropriate for soft-float. The intention of the new fenv.h is that it be portable and that architectures provide their own implementation of sys/fenv.h.
* Miscellaneous Makefile.in regeneratedJoel Sherrill2019-08-094-46/+33
|
* Cygwin: drop preliminary 3.0.8 release fileCorinna Vinschen2019-08-091-19/+0
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: add missing bugfix release messages for 3.1.0Corinna Vinschen2019-08-091-0/+29
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: shmat: use mmap allocator strategy on 64 bitCorinna Vinschen2019-08-085-89/+109
| | | | | | | | This avoids collisions of shmat maps with Windows own datastructures when allocating top-down. This patch moves the mmap_allocator class definition into its own files and just uses it from mmap and shmat.
* Cygwin: getpriority() and top display for priority is inconsistentLavrentiev, Anton2019-08-081-15/+3
| | | | Fix this by aligning /proc/[PID]/stat to the values returned by getpriority().
* Cygwin: build_env: fix off-by-one bug when re-adding PATHMichael Haubenwallner2019-08-071-1/+1
| | | | | | | | | | Adding default winvar 'PATH=C:\cygwin64\binZ' to an environment that is already allocated for 'SYSTEMROOT=ZWINDIR=Z', we need to count that trailing (Z)ero as well. Otherwise we trigger this assertion failure: $ /bin/env -i SYSTEMROOT= WINDIR= /bin/env assertion "(s - envblock) <= tl" failed: file "/home/corinna/src/cygwin/cygwin-3.0.7/cygwin-3.0.7-1.x86_64/src/newlib-cygwin/winsup/cygwin/environ.cc", line 1302, function: char** build_env(const char* const*, WCHAR*&, int&, bool, HANDLE) Aborted (core dumped)
* Cygwin: exec: check execute bit prior to evaluating scriptCorinna Vinschen2019-08-061-6/+6
| | | | | | | | | | | | | | | | | When the exec family of functions is called for a script-like file, the av::setup function handles the exec[vl]p case as well. The execve case for files not starting with a she-bang is handled first by returning ENOEXEC. Only after that, the file's executability is checked. This leads to the problem that ENOEXEC is returned for non-executable files as well. A calling shell interprets this as a file it should try to run as script. This is not desired for non-executable files. Fix this problem by checking the file for executability first. Only after that, follow the other potential code paths. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Align libgloss/arm and libc/sys/arm sources: miscellaneous fixesAlexander Fedotov2019-08-054-78/+82
| | | | | 1. Trim trailing spaces 2. Align comments, function declarations and definitions
* Align libgloss/arm and libc/sys/arm sources: Lite exit supportAlexander Fedotov2019-08-051-0/+16
| | | | | | | Applied changes from commit 2404223: * arm/crt0.S (_mainCRTStartup): Weak reference to atexit and _fini when lite exit is enabled.
* Align libgloss/arm and libc/sys/arm sources: HeapInfo and __heap_limitAlexander Fedotov2019-08-053-8/+20
| | | | | | | | | | | Applied changes from commit 8d98f95: * arm/crt0.S: Initialise __heap_limit when ARM_RDI_MONITOR is defined. * arm/syscalls.c: define __heap_limit global symbol. * arm/syscalls.c (_sbrk): Honour __heap_limit. Applied changes from commit 8d98f95: Fixed semihosting for ARM when heapinfo not provided by debugger
* Align libgloss/arm and libc/sys/arm sources: Fix GetCmdLine semihosting ↵Alexander Fedotov2019-08-051-3/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | directives Applied changes from the commit 9b11672: When simulating arm code, the target program startup code (crt0) uses semihosting invocations to get the command line from the simulator. The simulator returns the command line and its size into the area passed in parameter. (ARM 32-bit specifications : http://infocenter.arm.com/help/topic/com.arm.doc.dui0058d/DUI0058.pdf chapter "5.4.19 SYS_GET_CMDLINE"). The memory area pointed by the semihosting register argument is located in .text section (usually not writtable (RX)). If we run this code on a simulator that respects this rights properties (qemu user-mode for instance), the command line will not be written to the .text program memory, in particular the length of the string. The program runs with an empty command line. This problem hasn't been seen earlier probably because qemu user-mode is not so much used, but this can happen with another simulator that refuse to write in a read-only segment. With this modification, the command line can be correctly passed to the target program. Changes: - newlib/libc/sys/arm/crt0.S : Arguments passed to the AngelSWI_Reason_GetCmdLine semihosting invocation are placed into .data section instead of .text
* Cygwin: Implement CPU_SET(3) macrosMark Geisert2019-08-053-10/+64
| | | | | | | | | | This patch supplies an implementation of the CPU_SET(3) processor affinity macros as documented on the relevant Linux man page. There is a mostly superset implementation of cpusets under newlib's libc/sys/RTEMS/include/sys that has Linux and FreeBSD compatibility and is built on top of FreeBSD bitsets. This Cygwin implementation and the RTEMS one could be combined if desired at some future point.
* RISC-V: Fix header guard for sys/fenv.hKito Cheng2019-08-021-3/+3
|
* Cygwin: fork: attach child not before successMichael Haubenwallner2019-07-311-8/+11
| | | | | | | | | | | | | Do not attach to the child before it was successfully initialized, or we would need more sophisticated cleanup on child initialization failure, like suppressing SIGCHILD delivery with multiple threads ("waitproc") involved. Improves "Cygwin: fork: Remember child not before success.", commit f03ea8e1c57bd5cea83f6cd47fa02870bdfeb1c5, which leads to fork problems if cygserver is running: https://cygwin.com/ml/cygwin-patches/2019-q2/msg00155.html
* Cygwin: pinfo: stop remember doing reattachMichael Haubenwallner2019-07-313-5/+14
| | | | | | | | | | | | | | | During fork, the child process requires the process table to be initialized for fixup_shms_after_fork, while still allowing subsequent dlls.load_after_fork to fail silently (for when the "forkable" hardlinks are not created yet). pinfo::remember not performing reattach anymore requires explicit pinfo::reattach now where appropriate. Prepares to improve "Cygwin: fork: Remember child not before success." commit f03ea8e1c57bd5cea83f6cd47fa02870bdfeb1c5, which leads to fork problems if cygserver is running: https://cygwin.com/ml/cygwin-patches/2019-q2/msg00155.html
* Align _end symbol to at least 4 in all MIPS scriptsFaraz Shahbazker2019-07-3016-0/+16
| | | | | | | | | | | | Left-over part of commit 84b2a020daa17d8ee5c9ec979c3d56f95e69573b The _end marker must be aligned to 4-bytes to ensure that the last element written does not reach beyond the address of _end. This is also necessary as the termination condition is an equality test instead of an ordered test so (_end - _fbss) must be a multiple of 4-bytes. The alignment is already correct for mti*.ld files, fix it for all remaining MIPS scripts that don't already align to at least 4.
* common/math_errf.c: Enable compilation of __math_oflowfJoel Sherrill2019-07-261-2/+3
| | | | | This resolved linking errors when using methods such as expm1().
* hash.c: #include <reent.h>Ken Brown2019-07-261-0/+1
| | | | | | This is needed for the prototypes of _stat64 and _fstat64 on Cygwin. Fixes: commit 279805b2 "hash functions: use reentrant stat functions".
* [arm] remove libc/sys/arm/sys/param.hRichard Earnshaw2019-07-261-25/+0
| | | | | | | The Arm sys/param.h does not define anything differently to the generic sys/param.h, but fails to define some things that that file provides. There does not appear to be any reason to keep this version and we should revert to using the common version.
* Port ndbm - Remove Declaration of dbm_forderVaibhav Gupta2019-07-251-3/+0
|
* Cygwin: Fix the address of myselfCorinna Vinschen2019-07-252-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Introducing an independent Cygwin PID introduced a regression: The expectation is that the myself pinfo pointer always points to a specific address right in front of the loaded Cygwin DLL. However, the independent Cygwin PID changes broke this. To create myself at the right address requires to call init with h0 set to INVALID_HANDLE_VALUE or an existing address: void pinfo::init (pid_t n, DWORD flag, HANDLE h0) { [...] if (!h0 || myself.h) [...] else { shloc = SH_MYSELF; if (h0 == INVALID_HANDLE_VALUE) <-- !!! h0 = NULL; } The aforementioned commits changed that so h0 was always NULL, this way creating myself at an arbitrary address. This patch makes sure to set the handle to INVALID_HANDLE_VALUE again when creating a new process, so init knows that myself has to be created in the right spot. While at it, fix a potential uninitialized handle value in child_info_spawn::handle_spawn. Fixes: b5e1003722cb ("Cygwin: processes: use dedicated Cygwin PID rather than Windows PID") Fixes: 88605243a19b ("Cygwin: fix child getting another pid after spawnve") Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: Don't change pgid to ctty pgid under debuggerCorinna Vinschen2019-07-251-1/+5
| | | | | | | | | | | | | _pinfo::set_ctty sets myself's pgid to the ctty pgid if the process has been started from a non-Cygwin process. This isn't the right thing to do when started from GDB. GDB starts the application via standard Windows means, not via Cygwin fork/exec, so it's treated as being a non-Cygwin parent. But we want the app running in it's own process group. So skip this step when running under a debugger Signed-off-by: Corinna Vinschen <corinna-cygwin@cygwin.com>
* Cygwin: Export newlib ndbm functionsCorinna Vinschen2019-07-244-1/+25
| | | | Signed-off-by: Corinna Vinschen <corinna-cygwin@cygwin.com>
* hash functions: use reentrant stat functionsCorinna Vinschen2019-07-241-6/+6
| | | | | | | _stat64 and _fstat64 are not exported from Cygwin. Use the reentrant analogues, like everywhere else. Signed-off-by: Corinna Vinschen <corinna-cygwin@cygwin.com>
* MSP430: Remove .init/.fini sectionsJozef Lawrynowicz2019-07-245-157/+62
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The .init/.fini sections are not required for msp430-elf, and add unnecessary code bloat to the CRT library. These sections are specified as "unused" by the MSP430 EABI. .init existed to call __crt0_run_{init,preinit}_array which run through the functions in .{init,preinit}_array. __crt0_run_{init,preinit}_array are already dynamically included like the other crt0 functions, so these can be placed before the call to main, which ensures they are still called if needed. With these functions moved, .init has no purpose and can be removed. .fini existed to call __crt0_run_fini_array. However, the "__msp430_fini" symbol which marks the start of .fini has never been used, so no termination routines have ever been run for msp430. On returning from main(), _exit() is called which just loops forever. So there is no current expectation that __crt0_run_fini_array will get called by the CRT code. Further work is to ensure functions registered with atexit can be optionally called during program termination, and then __crt0_run_fini_array can be registered with atexit during program initialization. The mechanisms for supporting the "-minrt" option have also been removed. "-minrt" enabled a "minimum runtime environment" by removing calls to functions which run global static initializers and constructors. Since this behaviour is now dynamic, and these functions are only included when needed, the minrt versions of the CRT object files are no longer required.
* Cygwin: document the last bug fixKen Brown2019-07-241-0/+3
|
* Cygwin: fhandler_termios::tcsetpgrp: check that argument is non-negativeKen Brown2019-07-241-0/+5
| | | | | | | | | | | | | | | | | | Return -1 with EINVAL if pgid < 0. Previously tcsetpgrp() would blindly go ahead and set the pgid of the controlling terminal to a negative value, causing later calls to various functions to fail. For example, gdb has code like the following: tcsetpgrp (0, getpgid (inf->pid)); If getpgid (inf->pid) fails (returns -1), then this code would set the pgid of fd 0 to -1, so that some later calls to getpgid() would also return -1. This caused the problem reported here: https://cygwin.com/ml/cygwin/2019-07/msg00166.html.
* Regenerate newlib/libc/search/Makefile.in for ndpm portCorinna Vinschen2019-07-241-20/+42
| | | | Signed-off-by: Corinna Vinschen <corinna-cygwin@cygwin.com>
* fix compile errors for efgcvt.cuchan-nos2019-07-241-15/+18
|
* Port ndbmVaibhav Gupta2019-07-243-0/+311
|
* Stack Pointer and Stack Limit initialization refactored.Alexander Fedotov2019-07-234-178/+454
| | | | | | | | | SP initialization changes: 1. set default value in semihosting case as well 2. moved existing SP & SL init code for processor modes in separate routine and made it as "hook" 3. init SP for processor modes in Thumb mode as well Add new macro FN_RETURN, FN_EH_START and FN_EH_END.
* Cygwin: fix one more check for positive virtual_ftype_t valuesKen Brown2019-07-222-6/+1
| | | | Also drop more comments referring to numerical virtual_ftype_t values.
* Cygwin: change virtual_ftype_t to not rely on negative valuesCorinna Vinschen2019-07-229-36/+31
| | | | | | | | | | | | | So far negative values were denoting files, positive values denoting directories. We should prefer a less error prone method. Redefine virtual_ftype_t to contain only positive values and replace checks for negativ or positive values with inline functions virt_ftype_isfile() and virt_ftype_isdir(). Drop outdcated comments referring to numerical virtual_ftype_t values. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: fix /proc/PID/fd return value in error caseCorinna Vinschen2019-07-221-2/+2
| | | | | | | | | | | | commit 2607639992f6 "Improve error handling in /proc/[pid]/ virtual files." changed the return value of the /proc/PID formatting functions to return -1 instead of 0 in the error case to allow a filesize of 0. The patch neglected to change this behaviour for /proc/PID/fd content. This patch fixes that. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: add release notes for 3.0.8Ken Brown2019-07-221-0/+16
|
* Cygwin: socket files are not lnk special filesKen Brown2019-07-222-3/+5
| | | | | | | | | | | | | Change path_conv::is_lnk_special() so that it returns false on socket files. is_lnk_special() is called by rename2() in order to deal with special files (FIFOs and symlinks, for example) whose Win32 names usually have a ".lnk" suffix. Socket files do not fall into this category, and this change prevents ".lnk" from being appended erroneously when such files are renamed. Remove a now redundant !pc.issocket() from fhandler_disk_file::link().
* Cygwin: remove path_conv::is_fs_device()Ken Brown2019-07-221-2/+2
| | | | It is used only once.
* Cygwin: remove path_conv::is_auto_device()Ken Brown2019-07-222-2/+1
| | | | | | | It is used only once, and the name is supposed to suggest "device that is not based on the filesystem". This intended meaning is clearer if we just replace is_auto_device() by its definition at the place where it's used.
* Cygwin: fhandler_*: remove isdevice() and is_auto_device()Ken Brown2019-07-222-4/+1
| | | | | | isdevice() is used only in the definition of is_auto_device(). And the latter is used only once, in a context where isdevice() always returns true.
* Cygwin: unbreak the build with GCC 7Ken Brown2019-07-192-4/+15
| | | | | | The recent port to GCC 8 used the 'nonstring' attribute, which is unknown to GCC 7. Define and use an 'ATTRIBUTE_NONSTRING' macro instead.
* Cygwin: fix GCC 8.3 'local external declaration' errorsKen Brown2019-07-171-3/+2
| | | | Move external declarations out of function definition.
* Cygwin: fix GCC 8.3 'asm volatile' errorsKen Brown2019-07-171-2/+2
| | | | | | Remove the volatile qualifier, which is no longer allowed outside of the function body. See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89585 for discussion.
* Cygwin: suppress GCC 8.3 errors with -Warray-boundsKen Brown2019-07-161-0/+2
|
* Cygwin: avoid GCC 8.3 errors with -Werror=stringop-truncationKen Brown2019-07-163-5/+5
|
* Cygwin: avoid GCC 8.3 errors with -Werror=class-memaccessKen Brown2019-07-164-6/+6
|
* Cygwin: sigpending: don't report pending signals for other threadsCorinna Vinschen2019-07-122-2/+10
| | | | | | | | The sigpending mechanism failed to check if the pending signal was a process-wide signal, or a signal for the curent thread. Fix that by adding a matching conditional to wait_sig's __SIGPENDING code. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: return full sigset_t from sig_sendCorinna Vinschen2019-07-125-12/+12
| | | | | | | | | | | | | | | So far sig_send's return type is int. The problem with this is that sig_send returns a sigset_t on __SIGPENDING, and sigset_t is defined as long type. So the function only returns the lower 32 bit of sigset_t, which is fine on 32 bit, but casts away the pending RT signals on 64 bit. Fix this by changing the return type of sig_send to sigset_t, so as not to narrow down the sigset when returning from handling __SIGPENDING. Make sure to cast correctly in all invocations of sig_send. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Set errno in expm1{,f} / log1p{,f}Jeff Johnston2019-07-094-6/+14
| | | | | | | | | | | | | 2019-07-09 Joern Rennecke <joern.rennecke@riscy-ip.com> * libm/common/s_expm1.c ("math_config.h"): Include. (expm1): Use __math_oflow to set errno. * libm/common/s_log1p.c ("math_config.h"): Include. (log1p): Use __math_divzero and __math_invalid to set errno. * libm/common/sf_expm1.c ("math_config.h"): Include. (expm1f): Use __math_oflow to set errno. * libm/common/sf_log1p.c ("math_config.h"): Include. (log1pf): Use __math_divzero and __math_invalid to set errno.
* 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).