4
0
mirror of git://sourceware.org/git/newlib-cygwin.git synced 2025-02-28 20:15:24 +08:00

21916 Commits

Author SHA1 Message Date
Corinna Vinschen
5f9cc2a6ab Cygwin: winsup/doc/posix.xml: add posix_close doc
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2025-02-24 12:27:55 +01:00
Corinna Vinschen
004e95cf35 Cygwin: winsup/doc/posix.xml: add missing POSIX.1e functions to docs
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2025-02-24 11:49:00 +01:00
Brian Inglis
117feceea9 Cygwin: winsup/doc/posix.xml: SUS V5 POSIX 2024 combine multiple notes
Combine multiple notes after an entry separated by hyphen ") (" -> " - "

Signed-off-by: Brian Inglis <Brian.Inglis@SystematicSW.ab.ca>
2025-02-24 11:42:11 +01:00
Brian Inglis
8fd4966195 Cygwin: winsup/doc/posix.xml: move wrongly sorted entries
Fix some entries not in sorting order.

Signed-off-by: Brian Inglis <Brian.Inglis@SystematicSW.ab.ca>
2025-02-24 11:41:17 +01:00
Brian Inglis
32b39f2b02 Cygwin: winsup/doc/posix.xml: SUS V5 POSIX 2024 move or remove dropped entries
Move entries no longer in POSIX from the SUS/POSIX section to
Deprecated Interfaces section and mark with (SUSv4).
Remove entries no longer in POSIX from the NOT Implemented section.

Signed-off-by: Brian Inglis <Brian.Inglis@SystematicSW.ab.ca>
2025-02-24 11:39:40 +01:00
Brian Inglis
1e58e7d5d5 Cygwin: winsup/doc/posix.xml: SUS V5 POSIX 2024 not implemented new additions
Add unavailable POSIX additions to Not Implemented section.

Signed-off-by: Brian Inglis <Brian.Inglis@SystematicSW.ab.ca>
2025-02-24 11:34:37 +01:00
Brian Inglis
3dc2707bf9 Cygwin: winsup/doc/posix.xml: SUS V5 POSIX 2024 new additions available
Add POSIX new additions available as header macros and inline functions,
or exported by Cygwin distro DLL or library packages

Signed-off-by: Brian Inglis <Brian.Inglis@SystematicSW.ab.ca>
2025-02-24 11:28:49 +01:00
Brian Inglis
b1eb09167a Cygwin: winsup/doc/posix.xml: SUS V5 POSIX 2024 TOG Issue 8 ISO 9945 move new POSIX
Update anchor id and description to current version, year, issue, etc.
Move new POSIX entries in other sections to the SUS/POSIX section.

Signed-off-by: Brian Inglis <Brian.Inglis@SystematicSW.ab.ca>
2025-02-24 10:12:08 +01:00
Corinna Vinschen
8cebbb2b42 Cygwin: fhandler_netdrive::exists: handle WebDAV URLs
WebDAV URLs may contain an at-sign followed by a port number or SSL.
This will throw GetAddrInfoW, so remove the at-sign prior to calling
GetAddrInfoW.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2025-02-21 21:56:03 +01:00
Christian Franke
5e16fd9887 Cygwin: sched_setscheduler: Fix crash if pid of other process is used
Add missing PID_MAP_RW to allow changes of _pinfo::sched_policy.

Fixes: 48b189245a13 ("Cygwin: sched_setscheduler: accept SCHED_OTHER, SCHED_FIFO and SCHED_RR")
Signed-off-by: Christian Franke <christian.franke@t-online.de>
2025-02-21 21:25:17 +01:00
Dimitar Dimitrov
fee0d9bc19
pru: libgloss: Remove duplicate function declaration
Commit 8a8fb570d7c5310a03a34b3dd6f9f8bb35ee9f40 introduced a declaration
for "print", which conflicts with the incompatible declaration in
pru/putnumc.c.

Fix by removing the duplicate in pru/putnum.c, and rely on the
declaration in "glue.h".

Signed-off-by: Dimitar Dimitrov <dimitar@dinux.eu>
2025-02-21 20:55:00 +02:00
Volodymyr Turanskyy
8c0250e429 Add check for clang to avoid unnecessary FPU directives
This improves compatibility with clang that does not support vfpxd and does not need these extra directives.

