Commit Graph

104 Commits

Author SHA1 Message Date
Brad King 890beb19e6 libuv: backport IDNA input/output hardening fixes
Backport libuv commit `0f2d7e78` (fix: always zero-terminate idna
output, 2024-01-18, `v1.48.0~4`) and libuv commit `3530bcc3` (fix:
reject zero-length idna inputs, 2024-01-18, `v1.48.0~3`).

Fixes: #26112
2024-07-15 15:55:23 -04:00
Brad King 422c1de564 libuv: macos: restore use of kqueue instead of posix poll
Revert commit f54ec4e7f9 (libuv: macos: use posix poll instead of
kqueue, 2024-03-31, v3.29.1~7^2) and its parent.  It is not necessary
after the kqueue-based implementation was fixed to reap child processes
more reliably.

Issue: #25839
2024-06-21 16:45:55 -04:00
Brad King 7e3519e705 libuv: macos: reap child processes more reliably when using kqueue
Backport libuv commit `42cc412c4a` (darwin,process: feed kevent the
signal to reap children, 2023-02-01, `v1.45.0~55`) from libuv PR 3893.

Fixes: #25839
2024-06-21 15:01:15 -04:00
Brad King d98df689ab Merge branch 'libuv-win-process-no-extra-stdio' 2024-05-22 14:58:43 -04:00
Brad King a590382850 libuv: win/spawn: disable extra-file-descriptor support not needed by CMake
Upstream libuv supports passing file descriptors >= 3 to child processes
via `STARTUPINFOW` members reserved by the MSVC C run-time.  However,
some programs use `GetStartupInfoW` to initialize a `STARTUPINFOW`
structure to pass to `CreateProcessW` without clearing the reserved
members.  If we launch such programs with non-zero values in the
reserved members, the MSVC C run-time in *their* children may not
correctly associate the stdin/stdout/stderr streams' file descriptors
with the corresponding `HANDLE`s.

Patch our copy of libuv to avoid using the reserved members.  This
restores `execute_process` support for the above-described programs as
we had prior to commit 5420639a8d (cmExecuteProcessCommand: Replace
cmsysProcess with cmUVProcessChain, 2023-06-01, v3.28.0-rc1~138^2~8).
It also enables support for such programs when launched by `ctest`.

Fixes: #25996
Fixes: #25889
2024-05-22 14:58:06 -04:00
Brad King f54ec4e7f9 libuv: macos: use posix poll instead of kqueue
Since commit 5420639a8d (cmExecuteProcessCommand: Replace cmsysProcess
with cmUVProcessChain, 2023-06-01, v3.28.0-rc1~138^2~8) we've observed
spurious process hangs in `uv__io_poll` waiting for `kqueue` to deliver
events on macOS.

Issue: #25839
2024-04-01 09:56:50 -04:00
Brad King af330faaf1 libuv: darwin: group kqueue-specific definitions together 2024-04-01 09:55:49 -04:00
Brad King 0db6402687 libuv: process: de-duplicate conditions for using kqueue
Its platform-specific headers provide a dedicated indicator.