Change-Id: Id2027e622aef8457ac9c7e1d6715a9240ce8e3f0
2025-02-21 15:32:15 +00:00
Volodymyr Turanskyy
af2cd59ff8 Use .p2align 2 instead of .align 0
This is to improve compatibility with LLVM clang: .align 0 is a special case for GCC that is not handled by clang.

Change-Id: I855939a32294c74813ecce7275a362265dbc3b1a
2025-02-21 15:17:22 +00:00
Volodymyr Turanskyy
214d0b65dd libgloss: arm: Clean up assembly syntax for clang compatibility
* Use mrc p15 co-processor instruction syntax.
* Align register_names so that we can use ADR rather than ADRL.

Change-Id: I005cd5a1fc55ec8eba90929c6c70d6a202b0746d
2025-02-21 15:04:24 +00:00
Corinna Vinschen
8cc55d819b Cygwin: fhandler_netdrive::exists: fix new debug statement
The debug statement was wrong twice: Not only was it in the wrong
spot, it was also supposed to print the share name and missed to
add said argument.

Fixes: df307349a09e ("Cygwin: fhandler_netdrive::exists: add debug statement")
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2025-02-21 10:51:51 +01:00
Corinna Vinschen
df307349a0 Cygwin: fhandler_netdrive::exists: add debug statement
Add a debug_printf printing the return code from GetAddrInfoW.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2025-02-20 20:28:01 +01:00
Roger Sayle
8a8fb570d7 Fix mips libgloss support
* glue.h (print): Provide prototype.
        * kill.c: Prototype _exit with noreturn attribute.
        * mips/cfe_mem.c (memtop): Change to a pointer type.
        (__libcfe_meminit): Add casts to avoid compilation
        warnings/errors.
        * mips/cma101.c: Prototype __cpu_timer_poll and __cpu_flush.
        (convertbcd): Update K&R-style function declaration.
        (time): Likewise.
        * mips/nullmon.c (get_mem_info): Likewise.
        * mips/syscalls.c: Declare struct s_mem and prototype get_mem_info.
        (sbrk): Update K&R-style function declaration.  Add casts to avoid
        compilation warnings/errors.
        * mips/test.c: Prototype outbyte and print. Fix return type of main.
        * print.c (print): Make ptr argument const char*.
        * putnum.c: Remove print prototype, which is now in glue.h.
        * write.c: Remove outbyte prototype, which is now in glue.h.

    Co-authored-by: Mike Frysinger  <vapier@gentoo.org>
2025-02-19 15:42:23 -05:00
Jeremy Drake via Cygwin-patches
78fb13d21f Cygwin: skip floppy drives in cygdrive_getmntent.
This was previously done, but was lost when the function was updated to
list all Windows mount points, not just drive letters.

Fixes: 04a5b072940cc ("Cygwin: expose all windows volume mount points.")
Signed-off-by: Jeremy Drake <cygwin@jdrake.com>
2025-02-19 20:11:40 +01:00
Jeremy Drake via Cygwin-patches
e49de2adea Cygwin: include network mounts in cygdrive_getmntent.
After migrating from GetLogicalDrives to Find(First|Next)VolumeW, mapped
network drives no longer showed up in getmntent output.  To fix that,
also iterate GetLogicalDriveStringsW when builing dos_drive_mappings,
and merge with volume mounts (skipping any volume mounts that are just
mounted on the root of a drive, and replacing the dos mounts in the
mapping for a volume which is mounted on both a drive root and a
directory).

Fixes: 04a5b072940cc ("Cygwin: expose all windows volume mount points.")
Addresses: https://cygwin.com/pipermail/cygwin/2025-February/257384.html
Signed-off-by: Jeremy Drake <cygwin@jdrake.com>
2025-02-19 09:53:14 +01:00
Corinna Vinschen
5790c180d1 Cygwin: pathnames.xml: sparse mount option is always set on SSDs
Reported by: Christian Franke <Christian.Franke@t-online.de>
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2025-02-17 11:16:42 +01:00
Corinna Vinschen
ed18acfe8c strcasecmp family: cast character to unsigned when calling tolower
The strcasecmp family of functions (strcasecmp, strncasecmp,
strcasecmp_l, strncasecmp_l) call tolower on the incoming
character before comparison.  tolower takes an int as parameter.
All four strcasecmp functions neglect to cast the character to
unsigned before using it as parameter to tolower.  This tolower
is called with negative values if the incoming character is not
in the ASCII range.  This breaks case-insensitive comparison in
other singlebyte codesets like ISO-8859-1 with native characters.

Adding casts to unsigned char when calling tolower fixes it.

Reported-by: Bruno Haible <bruno@clisp.org>
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2025-02-17 10:52:28 +01:00
Christian Franke
4dd859d01c unistd.h: enable SEEK_DATA and SEEK_HOLE also for POSIX-1.2024
https://pubs.opengroup.org/onlinepubs/9799919799/functions/lseek.html

Signed-off-by: Christian Franke <christian.franke@t-online.de>
2025-02-14 15:57:22 +01:00
Corinna Vinschen
fac7441835 Cygwin: lseek: fix an off-by-one condition in SEEK_DATA/SEEK_HOLE
The conditional checking if lseek should return ENXIO checks the
offset being bigger than the current filesize, but accidentally not
for being equal to the current filesize.

This can lead to an endless loop in newer versions of cp(1).

Fixes: edfa581d3c5a7 ("Cygwin: lseek: implement SEEK_DATA and SEEK_HOLE for files")
Reported-by: Christian Franke <Christian.Franke@t-online.de>
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2025-02-14 15:10:01 +01:00
Corinna Vinschen
6363caef2d Cygwin: pathnames.xml: explain dir mounts since 3.6.0
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2025-02-14 12:24:03 +01:00
Corinna Vinschen
701cec0aa1 Cygwin: pathnames.xml: improve chapters mount-table and cygdrive
Fix case in example output of mount and a bunch of clumsy expressions
and descriptions in the cygdrive section.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2025-02-14 12:23:16 +01:00
Corinna Vinschen
9bcb273f41 Cygwin: new-features.xml: transfer 3.6.0 release message to docs
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2025-02-14 11:57:52 +01:00
Corinna Vinschen
b50c195218 Cygwin: new-features.xml: drop two dashes remaining from copy/paste
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2025-02-14 11:57:52 +01:00
Jeremy Drake via Cygwin-patches
93f390c798 Cygwin: 3.6.0: add release entries for my patches.
These are:
  04a5b07294 Cygwin: expose all windows volume mount points.
  0d113da235 Cygwin: /proc/<PID>/mount*: escape strings.
  7923059bff Cygwin: uname: add host machine tag to sysname.
  b091b47b9e cygthread: suspend thread before terminating.

Signed-off-by: Jeremy Drake <cygwin@jdrake.com>
2025-02-14 10:54:30 +01:00
Jeremy Drake via Cygwin-patches
d4497366b4 Cygwin: always output cygdrive mntents.
Previously, if there was an explicit mount entry for a drive letter
(say, C:), the output of the corresponding cygdrive mntent (like
/cygdrive/c) would be suppressed.  Once Windows directory mounts were
added to cygdrive mounts, the de-duplication code got more complicated.
Instead, always output the cygdrive mounts, under the cygdrive prefix.

Addresses: https://cygwin.com/pipermail/cygwin-patches/2025q1/013367.html
Signed-off-by: Jeremy Drake <cygwin@jdrake.com>
2025-02-13 15:12:09 +01:00
Jeremy Drake via Cygwin-patches
04a5b07294 Cygwin: expose all windows volume mount points.
They are exposed via the getmntent API and proc filesystem entries
dealing with mounts.  This allows things like `df` to show volumes
that are only mounted on directories, not on drive letters.

Addresses: https://cygwin.com/pipermail/cygwin/2025-February/257251.html
Signed-off-by: Jeremy Drake <cygwin@jdrake.com>
2025-02-13 15:12:09 +01:00
Jeremy Drake via Cygwin-patches
dcb963b672 Cygwin: store list of mounts for volumes in dos_drive_mappings.
The existing code only stored the first mount for each volume, but now
we store the complete list, and split it into a linked list.  This will
be used in a subsequent commit to populate cygdrive mount entries.