Backport libuv PR 4378.
2024-04-01 09:55:03 -04:00
Brad King e3e2ef1964 libuv: Avoid posix_spawn on macOS < 10.8
Since libuv commit `83efa3dd71` (Reland "macos: use posix_spawn instead
of fork", 2022-03-02, v1.44.0~10), `uv_spawn` on macOS < 10.8
has been observed to cause kernel panics and/or resource exhaustion.
This became particularly noticeable in CMake since commit 5420639a8d
(cmExecuteProcessCommand: Replace cmsysProcess with cmUVProcessChain,
2023-06-01, v3.28.0-rc1~138^2~8).  Prefer `fork` over `posix_spawn` in
libuv when targeting macOS < 10.8.

Fixes: #25414
Fixes: #25818
Inspired-by: Ken Cunningham <kencu@macports.org>
2024-03-25 12:11:57 -04:00
Brad King 077a1d5769 libuv: win/spawn: optionally run executable paths with no file extension
Backport libuv commit `3f7191e5` (win/spawn: optionally run executable
paths with no file extension, 2024-02-05, v1.48.0~8) to add the
`UV_PROCESS_WINDOWS_FILE_PATH_EXACT_NAME` option we now use.

Issue: #25450
2024-02-08 17:00:47 -05:00
Brad King f02ac51150 libuv: Revert "win/spawn: run executables with no file extension"
This reverts commit fc6231bee5 (libuv: win/spawn: run executables with
no file extension, 2023-12-04, v3.28.0~9^2) to make room for the
corresponding fix from upstream libuv 1.48.

Record this as a merge from the last-imported upstream libuv snapshot
branch so that future `git blame` points to the upstream for the
original code instead of this commit.

Issue: #25450
2024-02-08 16:47:06 -05:00
Kyle Edwards fc6231bee5 libuv: win/spawn: run executables with no file extension
Backport this commit from libuv PR 4241 to restore `execute_process()`
support for running executables on Windows with no file extension.

Fixes: #25450
2023-12-04 14:50:06 -05:00
Brad King b37d9378de libuv: Revert "win/spawn: run executables with no file extension"
This reverts commit da9df7425a (libuv: win/spawn: run executables with
no file extension, 2023-11-29, v3.28.0-rc6~1^2~1).  It incorrectly
searched the `PATH` for extension-less command names.  Another fix will
be needed for the regression motivating it.

Record this as a merge from the last-imported upstream libuv snapshot
branch so that future `git blame` points to the upstream for the
original code instead of this commit.

Fixes: #25473
Issue: #25450
2023-12-04 14:48:46 -05:00
Kyle Edwards ab561b86fb libuv: win: honor NoDefaultCurrentDirectoryInExePath env var
Backport commit 5e302730cd (win: honor NoDefaultCurrentDirectoryInExePath
env var, 2023-12-01) from libuv PR 4238.
2023-12-01 09:31:13 -05:00
Kyle Edwards da9df7425a libuv: win/spawn: run executables with no file extension
Backport this commit from libuv PR 4241 to restore `execute_process()`
support for running executables on Windows with no file extension.

Fixes: #25450
2023-11-30 09:59:36 -05:00
Brad King fe2ecf920f libuv: win,process: avoid kernel bug with starting Windows Store apps
Backport upstream libuv commit `93ca3f15` (win,process: avoid kernel bug
with starting Windows Store apps, 2023-09-27) from libuv PR 4152.

Fixes: #23029
Patch-by: Jameson Nash <vtjnash@gmail.com>
2023-09-28 09:34:11 -04:00
Kyle Edwards d562e503aa libuv: Use SIGCHLD in bootstrap mode 2023-08-21 14:16:28 -04:00
Brad King eee1dc10be libuv: Compile as C11 on all Solaris versions
Using `_XOPEN_SOURCE=600` on Solaris 5.10, as we do on Solaris 5.11+
already, allows the system headers to be included in C99 and C11 modes.
2023-08-18 16:13:21 -04:00
Brad King d6b4f6dd97 libuv: Remove unused compatibility code for CMake < 3.9
We now require CMake 3.13 or higher anyway.
2023-08-18 16:09:43 -04:00
Kyle Edwards 5fb17a1410 libuv: win,spawn: allow %PATH% to be unset
Backport libuv commit `c97017dd` (win,spawn: allow `%PATH%` to be unset,
2023-08-14).

See https://github.com/libuv/libuv/pull/4116.
2023-08-18 15:53:32 -04:00
Clemens Wasser e0eb97e923 libuv: Precompile common expensive headers 2023-06-22 18:11:45 +02:00
Brad King b18eca763c libuv: Suppress clang-analyzer warnings 2023-05-22 16:51:16 -04:00
Brad King 23de1675fd libuv: Update CMake-internal buildsystem for 1.44.2 2022-09-27 09:50:38 -04:00
Brad King ff82df301c Merge branch 'upstream-libuv' into update-libuv
* upstream-libuv:
  libuv 2022-07-12 (0c1fa696)
2022-09-27 09:50:16 -04:00
Aaron Liu 24da80b70a Utilities: Suppress warnings in third-party code with IBMClang 2022-01-27 09:38:01 -05:00
Brad King fc4a11a036 libuv: add cast to pass sockaddr_storage as sockaddr on windows
Tell the compiler the structs are layout-compatible.
2022-01-13 16:41:35 -05:00
Brad King ea70fb3905 Merge branch 'upstream-libuv' into update-libuv
# By libuv upstream
* upstream-libuv:
  libuv 2022-01-13 (2fbfa035)
2022-01-13 15:46:20 -05:00
Brad King 51d26933fe libuv: Fix clang-analyzer deadcode.DeadStores warning on Linux 2021-11-17 06:41:49 -05:00
Brad King f29bb586f0 libuv: Convert C++-style comment to C-style 2021-11-17 06:41:49 -05:00
Brad King 8e7bb62bd5 libuv: Update CMake-internal buildsystem 2021-11-17 06:41:49 -05:00
Brad King 0decc36fb1 libuv: Update uv__fs_copy_file_range signature in cmake-bootstrap.c 2021-11-17 06:41:48 -05:00
Brad King 74a05716a4 Merge branch 'upstream-libuv' into update-libuv
* upstream-libuv:
  libuv 2021-11-09 (0f696da5)
2021-11-17 06:40:02 -05:00
Brad King 65fb29fdfb libuv: Build unix tcp support during CMake bootstrap
Using the real `tcp.c` simplifies `cmake-bootstrap.c`, and its
implementation doesn't seem to require any of the platform-specific
definitions.  Also, later it will be needed for `uv_socketpair`.
2021-11-17 06:36:30 -05:00
makise-homura e5d9fce03f LCC: Add dedicated support for MCST LCC compiler
Divert LCC compiler as a new one, instead of treating it as GNU.

Since old times, Elbrus C/C++/Fortran Compiler (LCC) by MCST has been
passing checks for GNU compilers, so it has been identified as GNU.
Now, with intent of seriously upstreaming its support, it has been
added as a separate LCC compiler, and its version displays not a
supported GCC version, but LCC version itself (e.g. LCC 1.25.19 instead
of GNU 7.3.0).

This commit adds its support for detection, and also converts basically
every check like 'is this compiler GNU?' to 'is this compiler GNU or
LCC?'. The only places where this check is untouched, is where it
regards other platforms where LCC is unavailable (primarily non-Linux),
and where it REALLY differs from GNU compiler.

Note: this transition may break software that are already ported to
Elbrus, but hardly relies that LCC will be detected as GNU; still such
software is not known.
2021-10-15 05:05:19 +03:00
Brad King 096450f808 libuv: Include BSD sys/cpuset.h only on platforms where we use it
Since commit 43d6e5a71f (libuv: misc: add function to get CPU affinity
mask size, 2017-09-06, v3.12.0-rc1~412^2~3) we include `<sys/cpuset.h>`
on several BSD platforms but only use it on FreeBSD.
2021-09-29 12:31:49 -04:00
Brad King 7d1f353a6f Merge topic 'libuv-mingw-arm'
1aba3a8367 libuv: Fix building with mingw toolchains for ARM/AArch64

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6354
2021-07-19 12:48:40 -04:00
Martin Storsjö 1aba3a8367 libuv: Fix building with mingw toolchains for ARM/AArch64
This is a backport of f9ad802fa5dd5afe6730f8e00cfdbf98f1d7a969
from the v1.x branch from upstream libuv:

    mingw: fix building for ARM/AArch64

    Don't use x86 inline assembly in these cases, but fall back to
    __sync_fetch_and_or, similar to _InterlockedOr8 in the MSVC case.

    This corresponds to what is done in src/unix/atomic-ops.h, where
    ARM/AArch64 cases end up implementing cmpxchgi with
    __sync_val_compare_and_swap.

    PR-URL: https://github.com/libuv/libuv/pull/3236
    Reviewed-By: Jameson Nash <vtjnash@gmail.com>
2021-07-15 10:59:07 -04:00
earnal 113cc4c684 libuv: Allow windows UNC path with forward slashes
Fix libuv issue 3159 in CMake while integration in upstream libuv is
pending.

Fixes: #22141
2021-07-12 11:24:29 -04:00
Orgad Shaneh ddcd1469e8 MSYS: Add support for running under MSYS runtime environment
Detect MSYS as CYGWIN, with the required adaptations.
2021-04-26 14:27:34 -04:00
Brad King 408e6d6185 Utilities: Suppress warnings in third-party code with NVHPC 2021-04-20 11:44:25 -04:00
Brad King 87909f0600 Utilities: Suppress warnings in third-party code when using IntelLLVM 2021-01-28 09:07:00 -05:00
Elad Lahav f9e950d4c5 libuv: Add support for building for QNX within CMake 2020-09-25 11:53:44 -04:00
Brad King 7a0506bafe libuv: Suppress conversion warning on Windows
Add a cast to avoid the conversion warning with minimal changes to
third-party code.
2020-09-23 12:32:54 -04:00
Brad King 2269ad6a0a libuv: Add fs_copy stub to cmake-bootstrap.c
This is now called by `uv__fs_sendfile` in `src/unix/fs.c` but we do not
need that feature during CMake bootstrap.
2020-09-23 12:28:48 -04:00
Brad King e21325c2c6 Merge branch 'upstream-libuv' into update-libuv
* upstream-libuv:
  libuv 2020-09-22 (ed5b42d5)
2020-09-23 12:13:59 -04:00
Brad King e771330dd4 bootstrap: Fix libuv target platform conditions on macOS
In commit 714ce72882 (bootstrap: Make libuv available during bootstrap,
2017-09-13, v3.10.0-rc1~106^2) we modified libuv to use POSIX interfaces
during bootstrap.  However, some code still expects `TARGET_OS_IPHONE`
to be defined on Apple platforms to either `0` or `1`.  In order to
offer this, include `<TargetConditionals.h>` on Apple platforms even
when bootstrapping.
2020-07-22 14:42:04 -04:00
Brad King 2628eb7460 libuv: Add proctitle and threadpool cleanup stubs to cmake-bootstrap.c
These are now called by `uv_library_shutdown` in `src/uv-common.c` but
on UNIX we do not compile those features during CMake bootstrap.
2020-04-29 08:50:11 -04:00
Brad King efdd451f4b Merge branch 'upstream-libuv' into update-libuv
* upstream-libuv:
  libuv 2020-04-29 (e7ebae26)
2020-04-29 08:21:02 -04:00
Brad King 630e501f8b libuv: Restore compilation on Apple i386 architecture
libuv upstream commit `2475296c` (build: make code compilable for iOS on
Xcode, 2020-01-18, v1.35.0~47) added a `defined(TARGET_OS_IPHONE)`
preprocessor condition, but `TARGET_OS_IPHONE` is always defined on
Apple to either 0 or 1.
2020-04-07 07:49:50 -04:00
Brad King 02a28f1d44 libuv: Restore compilation with XLClang 16.1 on AIX
libuv upstream commit `4a972bf0` (aix: Fix broken cmpxchgi() XL C++
specialization., 2019-09-06, v1.32.0~5) broke compilation with this
compiler.  According to

    https://www.ibm.com/support/knowledgecenter/SSGH3R_16.1.0/com.ibm.xlcpp161.aix.doc/migrate/migrate_to_xlclang.html

XLClang 16.1 for AIX does not support `__sync_val_compare_and_swap`.
The documentation suggests using C++11 atomic operations instead, but
this is C code.  For now fall back to the non-atomic equivalent used
before so we can at least compile.  Add a FIXME comment for this.
2020-04-07 07:47:47 -04:00