Signed-off-by: Jeremy Drake <cygwin@jdrake.com>
2025-02-13 15:12:09 +01:00
Alexey Lapshin
59891375d7 Protect strcat from accessing an unaligend long pointer
- related to Bug libc/32679
2025-02-12 10:25:24 +01:00
Jeff Johnston
a473f960e5 Protect strncat from accessing an unaligend long pointer
- fixes Bug libc/32679
2025-02-11 14:28:33 -05:00
Corinna Vinschen
68c13dc92f newlib: Regenerate autotools files
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2025-02-10 15:40:12 +01:00
Alexey Lapshin
dcf5d237fd newlib: introduce --enable-newlib-hw-misaligned-access option
Some hardware may perform better when copying unaligned
word-sized memory compared to byte-by-byte copying.

In case not defined explicitly by --enable-newlib-hw-misaligned-access
config option or variable $default_newlib_hw_misaligned_access in
configure.host file the compiler check will be performed to detect if
__riscv_misaligned_fast or __riscv_misaligned_slow is defined.

This commit introduces autodetection for RISC-V. Additionally, checking
for __ARM_FEATURE_UNALIGNED could be checked for ARM architecture.
However, this was not implemented in the commit, as changes in
newlib/libc/machine/[arm|aarch64] need to be performed.
2025-02-10 15:35:20 +01:00
Alexey Lapshin
9a706d0479 newlib: str[n]cat: optimize skipping of the destination string
Prepare pointer to be aligned and than use word-size iterator on aligned
memory.
2025-02-10 15:33:35 +01:00
Alexey Lapshin
2a79b76c07 newlib: memmove: improve performance for overlapping buffers
This change provides word-sized copy for overlapping buffers, that could
increase performance significantly. Performance measurement for RISCV:

    uint8_t buf[1024];
    memmove (buf + 4, buf, sizeof(buf) - 4);

CPU cycles: 12255 -> 2076
2025-02-10 15:31:10 +01:00
Alexey Lapshin
ab827c1a6c newlib: mem[p]cpy/memmove improve performance for optimized versions
This change improves performance on memory blocks with sizes in range
[4..15]. Performance measurements made for RISCV machine (memset):

size  4, CPU cycles change: 50 -> 37
size  5, CPU cycles change: 57 -> 40
size  6, CPU cycles change: 64 -> 47
size  7, CPU cycles change: 71 -> 54
size  8, CPU cycles change: 78 -> 44
size  9, CPU cycles change: 85 -> 47
size 10, CPU cycles change: 92 -> 54
size 11, CPU cycles change: 99 -> 61
size 12, CPU cycles change: 106 -> 51
size 13, CPU cycles change: 113 -> 54
size 14, CPU cycles change: 120 -> 61
size 15, CPU cycles change: 127 -> 68
2025-02-10 15:30:46 +01:00
Alexey Lapshin
bc2723e989 newlib: memccpy: unify mask filling with other memory functions
This change made just to have memccpy like others mem-functions
2025-02-10 15:26:51 +01:00
Alexey Lapshin
c9b74e3289 newlib: string: refactor str/mem-family functions
Move common macros to local.h header
2025-02-10 15:20:47 +01:00
Jeremy Drake via Cygwin-patches
0d113da235 Cygwin: /proc/<PID>/mount*: escape strings.
In order for these formats to be machine-parseable, characters used as
delimiters must be escaped.  Linux escapes space, tab, newline,
backslash, and hash (because code that parses mounts/mtab and fstab
would handle comments) using octal escapes.  Replicate that behavior
here.

Addresses: https://cygwin.com/pipermail/cygwin/2024-June/256082.html
Signed-off-by: Jeremy Drake <cygwin@jdrake.com>
2025-02-05 11:09:08 +01:00
Jeremy Drake via Cygwin-patches
5a706ff0fc Cygwin: factor out code to resolve a symlink target.
This code was duplicated between the lnk symlink type and the native
symlink type.

Signed-off-by: Jeremy Drake <cygwin@jdrake.com>
2025-02-03 23:02:21 +01:00
Yuriy Kolerov
0387c7e1cc libgloss: arc: Add clock() system call to libnsim
clock() system call is used in some GDB tests thus it is
necessary to implement it for testing purposes. A value
for clock() is taken from a default timer (timer 0). If it is
not presented than the error value (-1) is returned.

Signed-off-by: Yuriy Kolerov <ykolerov@synopsys.com>
2025-02-03 15:11:40 +01:00
Yuriy Kolerov
6d7ace3681 libgloss: arc: Add _getentropy stub
Stub function for _getentropy is presented in libnosys and it is
not presented in libgloss libraries for ARC. When libstdc++ is
built it detects that _getentropy is presented in the default
libgloss library (libnosys). However, then GCC fails to link
applications with another libgloss libraries like nSIM, HostLink,
boards, etc. because of missing _getentropy stub in corresponding
libraries.

Here is an example:

    $ cat getentropy.cpp
    #include <unistd.h>

    int main () {
        unsigned i;
        ::getentropy(&i, sizeof(i));
        return 0;
    }

    $ arc64-elf-g++ -mcpu=hs6x -specs=nsim.specs getentropy.cpp
    ...
    ... undefined reference to `_getentropy'
    collect2: error: ld returned 1 exit status

Thus, it is necessary to add _getentropy stub to all ARC
libgloss libraries to prevent errors while building even
simple C++ programs.

Signed-off-by: Yuriy Kolerov <ykolerov@synopsys.com>
2025-02-03 15:11:40 +01:00
Terraneo Federico
987d040394 Lift 256 arg limit in execl, execle and execlp
add --enable-newlib-use-malloc-in-execl option

The previous version of these functions allocated a 256 entry array and
copied arguments in that array with no bound checking. That
implementation always occupied 1024 bytes of stack for the array even in
the common case in which the number of passed arguments is far less than
256, risking stack overflows in environments with small stacks, and
caused a stack buffer overflow if called with more than 256 arguments.

The improved implementation counts the actual number of passed arguments
and allocates a suitable buffer. The default implementation uses alloca
to allocate the buffer to satisfy the POSIX.1-2008 requirement that
execl and execle should be callable from signal handlers, but it is
possible to override this behavior and use malloc for targets where the
risk of stack overflow due to unbounded stack allocations is a more
pressing requirement than the corner case of allowing execl calls from
signal handlers.
2025-02-03 12:43:51 +01:00
Terraneo Federico
1efcb2a300 newlib: update Makefile.in
The libc/sys/xtensa directory was removed in commit 48f1655c955c154b3165692e02aa66699212453c, but the change to Makefile.in wasn't committed.
2025-02-03 11:37:07 +01:00
Corinna Vinschen
d52d983e5b Cygwin: implement posix_close
per
https://pubs.opengroup.org/onlinepubs/9799919799/functions/posix_close.html

Add a flag value to fhandler_*::close() and close_with_arch() methods,
taking -1 as default argument, used to indicate default close(2)
behaviour.

The only fhandlers capable of returning EINTR are the INET based
socket fhandlers.  Handle -1 and POSIX_CLOSE_RESTART equivalent,
making close() and posix_close(POSIX_CLOSE_RESTART) behaving
identically.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2025-01-28 16:50:12 +01:00
Corinna Vinschen
c7eb1a1f52 Cygwin: fhandler: move "isclosed" status flag into fhandler_pipe_fifo
The isclosed flag is only used in pipe and FIFO code, so move the
flag down into the fhandler_pipe_fifo class.

Note that such a flag is not sufficient to avoid evil, like closing
an already closing fhandler from another thread.  If we ever need this,
it has to be implemented threadsafe.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2025-01-28 16:11:03 +01:00
Corinna Vinschen
6baa8484db unistd.h: declare posix_close
Declare posix_close, a new function defined by POSIX-1.2024, per
https://pubs.opengroup.org/onlinepubs/9799919799/functions/posix_close.html

Define POSIX_CLOSE_RESTART.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2025-01-28 12:43:03 +01:00
Corinna Vinschen
fe6ddc15a3 Cygwin: message queues: avoid deadlocks in multi-threaded processes
Deadlocks have been observed if the message queue functions are called
from different threads in the same process.

Remove incorrectly locking the descriptor table while accessing the
message queue fhandler, potentially calling blocking functions.

Fixes: 46f3b0ce85a9 ("Cygwin: POSIX msg queues: move all mq_* functionality into fhandler_mqueue")
Reported-by: Christian Franke <Christian.Franke@t-online.de>
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2025-01-27 22:01:46 +01:00